走进神秘的ThoughtWorks咨询团队

成立五年的ThoughtWorks咨询团队,在外人眼中,甚至在ThoughtWorks内部其他团队眼中,一直是一支神秘的队伍。

图:部分咨询团队成员   摄影师:张硕(ThoughtWorks咨询师,左上角拿相机者)

神秘

为什么神秘呢?一方面,在ThoughtWorks只有中国区有独立做咨询的团队,因此这支团队对于中国区以外的ThoughtWorker来说很神秘;另一方面,这支团队的工作方式相对独立,与其他团队联系较少。

可能有读者不大清楚什么是咨询工作。ThoughtWorks中国区所提供的专业服务大致分为两种,一种是交付,另一种是咨询。前者是指ThoughtWorks开发团队直接为客户开发软件,后者则是ThoughtWorks咨询师辅导客户的团队来更好地开发软件。

交付工作的完成,需要各个工种的配合,所以团队人数会较多,每个团队大概会有七八个人。而咨询工作不同,好比你通常不会请三位以上的健身教练同时辅导你一样,客户一般只安排一位教练(或两位教练结对)来辅导一个团队。在这种情况下,咨询团队这30多人,工作时会分散到全国各地的客户团队中,彼此相对独立地工作。

咨询师相互之间,除了结对工作之外,只有在团队例会上,才能了解其他咨询师的工作情况。连咨询师都不甚了解本团队其他队友的工作情况,更何况外界呢?再加上咨询师常年出差,奔波在客户现场,很少有时间去办公室做分享,这就让这支团队更加神秘。

三种咨询师

这支神秘的团队,有三种咨询师。

第一种:管理咨询师

这些咨询师有些会深入到客户基层开发团队,来辅导客户团队进行Scrum迭代开发和看板实践;有些会辅导客户的业务分析人员做设计思维工作坊、拆分用户故事、编写验收条件;有些会运用ThoughtWorks的精益企业理念和EDGE投资组合管理框架,来辅导客户公司总裁制定组织级敏捷转型的决策。

第二种:技术咨询师

他们中有些会评估客户现有软件系统的架构,并提出改进建议;有些会辅导客户程序员编写测试代码和进行代码重构;有些会辅导客户的持续集成工程师搭建部署流水线;有些会辅导客户构建微服务架构的系统;有些会开始探索VR/AR(虚拟现实/增强现实)、区块链技术、AI(人工智能)、自动驾驶汽车和无服务器架构等前沿“黑科技”。

第三种:全栈咨询师

这些咨询师能一人兼作上述两种工作,这也是笔者所向往的。换句话说,这种咨询师:既能和总裁聊天,又能辅导Scrum和看板;既能引入极限编程,又能指导需求管理;既能改进持续集成,又能和程序员结对写单元测试;既能编制咨询项目计划,又能给团队做培训;既会设计思维,又能干点售前。要想修炼成全栈咨询师,用同事大魔头(杨云)的话说,需要“胆子大,学得快,讲得棒。”其中,“学得快”是核心。

套路

这三种咨询师在辅导一个新团队做敏捷转型时,常用的套路是有共性的。大概可以分为四步:

  • 第一步:评估。根据客户团队情况,使用ThoughtWorks所总结的各种成熟度模型(比如敏捷成熟度模型和持续交付成熟度模型),来对客户团队的技术和管理实践进行评估,找出痛点和改进点。
  • 第二步:培训。给客户团队进行Scrum和看板、用户故事、持续交付等转型相关内容的培训,熟悉客户团队成员,发现客户团队中做敏捷转型的忠实粉丝,并让团队对转型中要做的工作获得统一认识。
  • 第三步:辅导。与客户团队成员结对工作,来一对一或一对多地辅导Scrum迭代开发和看板实践、用户故事拆分及其验收条件编写、编写自动化测试、搭建部署流水线等等。

第四步:回顾。一段时间后,让团队回顾转型取得的成绩,并找出下一步持续改进的目标。

优势

如果你读到这里,相信这支团队在你面前已经不再那么神秘了。笔者掐指一算,到今天已经加入ThoughtWorks快两年半了。以前神秘的团队,如今已成为笔者在深夜提笔撰写此文的动力。那么这支ThoughtWorks咨询团队,与其他竞争对手相比究竟有何优势呢?笔者觉得至少有两点优势:

  • 第一,技术能落地。ThoughtWorks最大的优势就是工程技术实践及分享的能力,比如代码重构和首席科学家Martin Fowler的《重构》一书、持续交付和Jez Humble及Dave Farley的同名书、微服务及Martin Fowler的同名博客等等。而那些来自工程实践一线的咨询师们,能令咨询方案落到实处。这一点,是很多竞争对手难以做到的。
  • 第二,锦囊妙计多。ThoughtWorks中国区总经理张松曾经对笔者说过,ThoughtWorks与其他竞争对手最大的不同,就是公司人数众多。而这支神秘团队的领袖孔雀然(肖然)曾经说,在ThoughtWorks最大的好处,就是能利用上面所提到的Hivemind。综合起来,这些通过了最难面试的ThoughtWorkers聚集了为数众多的力量,又形成的强大的Hivemind,能让你在遇事不决时,助你拥有足够多的锦囊妙计。相比笔者曾经从事过的只有一人的自由咨询师或仅有几人的小咨询公司来说,你能从几千位ThoughtWorkers那里获得更多的智慧,让你进步得更快。

加入

有朋友发消息说:“一直非常向往,待我能力到位了,一定努力尝试”。下文也将谈到ThoughtWorks面试难的问题。其实面试ThoughtWorks咨询师是有攻略的。根据笔者两年前加入ThoughtWorks的经验,做好下面几点面试攻略,能极大地提高你的成功率:

  1. PREP回答法。在回答ThoughtWorks的面试问题时,一定要紧扣问题,不要跑题。可以采用笔者从toastmasters.org的Table Topics环节所习得的即兴演讲技巧——PREP (Point-Reason-Example-Point),即先根据面试问题简短阐述你的观点,然后说明原因,接着举一个实例来说明,最后总结一下你的观点。
  2. 刻意练习硬技能。如果你想尝试技术咨询师,可以看Coding Dojo Handbook 或笔者的《驯服烂代码》,然后去cyber-dojo.org上练习TDD;如果你想尝试管理咨询师,可以参考“读书雷达”,读其中相关的书籍,并发表博客来分享你的收获。
  3. 社区平台多分享。如果你想尝试技术咨询师,要多在github上分享你的代码。如果你想尝试管理咨询师,要多在TiD这样的技术大会上作演讲,多写管理相关的博客。

最后再强调一点:你不必等什么都精通了再来尝试ThoughtWorks咨询师;只要你能够“学得快”就行。


更多精彩洞见,请关注微信公众号:思特沃克

Share

ThoughtWorks看中什么能力?

文/陈庆敏

这是候选人在面试中经常会问的一个问题。 这个问题的背后其实还隐藏着若干其它的问题:

  • ThoughtWorks都有什么职位,分别匹配什么能力?
  • ThoughtWorks鼓励员工发展什么能力?
  • 在ThoughtWorks能学习到什么能力?
  • 我是否具备ThoughtWorks看中的这些能力?
  • ……

这个问题很难用一言两语来解答,希望这几个故事能给你解答。

自信,就是在不确定的情况下把事情做好

ThoughtWorks招过一个程序员,刚来时普通话说的有些吃力,工作三年依然有着毕业生的羞涩。而如今,他是一名资深的咨询师,专业的演讲师,熟练的培训师,还在一个大项目承担Tech Lead的职责。同样是三年,他在ThoughtWorks完成了一个从青涩走向成熟的蜕变。

这些还不是关于他的全部,他在业余时间还写了一本书,正在亚马逊热卖。

从程序员到Tech Lead,过渡是自然而然,感觉还能hold住。而转型咨询师却不然,初到客户现场时,他就像武侠里被废了武功的除名弟子,被扔进谷底。以前玩的是飚代码,现在拼的是服务客户,套路上隔着十八班武艺。

(图片来自:http://t.cn/R6CnqME)

“我当时没什么自信”,回忆起来那段经历,他这样说。

既然改变已经发生了,那就尽力做好。没有自信,可以建立自信,没有武功,可以从零学起。

他在“绝情谷底”总结了三条生存法则:

  1. 不要多想,直接去做,反正也没有时间想别的;
  2. 不敢演讲,那就多练 ,反正客户等着,不讲也不行;
  3. 不断提高,那就多学,反正总有建(tiao)议(ti)和反(tu)馈(cao)。

他为自己设立了一个目标,一周演讲两次,这样一年下来就讲了三四十次。时间长了,突然有一天,他发现自己在人前讲话不紧张了。

那时感觉自己是被逼的,不过现在挺感谢逼我的人,当时在不确定的情况下我只想一件事情,那就是把手头的事情做好。做着做着就发现,原来我真的可以做的很好。

自信就这么来了。这个人叫格茸扎西。

成长,从单一领域技术员到全领域多面手

“你觉得角色转换对你成长有帮助吗”?我问我的sponsee安辉。(试用期过后,每个人会有一个帮助他成长的sponsor)

“肯定有,在很多提升能力、拓宽眼界方面,不同的角色会带来不一样的体验和视角。”安辉的回答。

(图片来自:http://t.cn/R6CnMJw)

做QA的时候需要培养硬技能,研究自动化测试、性能测试的理论和技术;做BA的时候要和客户打交道、管理客户期望,会用到一些综合能力;做PM时需要对全局有好的认识,做风险的识别和管控,这些会给予人不同的锻炼和收获。

“真正换了角色之后,再从另一个视角看以前做的事情,会有不同的收获,也会有新的认识。所以如果有一天我继续回去做QA,应该会做的更好”。安辉总结着自己的经验,也分享自己的心得。

“我现在挺喜欢自己正在做的事情,也很喜欢这种工作状态,因为这份工作我还不能完全胜任,所以会觉得每天学到新东西,有挑战也有激励。”

角色的多样化成就了他的快速成长,反正做什么练什么,练什么就学什么,如果你面临角色转换而犹豫不决,安辉会告诉你:

机会这么多,多尝试一下。有了不同的视角之后,认识会更全面,也会有新的见解出来,这对以后的职业发展很有帮助,这些经历会让你从一个纯粹的技术人员,成长为一个比较全面的真正独当一面的专业人士。

发展,是带领别人一起突破一起坚持

发展别人是一件很难的事情,真的非常困难。

她叫林冰玉,是ThoughtWorks中国区QA社区的负责人,同时也在北京的一个团队上面做QA。

QA的社区活动做了好多年,越来越有影响力;冰玉也在持续写文章、做演讲,多渠道的输出自己在QA领域的经验和洞见。在身体力行做这些事情的同时,她影响了更多的人,越来越多的追随者加入进来,为向外输出经验、培养人才提供了力量来源。难能宝贵的是,在参与社区活动的同时,每个参与者都在项目工作中表现的十分出色。

一家专业服务公司要保持持续的竞争力,必须有不断成长出来的人和持续发展的人的能力。

“其实,有得必有失。比如花在社区发展的时间多了,在QA专业这条道路的时间就少了,这是必然的结果,也是需要权衡的问题。做社区活动,很多地方需要操心,绝对锻炼人的思考能力以及其它一些综合能力,这也是一种收获。”冰玉总结自己的心得经验。

(图片来自:http://t.cn/R6CnT3o)

有的时候,工作的转变可能来自一个外部因素,但做着做着,外因就变成了内在的动因,支持这些事情持续进行下去。因为既然做了,就要做好,是内心的那股劲让很多事情落地生根,从而凝聚了一批志同道合的人。

……

现在流行“跨界”这个词,跨界人才指的是具备两个专业以上的知识或经验的复合型人才。在ThoughtWorks,这已经是一种常态。

  • 你看到的社区lead可能是资深的测试工程师;
  • 你身边的架构师可能还承担着某个关键岗位的管理职责;
  • 和你pair(结对编程)的某个程序员或许还是一本畅销书的作者;
  • 你们团队的需求分析师的本职工作有可能是测试;
  • ……

总之,这里有无数种可能,这里有数不清的多面手。

在这里,跨角色是一种常态,只要你有那个勇气展现出你的兴趣,只要你有热情尽快习得那个岗位需要的能力,你就会受到鼓励,就可以在另一个领域打造出一片天地。所以在ThoughtWorks,能够高效且专业的去做事,能够用不同的方式去把事情做得更好,你就具有竞争力。

再回到最初那几个问题,你现在有答案了吗?


更多精彩洞见,请关注微信公众号:思特沃克

Share

我为什么选择ThoughtWorks?

前一阵在知乎上看到一篇关于“选择某大公司还是ThoughtWorks”的提问,于是毫不犹豫地点了进去。果不其然,除了一些同事的安利回答(尤其以Phodal同学的安利最为严重)外,也没有太多有价值的参考了。对于这种一边倒的回答,我只想说我喜欢……额不,不是这句,应该是,很可能会有阴谋论者以为是营销套路吧?

其实选择哪家公司,并不是一件多么难以抉择的事情。如果选择了某家公司却发现不适合自己,那就趁早走人呗。我相信在就业上能够有所选择的人,是不会因为在一家公司待了几个月发现不合适,辞职出来后就找不到工作的。既然现在能拿到ThoughtWorks的offer,几个月或几年以后,只会拿到更好的,不是吗?而至于是否适合自己这个问题,就只有自己才能感受了,其他人的回答只是参考。我相信题主已经做出了选择,等他过段时间再来更新吧。

ThoughtWorks是一家奇特的公司,奇特到她的员工很少有说她坏话的,不管是在职还是离职;奇特到也有一些“ThoughtWorks终身黑”一直致力于各种嘲讽。当然,对于大多数人来说,她是神秘的。

1-mystery

因为她所倡导宣扬的东西,在其他公司尤其是传统IT企业来说都太难以推进了。比如Clean Code、比如TDD、比如持续交付(当然,如果你认为这些实践对于软件开发来说无足轻重,欢迎来辩)。因此曾经有不少技术圈网红希望能够到ThoughtWorks参观,无非就是想看看,“你们说你们XXX做得很好,到底是不是真的啊。”

我在加入ThoughtWorks之前也抱有这样的疑问。因为当我看着上千行的方法发呆时,他们说超过15行甚至5行就算大方法;当我们还在没有单元测试的深渊中挣扎时,他们已经TDD得不亦乐乎;当我刚开始用Jenkins搭建好构建环境,《持续交付》出版了;当我们终于搭建起分布式应用,觉得差不多算是SOA了,人家已经把大服务砍成微服务了!同样是程序员,这么一比怎么就感觉自己不会写程序了呢?他们简直就是神一般的存在啊。

2-hero

到底是不是真的呢?以我有限的ThoughtWorks项目经验来回答:“并不全是真的。”超过15行的方法比比皆是;TDD倒是一直在践行,但是团队成员对它的质疑从来就没有停止过;持续交付还在路上,还做不到每天都部署到生产环境,我们相比Amazon还差着好几千个Facebook;而一度客户对我们的challenge是,“别再加服务了!”

但是,与其他企业不同的是,ThoughtWorks一直把这些优秀实践作为追求的目标。前路也许坎坷,但永远不会放弃。对于“代码坏味道”的争执可能贯穿整个Code Review,不辩个淋漓尽致不痛快,不为别的,只为把代码写好;TDD虽然有争议,但都在努力学习,各种workshop和培训纷至沓来,不为别的,只为get一门新技能,融会贯通突破极限成为大神;企业应用的持续交付难度比互联网要大得多,但这条路我们也基本上趟出来了,并且会坚持走下去;至于微服务,经过了那段低潮期,我们从各个方面开始调整,已经基本找到了应对之道

3-solution

所以,重要的不在于这些东西我们现在做得好不好,而在于我们一直在往好的方向上做。而在这个过程中,收获最多的不就是人的成长吗?

回到主题上来,我当初为什么选择ThoughtWorks呢?坦白地讲,对于一个在国企工作多年饱尝了世间冷暖、见识过项目百态技术却没啥进步的我来说,在换工作时并没有太多可选择的余地。要不是在拿到ThoughtWorks offer的两周前我的人生导师推荐我去ThoughtWorks试试,我可能就去一家房地产企业做甲方的技术经理了。

但选择公司这一行为不仅仅发生在当初挑offer时,也发生在每年的离职季。每年春天,拿完年终奖、过完年,那些对promotion不甚满意的年轻人就开始躁动起来,人员流动如滔滔江水连绵不绝。对于每个人来说,是去是留都要做个了断。那么我为什么每次都选择ThoughtWorks呢?

4-insights

14年初,我刚刚过试用期,对ThoughtWorks的一切都还处于看似懂了但现在看来其实too young的阶段。那时我留下来的理由非常简单,我还没有领悟到这家公司的精华,还需要不断地学习。

15年初,我所在的项目新启动了子项目,使用ReactJS作为前端框架,同时还引入了node.js。对于一心想学习JavaScript的我来说简直如沐春风。在这个时间点,国内很多公司都还没有引入ReactJS。顺便说一句,该项目从10年便引入了AngularJS,同样是国内领先。对于新技术孜孜不断地追求把我牢牢地拴住了。

时间来到去年底今年初,一位同事找到了包括我在内的几个人,成立了一个“地下组织”,开始互助写作。所谓“互助”其实就是互相督促、互相建议、互相伤害而已。除我之外,其他人都是公司里举足轻重的人物,不知道这位同事为啥会找到默默无闻的我。在其他公司,这种事发生的概率恐怕会很小。谁管你有什么特长喜欢什么呢?

5-who-cares

而在ThoughtWorks,这样的地下组织有很多。志同道合的同事们会自发地聚集在一起,为做成点事情而努力。比如BQConf和CDConf,都是大家觉得想做点什么,于是找到了一拨人一起做,需要公司帮助的时候再找领导谈。没有一个是自上而下的“委派”。半年来我们这个组织诞生了不少优秀文字、演讲和播客,以及最新的ThoughtWorks读书雷达

三个月前,我们这个小组织进行了一次团建,期间问到是什么动力促使自己坚持下来。一些同事的回答让我动容。他们的大意是说,“希望通过自己的微薄之力,保持ThoughtWorks在社区的影响力,不能让ThoughtWorks的招牌砸在我们这一代ThoughtWorker的手中。”一个普通的员工对自己的公司爱得如此深沉,让我肃然起敬。不知道文章开头和ThoughtWorks比较的那家大公司有没有员工愿意无偿做这些事情,反正我是真的为能和这样的人成为同事而感到骄傲。

行文至此,已是深夜。心有戚戚,无以言表。思绪万千,不知所云。

以上,献给入职三周年的我。

Share