On Beach
海滩上的思想者
每个星期一,每个ThoughtWorker的Lotus Notes都会收到这样一封邮件:
Timesheets are due
This is just a reminder that timesheets are due by midnight on Monday. This is expected of everyone.
……
|
ThoughtWorks在全球的6个国家、十多个城市设有分支机构,再加上一贯坚持与客户紧密合作,项目组的成员常常出差到现场工作。世界各地的超过700名ThoughtWorker,他们的工作时间分配都会提交到一个在线系统,以便公司清楚地掌握每个员工的工作情况。 刚才提到的那个邮件,就是要催促大家在周一的午夜之前把自己上周的工作情况填到一张表格中:做了哪些工作,每件工作用了多少时间。每周的40小时,一定要在时间表上有所体现,哪怕是坐在一边发呆或者出去休息,也要明明白白地列出来。方便起见,大家一般以一小时为单位填表,但听说澳大利亚有位同事填表的单位是一刻钟,这种时间管理的能力和执行力就令人叹为观止了。
图1:ThoughtWorks的工作时间报告表
填表时有上百个任务可供选择。有些选项是有客户付钱的(billable),譬如在某个项目里写程序或是调研需求之类。执行这些任务的ThoughtWorker通常是被分配到某个项目组里,所以统称他们为“on project”。另一些则是没有客户付钱的(non-billable),譬如帮助招聘、做杂事、或者什么都不干。做这些事情的ThoughtWorker大抵还没有分配到具体的某个项目,他们被统称为“on beach”——在海滩上休息的人们。
On beach这个说法并非名不副实。在ThoughtWorks,on beach的员工是可以随便安排工作时间的——可以坐在办公室发呆,可以晒晒太阳看看小说,可以到街上四处逛逛,可以在家睡一天大头觉,甚至打个招呼出门去旅游几天也没问题。之所以如此,最主要的原因其实是ThoughtWorks的业务性质:作为一家咨询公司,ThoughtWorks的项目很难预测时间。有项目的时候大家抓紧时间拼命干,没有项目的时候就可以略微放松休息一下,这也是一般咨询公司乃至很多软件公司的常见情况。不过,ThoughtWorks把on beach作为公司的一件大事来对待,自然是有其特别之处的。
首先,on beach的时间对于ThoughtWorker们来说是一个难得的学习机会。软件开发本来就是高知识含量、高技术性的职业,如果只是一味陷入项目的工作中,没有给自己不断学习进步的时间和机会,即使很优秀的开发者也会慢慢落伍。更何况,ThoughtWorks有Martin Fowler这样的软件开发大师,还有众多优秀的程序员(像Jon Tirsen、Paul Hammant、Jim Webber等人都是在社群里颇有声望的人物),大家心里常常都想:几时有空了要找某某人探讨一下某某技术。于是乎,on beach的时间便成了难得的学习机会:读一本技术书,学一种新的语言,在内部讨论组上探讨一个技术趋势……都是ThoughtWorker们“在海滩上”常见的休闲方式。如果觉得光说不练还不过瘾,没问题,ThoughtWorks有很多内部项目拿给员工们练手。譬如前面看到的“工作时间表”,就是员工们利用on beach的时间,用Python/Zope来开发的。最近Ruby/Rails越来越热门,已经有一些on beach的员工又开始撺掇用Rails来做点东西了。
图2:这些书都是ThoughtWorker们“在海滩上”的作品
On beach的另一个重要作用,是让员工们——尤其是ThoughtWorks视为珍宝的程序员们——有机会体验各种不同的工作岗位。在很多公司里,各个部门之间的隔阂是一个大问题:不同部门、不同岗位的员工互相推诿、猜忌,给工作带来很多麻烦。研发部认为销售部只耍嘴皮子不做实事,只管给客户承诺不管能不能实现;销售部认为研发部做事不拼命,不配合公司战略……为了避免这种情况,ThoughtWorks提倡on beach的员工去做一些其他岗位的工作。譬如说,程序员做完一个项目,on beach的时候可以去做一些市场宣传推广的演说;也可以扮演售前的角色,为潜在客户提供方案;甚至还可以在办公室里做几天行政工作,享受一下“当老板”的乐趣——当然,所有这些工作都会被计入时间表,并且会在绩效考核与奖励上有所体现。但这并不是关键,关键是这种转换角色的游戏的确很好玩,能够让员工们体验到与平时工作不同的另一种成就感——同时也体验到其他岗位的重要与艰辛。
从公司的角度,这种轮换机制有巨大的好处。首先,它确保ThoughtWorks成为一个整体、一个团结的社群,而不是各自为政的几个部门或分公司。为了保证“ThoughtWorks社群”的健康,ThoughtWorks采取了很多措施,譬如采用平板式的组织机构、鼓励各国分公司之间人才交换等,on beach的轮换也是其中的一项重要措施。其次,on beach的员工在扮演自己不熟悉的角色时常常显出极高的效率和创造性——其实真正理想的休息并不是什么都不做,而是做一些有趣的、新鲜的、充满挑战性的事情。所以,尽管招聘时基本上都按照“优秀软件开发者”的标准来找人,但ThoughtWorks从来不缺乏优秀的市场人才、销售人才和管理人才。毕竟,程序员是这个世界上最聪明的一群人,只要他们喜欢,还有什么是他们做不好的呢?
很多时候——至少在ThoughtWorks中国公司——像市场、销售、招聘这类让很多程序员向往的工作,ThoughtWorker们只愿意在on beach的时间里客串一下。虽然这里也有很多优秀的“PPT演说家”,可他们更愿意把这些事情当作空闲时的调剂。在ThoughtWorks有一个传统:开发者是地位最高的一群人,写代码越多地位就越高,而管理者们则是地位最低的。所以中国公司的总经理Sid Pinney出现在哪个项目组,那里就会欢声一片,因为“地位最低的人来了”。
![]()
图3:ThoughtWorks中国公司地位最低的人就是Sid
|
On beach的时候,ThoughtWorker们最常扮演的一个角色就是HR——参与招聘流程。既然希望打造“最优秀的商用软件开发者社群”,ThoughtWorks对于招聘(尤其是技术人员的招聘)的重视可想而知:每个程序员要进入ThoughtWorks,必须先通过至少一次电话面试、两关的笔试、实际编码考察、以及长达6小时的现场面试——其中包括现场结对编程。可想而知,这个招聘流程光靠人力资源的同事是支撑不了的:一则没有深厚的技术背景,二则时间都来不及应付。所以,on beach的员工经常要参与帮忙。从校园招聘会,到推荐人选,从笔试监考,到阅读代码质量,都是on beach的同事们常干的事。现场面试就更不用说了:一个ThoughtWorker扮演客户,提出种种刁钻的需求;另一个则与candidate坐在一起,共同编程实现“客户”的需求,偶尔还扮演一下“沙包”。大家对这项任务也乐此不疲:一直以来都是被别人招聘、被别人面试,好容易有个机会可以难为一下别人,何乐而不为?
Google有一个著名的“20%自由时间”规定:每个员工可以在每周用一天时间来做自己喜欢的事情。ThoughtWorks的做法则是通过人力资源的安排与调配,保证随时都有20%的员工on beach。两家公司的做法,可谓殊途同归。作为一家以“思考”为名的企业,如果没有这20%“躺在海滩上”的自由思考时间,ThoughtWorks还会是现在这样么?我想,读者应该不难猜到答案。
“海滩上”的一天
早上9点35分,J悠闲地踱进ThoughtWorks在软件园的办公室。办公室里只有三四个人,大家互相打个招呼,从冰箱里拿出饮料和早餐。J目前没有分配到项目,正在“on beach”,所以到公司上班的时间也可以自己掌握。
10点,J把邮件浏览了一遍。有一位应聘开发者的candidate刚做完了编程测试题,J和另一位同事负责对他的代码做审核。从Notes下载candidate提交的程序,打开Eclipse,J把审核意见一条条地填到一张表格上。
10点45分,做完了code review,J把Eclipse切换到另一个项目,一个Ruby on Rails开发的网站。Ruby on Rails在ThoughtWorks内部正在受到越来越多人的关注,以Obie Fernandez为首的“TW Ruby兴趣组”每天都会发起新的讨论。J也会参加这些讨论。在中国公司还没有拿到Rails项目之前,他自己用Rails做了一个网站系统,用来练手。
12点,大家一起去食堂吃饭。吃完饭后,几个人溜达到软件园的篮球场,脱掉外套,男女齐上阵锻炼身体。要是遇上阴雨天不能打篮球,J通常就会在办公室里玩玩电子游子——办公室里放了一台PS2和一台29寸的彩电。
下午2点,J打开PowerPoint开始写演讲稿。几天之后,在北京会有一场技术大会,J要代表ThoughtWorks在大会上发言,介绍ThoughtWorks的敏捷开发方法。其实所有的素材都已经在公司的资源库里,J需要做的只是把这些素材攒成一个连贯的演讲。作为咨询顾问,ThoughtWorker们几乎个个都能说会道,“老板”们通常看谁在on beach就安排谁去参加这类会议了。
4点,J揉揉发胀的眼睛,把椅子滑到落地窗边,享受下午的和煦阳光。桌上放着一本同事James Webber写的《Developing Enterprise Web Services》,J把它拿过来随便翻看。虽然还没有亲身接触到EAI类型的项目,不过J对SOA一向很感兴趣,看看这本书觉得颇有意思。
不知不觉中夜幕降临了。5点40分,J放下手中的书,打开浏览器,把自己今天做的事情填在时间表上,然后收拾东西,邀约着同事们一起去吃晚饭。On beach的一天,就这样结束了。
|