大会第一天结束后,我和 ThoughtWorks 的几个朋友(傅若愚、方志刚、小灰灰)一起去撸串。他们给我介绍了很多关于这家公司的趣事。小灰灰其实是前 ThoughtWorks 员工,现在在 SegmentFault 做市场运营相关的工作。

ThoughtWorks 以前在我眼中总是很神秘,这次和他们聊天,更进一步从各种故事中了解了这家公司。和别的偏咨询的业务不太一样,ThoughtWorks 在移动开发领域,整体上业务还是侧重「外包」开发的工作较多。

在和他们聊天的过程中,我才发现 ThoughtWorks 是在 iOS 开发中,也实践成功了 TDD 的公司。而这一点,其实做到的互联网公司非常少。在我之前的认知中,因为移动开发的单元测试能够覆盖的代码极其有限,加上移动开发中的功能模块(特别是上层的界面和交互逻辑)在快速迭代中反复更改,我认为 TDD 并不适合在移动开发领域。ThoughtWorks 的故事让我再次对自己的观点产生了动摇。

进一步了解到,ThoughtWorks 的一个 App 的业务逻辑,可能由超过 10 个人来完成,另外 ThoughtWorks 的员工也可能分布在不同的城市,他们需要更解耦地工作和协调,而这个时候,TDD 成为一个很简单有效的方式。ThoughtWorks 接的 App 开发的单子,本身也不太可能像移动互联网公司那样,两周发一个版本来快速迭代。综合起来,在移动开发中引入 TDD,或许适合这样的场景:

  • App 开发人员超过 10 人,并且大家代码相互依赖
  • App 开发人员异地协同工作
  • App 的迭代周期不算特别频繁
  • App 的质量非常重要

小灰灰还提到,ThoughtWorks 这家公司还有一个比较独特的地方,就是创始人不完全以赢利为目的来经营公司,比如他们会接一些明显亏本的、但是公益性的项目,比如在一些第三世界国家,帮助当地的政府开发一些信息系统。整体 ThoughtWorks 中国区还是很挣钱的,但是补贴给了不少国外的亏本项目。

ThoughtWorks 另外一个文化,就是大量招聘新人,大部分员工都是工作 1-3 年的,使用新人的首要原因其实是因为便宜,ThoughtWorks 在整体互联网行业中给付的薪水并不高,所以使用新人可以使得他们能够控制住成本。同时,ThoughtWorks 还是比较有技术追求的,他们公司内部有一些行业资深的大牛可以指导这些新人,于是那些有潜力的新人,能够得到快速地项目锻炼和恰当的指导,于是快速成长。小灰灰说,有一些新人,刚进公司,就要去给那些年纪比他大十几岁的客户做敏捷咨询,那种压力是巨大的,相对来说成长也是巨大的。

但是,终究 ThoughtWorks 这种模式下,能够到达金字塔顶端的人是少数,所以大部分员工在工作几年之后,能力成长起来了,就会选择跳槽。拿小灰灰的话说:「薪资 double 是至少的,能力强的能够 triple」。

其实对于 ThoughtWorks 来说,这其实是「双赢」的。为什么人离职了还是「双赢」呢?因为 ThoughtWorks 还是留住了少量最最精英的人到达金字塔的顶端,同时 ThoughtWorks 以非常小的人力成本,保证了它能够完成项目,公司能够正常经营。那些离开 ThoughtWorks 的人,在公司经历了历练和成长,何尝不会感恩公司,他们在别的公司做得好,反倒会正面宣传 ThoughtWorks 的技术影响力。

我有一次听到一个类似的故事,四大会计事务也是大量招募新人,很多重要的项目,用老人带新人的方式开展工作,那些新人拿着非常低的薪水,但是工作压力特别大,但是通常三年之后,这些新人成长起来,离职都能够找到非常好的新工作。而少量留下来的四大老员工,又继续着这种老人带新人的模式。

某种程度上,这就是一种商业模式,这些公司选择用低薪 + 成长空间,来吸引应届毕业生,同时获得商业收益,虽然人员不停流动,但是公司依然能够经营得很好。

Source: SwiftCon 期间的面基和八卦 | 唐巧的技术博客