Skip to content

ThoughtWorks · 初见

Posted on:December 4, 2017 at 12:00 AM

Table of Contents

Open Table of Contents

2016,constructor()

去年(2016年)的一个晚上,我和pd说:“看这家公司,有点神奇的,招聘要求和别人的都不一样。” 我说的这家公司,招聘要求是这样的:

技能,这些必须有:

  • 你猜也能猜到,手写HTML/CSS和JavaScript能力是必须的;
  • 对语义化HTML/CSS,渐进增强,CSS框模型的深入理解;
  • 解决跨浏览器兼容性问题的痛苦经验;
  • 你得结对,你得是个可爱的,能够和人一起工作的; 这些可以有:
  • 你对交互设计的理解(哪怕是兴趣)都会帮助你快速成长;
  • 如果你听说过敏捷开发,敏捷交互设计,体验设计,设计的思考这些概念,你会更快融入我们;
  • 你对以用户为中心交互设计领域的激情会帮助你更好地融入我们的社区,和分布在我们全球20多个办公室,70多种国籍的,> > 与你一样有才能和激情的人交流和成长;
  • 如果你喜欢写博客,分享和记录你的思考或实践,你会被大家喜欢;
  • 你的英文不是阻止你成长的关键,当然如果你能灵活使用英文,这意味着你会更好融入我们全球的社区以及更多在海外工作的机会;
  • 用可视化的方法(比如说使用白板)表达你的想法是个让大家喜欢的捷径;

这里是一个社区,如果你不足够有经验,大家在意的是你好学精神,在这个扁平化的组织,总有人愿意帮助你,你的好学精神会让你得到更多机会;

如果你在移动设备交互设计有经验,大家会把你当成宝贝。

这是 ThoughtWorks 的招聘要求,我印象中那时候招聘要求还写着要会科学上网,不知道是不是我记错了。总之,这个要求似乎不按套路出牌,看起来没有要求,实则无招胜有招,估计要求还挺高。

这是我看过那么多的招聘要求里最有趣的一个,一下我就对这家公司有了兴趣,便去知乎搜了下这家公司,了解到这家公司是一个外包公司,面试很难,入职就配一个Mac(激动脸),推崇敏捷开发(当时还不知道这是什么),还找到了 ThoughtWorks 的技术雷达,大概看了一下,知道了它是一个对新技术的评估和推动使用的平台,但是里面的技术名词大部分都看不懂。综合给我一种感觉就是:牛逼,下次我就想去这家公司。

2017, componentWillMount()

时间过了一年到了今年,我在多重原因下,从原来的公司离职了,步入了找工作的大军。找工作期间,我还记得 ThoughtWorks 这个名字,做完第一版简历以后就急忙地向 TW 投递了简历,其实投完就后悔了,因为后面又改良了好几次简历,却没法把更好的简历发过去了。

过了好些天,TW 都没有给我回应,我心想大概是凉了,便继续安心找其它公司的岗位,但突然有一天,接到了一个叫“思特沃克”的公司打来的电话,说我简历通过了,问我有没有确定工作,要不要正式开始 TW 的面试流程,说需要不少时间和精力。当时听到“思特沃克”我是没反应过来的,因为我只记得英文名 ThoughtWorks,还以为是一个之前投简历的印象不深的公司,但刚开始找工作、还没有工作的我还是很热情地约了接下来的面试流程。挂完电话之后,我突然反应了过来,思特沃克是不是就是 ThoughtWorks,一查,猛然惊醒。(⊙ˍ⊙)

接下来就是认真做 homework 并焦急等待反馈的结果,然后参加结对编程和面试,最终得到了offer。这整个期间,很感谢远辉哥给我的帮助和鼓励,告诉我要好好准备各方面,不要轻视,发挥自己最好的实力。最终得到offer时,我挺开心的,也觉得很有缘分,一年前说要进入的公司,一年后真的成为了它的一员。

2017, componentDidMount()

其实我之前对 TW 的了解基本停留在网络上的搜索上,并没有太多深入的了解,所以入职以后,我对这家公司还是有些陌生的,很多东西不懂,比如什么是敏捷开发,在 TW 怎么干活,每天的工作怎么运作,遇到了问题找谁,都不知道。

幸运的是 TW 有一个针对社招员工的培训叫 NHO(new hire orientation),这对于没有大项目工作经验,靠野路子自学的我来说,简直是大大的福利,我相信这可以很好地帮助我了解和融入到 TW 集体中。所以在 NHO 开始之前,我就很期待这门课到底能给我带来什么。

NHO 的第一天,是小波老师给我们上课。开始前,我们做了一个游戏,大家轮流介绍自己,轮在后面的人不只要介绍自己,还有把自己前面的人都根据ta们的介绍说一遍,我是排在最后一个的,换句话说,我每次都要根据每个人给出的信息把每个人都介绍一遍,压力山大( ̄△ ̄;)还好参与的人不多,这个游戏顺利完成,大家相互间有了初步的认识。

第一天的课程里,小波老师给我们讲了 TW 的发展历程,我记得的有 bus 文化时期,用 bus 办公,直接开到客户的现场去,还有3 pillars,其中的 p3: 推动社会和经济的公正,我了解到了 TW 是怎么做的公益:不把公益做成施舍,而是真正平等的帮助,比如不盈利或者微利地帮助公益组织,为公益组织做一些有用的软件,这种思路让我觉得很不多见。第一天让我感触很深的还有,小波老师说 TW 的核心是人,一个个 TWer组成了 TW,所以人的发展就是 TW 的发展,这里推崇分享,推崇互助。想想的确是这样,每个人成长了公司才能发展。另一个提到的重点就是敏捷开发,老师比较了敏捷开发和传统瀑布式开发的优缺点:面向价值,快速响应变化,缩小的响应周期等,从理论上来说,这的确是一件很美好的事情,但我不不清楚如何去实践,这也正是接下来几天课程的重点。还有一兮老师提到的微服务,这种细分的、可组装的微服务从工程的角度看,的确有很大的优点,低耦合,各自独立开发,组织灵活,可以作为独立的资源提供出去,这些是我能想得到的优点,想象很美好,不过这需要极强的架构能力,学习的路就还很长。其实第一天的感受比提到的要更多,比如要做一个主动承担的人,成为一个T字型发展的人,公司的层级扁平化等等,这些都让我有所感触。

接下来的几天,主要就是围绕敏捷开发做的培训,讲解和模拟敏捷开发的流程,这个是健鑫老师给我们上的课,健鑫老师很尽责,讲的课也很好,真的非常感谢。干巴巴地说好也许不够有说服力,有说服力的方式是:除了因为睡得晚起得早这个自然原因导致的疲惫,其它情况下我的注意力都被健鑫老师的课程吸引住了,很久都没有体会到这种聚精会神地上课的体验了,哈哈。

这周下来,如果脱离标准的敏捷开发流程,按我的理解和实践来说的话,整个敏捷开发的过程是这样的:

  1. 通过用户调研的方式,了解用户的真实目的,得到需求池;
  2. 根据需求池,得到这个系统中所有可能的用户,以及每个用户在这个系统中的目标是什么;
  3. 根据每个用户的目标,写出 user journey,这些 user journey 是一个个的动宾短语,描述了用户在这个系统中发生了哪些行为来达到他的目标,再根据这些 user journey,就可以得到 user story,最后组合成 story map;
  4. 通过之前的准备,制定 Release Plan, Resource Plan, Story list, Tech Architecture,做完这些,Inception 就完成了;
  5. 在IPM(Iteration Plan Meeting)上依照 MVP(Minimum Viable Product) 的原则制定迭代的计划,一个迭代周期为1-4周,一般为2周,BA还有开发人员大家再在一起为每个 story 估点(估算每个 story 的任务量);
  6. 开发人员 kick off 分好的 story,在领 story 的时候找 BA 确认好需求;
  7. 开发期间,每天有一个站会,大家说下各自所做的事以及有哪些想法,或者需要什么帮助;
  8. 当开发人员完成一个 story 的时候,需要做 desk check,找 BA、QA 确认 story 已完成;
  9. 做完 desk check 以后交由 QA 通过测试并最终上线,如果未通过则回到开发阶段;
  10. 最终完成一个迭代周期,得到一个可以工作的软件,并给客户做 show case;
  11. 重复多个迭代周期直到最终完成软件的交付,团队里的每一个成员做一个总的回顾。

在这整个开发流程中,还有一些细节没有写,比如为了让事情做得更好,各阶段都可能发生的团队成员间的 challenge,还有做各种事情的时候,需要注意 time-box ,还有面向价值等细节,就不在此提及了。总得来说,敏捷开发的核心价值(宣言)如下:

  • 个体和交互高于流程和工具
  • 可用的软件高于详尽的文档
  • 客户合作高于合同谈判
  • 拥抱变化高于遵循计划

以上除了”敏捷宣言”外,其实很多都是我个人的理解和看法,也许与真实的敏捷思想或者流程有偏差。如果有说的不对的地方,以后再来改进或者重新写一篇新的理解。

敏捷开发上的感想说完,这次 NHO 还学到了不少别的东西,比如:“伙伴”之间要有信任,面对各种 challenge,大家的想法都是把事情做得更好,并不是为了批评谁;利用概念图来梳理知识和学习新知识;还有思想上的变化,原来认为听懂了别人说的就算是理解了,现在知道了还要能讲给别人听懂才算是真正的理解。其实这次课程所学习到的东西远比我提到的多,正因为我懒得动笔,没记下来,导致现在想说出来却想不起来了,因此还学到一个东西就是要做笔记( ̄△ ̄;)。

我的文笔不怎么好,写的东西挺碎片化的,东一句,西一句,这次学习到的概念图没准也可以用来写文章,应该也是一个不错的文章思路组织方式,以后可以有更多的实践,这样文章肯定能写得越来越好。

2017, componentWillUpdate()

今天出去帮好友”维修电脑”了,再聚了个餐挺晚才回来,就匆匆写下了这篇草草的文章,算是对入职 TW 的一个初识,人生若只如初见,那可能我就连试用期都过不了了,哈哈:),期待在”初见”后做得越来越好吧!

.