• 2012年时,我写过一篇blog,谈到了加入项目时,如何了解一个项目。

    当我加入项目时,我要了解什么

    最近在客户现场做咨询,有人跑过来,问了我同样的话题。经过简单沟通,我发现他真正的问题是,为什么我们作为一个外来人可以很快地上手他们的项目,而他们自己的新员工却很长时间才能上手。

    这是一个很有趣的问题。

    正如我在前面那篇文章里写到的,通常我加入一个项目,我首先要获得这个项目的大图景。作为一个ThoughtWorker,我一定会了解这个项目业务价值,它要解决的问题是什么。即便是技术,我也会尝试先从架构入手。等有了大图景,具体到一个问题时,我就知道它在整个项目中,是拼图的哪一块。

    对比而言,客户的很多新人加入一个项目时,常常是试图从一个具体的问题着手,在解决问题的过程中,有太多小障碍了,每次遇到的几乎都是一个全新的问题。所以,几乎就是一路磕磕绊绊。当然,这里不排除我比客户的大多数新人工作经验丰富,所以,对于大部分技术理解能力要比他们好。

    我看到的另外一点大的差别是,我了解项目时,我会按照自己的思路,通过问题,一步步将项目分解开来,也就是从业务到技术,从大框架到小模块。通常,只要与我交流的人对项目足够了解,基本上,我都可以把项目大致梳理出来。

    相较而言,一些新人的接收模式是,等着别人按照他们的思路来介绍。以我和许多客户的合作经历来看,大多数经年累月的项目往往是不足够清晰,甚至是相当混乱的,在这个项目上长时间工作的人也很难把它梳理得很清楚,所以,指望他们把项目介绍清楚只能祈求好运了。前面那篇文章我提到过,许多人是把业务和技术混在一起的,这是我经历过的实际情况。

    除了按照上面所说的方式理解项目,之所以会给人一个很快上手项目的感觉,可能还有一点:使用“行话”,也就是客户他们常用的术语。与人用“行话”交流,往往会更容易建立彼此的信任,也会让人认为你对交流的东西很懂行,这或许算是附赠的技巧吧!

  • 学生的提问(一)
    学生的提问(二)

    女生应聘,会不会有劣势?

    问这个问题一定是女生,且程序写得不多。

    同之前回答的一些问题一样,你是否能成为一个好程序员,与性别无关,与你的投入有关。在ThoughtWorks里,有许多优秀的女程序员,其中不少是毕业之后加入ThoughtWorks。许多人初入ThoughtWorks都是一脸茫然,现在已经是干将了。图灵社区里有一篇文章,采访我们公司的贾永娜。时至今日,我依然记得她初入公司的状态,而如今,她已经挑起了大量。

    许多女生问这个问题,往往是因为她们都是学校里的乖乖女,在学校里,以“好好学习”为主。而学校里的“好好学习”基本上以读书为主,对于软件开发而言,这种做法却缺少了最重要的一环:实践。只读书不实践,或少实践,这种做法在学校里很容易通关,却与实际工作需要脱节,所以,一般“好好学习”的女生在找工作时,优势一下子变成了劣势。这是教育的问题。

    女生不像男生那么爱折腾,所以,动手能力显得不那么强,也就此形成了一种偏见,女生不适合编程。实践证明,只要投入了足够的时间,女生做得丝毫不比男生差,甚至做得比男生还要好。这方面极致的例子是,ThoughtWorks作为一个以软件开发闻名的公司,我们的CTO Rebecca Parsons就是一个女性。

    社会上女性在应聘时的另一个劣势是,她们在未来要面临结婚生子。生孩子通常意味着,要面临着几个月,甚至更长时间的暂停期。这是许多公司不愿意接受女性的重要原因。许多拼事业的女性往往也因此推迟了许多个人计划。

    在ThoughtWorks里,虽然女性要面临着同样的问题,但并不会对个人发展造成太大的影响。我的同事里有许多女性是在ThoughtWorks里完成人生这个重要阶段的。有些人返回工作岗位上反而比之前工作得更为优异,因为经过这个阶段之后,她们会变得比之前更为细腻,更好地理解其他人,也能更好与其他人协作。

    我们在这方面也有很好的例子,我们在西安有个同事,她在ThoughtWorks完成了自己重要一步,回到工作岗位上取得了更大的成绩,最近成为了西安办公室的负责人。还有另外一个例子,我们中国区负责人力资源分配的RM(Resource Manager)是在自已还没回到工作岗位上就成功地内部应聘了这个职位。

    在ThoughtWorks,我们往往愿意给女性更多机会。在毕业生招聘上,男女比例严格执行1:1,换句话说,如果招不来足够数量的女生,一些不错的男生也不得不放弃。

    你们会不会像微软研究院、贝尔实验室那样让人想做什么做什么?

    能问出这样的问题,至少说明提问的人还是关心过各个IT公司的情况。

    但是,无论是微软研究院,还是贝尔实验室,他们都是研究机构,研究机构主要的工作是做出一些不一样的东西,所以,他们得到的空间非常大。但空间大,也并不意味着他们想做什么做什么,而是集中于某个特定领域,比如,我们熟知的微软亚洲研究院在多媒体方向,贝尔实验室在通信领域,只不过,他们在研究过程中产生了一些副产品,比如Unix,让人们误以为他们真的是随心所欲。

    另外,能够进入到这些机构,按照自己的选择方向进行研究,通常也是在某个方面证明了自己的人,比如,一些博士或是某些专家。不是说他们会给任何人在里面随心所欲的机会。而通常,刚毕业的学生还在寻找自己的方向,真的有这样的机会,往往也是不知所措。

    真正的商业公司给人的空间不会有这么大,但也不是说完全没有空间,比如Google会有20%的时间做自己想做的事情。在ThoughtWorks里面,我们的空间有多大呢?这取决于自己的努力。

    我曾经和我们的CEO郭晓聊过,他说自己日常工作中一个很重要的部分是决定把钱投到哪个方向。在ThoughtWorks里,有想法的人太多,支持每一个有想法的人,几乎是一件不可能的事。所以,要想得到更多的支持,就要自己在这个方面投入更多。

    一个例子是我们的产品。现在,产品团队的负责人陈金洲个人一直对做产品非常有兴趣。产品团队打造的第一款产品就是在没有任何支持的情况下,他个人独立做了半年,用实际行动证明了自己在这个方面的兴趣,最终得到了公司的支持,所以有了现在的产品团队。

    还是那句话,在这个公司里,有想法的人太多。但很多人的想法真的就只是想法,过了就忘了。真正能从想法变成现实的,需要个人非常大的投入。我个人在ThoughtWorks做成了几件事,但每一件我都为之投入很多。比如,给毕业生的郑大晔校,至少前两年,我几乎每场必到,比如,ThoughtWorks校园行,刚开始也是每次必到,每个session都是我亲自打磨。

    学生而言,是一个有想法的群体。但是,把想法变成现实,是让他们变得脚踏实的蜕变。别抱怨没人支持自己的想法,自己先用行动支持自己,这才是最现实的选择。

  • 学生的提问(一)

    你们公司会加班吗?

    关心这个问题的人通常有两种原因:

    • 听说软件行业加班很厉害。
    • 我想找个轻松的工作。

    我们先来区分一下加班。首先,并不是八小时外的工作就叫加班。在ThoughtWorks,过了八小时,办公室里也经常是有人的。他们留在办公室的常见原因有如下几种:

    • 提交代码不小心造成CI失败,一般会修好再走,保证其他人(尤其是在不同时区的人)可以正常工作。
    • 办公室里有一些活动,比如Coding Kata,某个Workshop之类。
    • 利用公司环境进行额外学习。
    • 软件行将上线,需要人值守。

    通常,只有等待上线算得上正常“加班”。

    无论你做什么工作,在工作期间有一些加班都是很正常的,为了赶工完成一些东西,这是情有可原的。真正的差异在于加班的频率。

    软件行业在加班问题上声名不彰,一个很重要的原因是加班频率很高。但其实,很多情况下,加班不是必然。

    我了解过的很多公司,加班是一种企业文化,你不好意思早些走,因为其它人都在加班。遗憾的是,看别人怎么做通常是国人习惯的做法。选择公司的时候,你需要在各个方面好好平衡一下。只有八小时之外拥有自己的时间,你才有机会替自己的未来思考。

    正常情况,ThoughtWorks是不需要加班。但对学生来说,还有另外一种压力在,这种压力可能会占据工作之外的时间:成长。一般来说,学生刚刚加入公司时,无论是按照工作要求,还是与周边其他人之间,都有着巨大的差距。努力地弥补巨大的差距往往是这些职场新人面临的第一个主题。

    新人们往往会选择利用八小时之外的时间更多地学习,所以,即便不加班,很多人下了班的时间也并不轻松。正是因为这样,ThoughtWorks的新人们一般都成长得非常快。

    如果你期望不加班,ThoughtWorks是个选择,如果你期待轻松,也许ThoughtWorks并不一定是个好选择。

    你们有培训吗?

    关心这个问题的同学多半是上了十几二十年学,被老师喂习惯了。事实上,大多数学生加入公司都需要经历的一个思维转变过程。

    作为学生,从小时候开始,一路都有人告诉该做什么,小学中学大学,写作业,听老师讲课等等。所以,也就形成了一种惯性思维,所有的事都希望有人给安排好。即便是毕业之后,内心也是有一种“被安排”的追求。

    很多人关心这个问题,实际上,内心想听到的答案是,经过培训之后,我就具备工作所需的全部技能,然后,我就等着“考试”就好了。有的工作是这样,所以,你会听到很多人抱怨几十年如一日,那就是所谓的“稳定”。如果你追求的是人生的成长,就不那么“稳定”了。你需要不停地学习,准备在工作中随时应对新的挑战。

    在ThoughtWorks,挑战无处不在。

    对于学生,ThoughtWorks有培训,加入公司之前会有郑大晔校,加入公司之后会有TWU。但是,ThoughtWorks真正有价值的培训是与人一起工作,而这个培训并不是让你坐在课堂里听别人讲东西,而是手把手在一起工作。不过,这样工作远要比培训压力大,几乎是随时随地地反映出你技能上的差异,所以,对于学生来说,压力非常大,但只要顶得住压力,成长也会非常快。

    在西安和成都两个办公室——也是我们招聘毕业生的主力,培养人已经成为了一个重要的主题,周边的人会非常关注你的成长。

    不过,我这里想说的是,真正对你负责的不是别人,而是你自己。

  • ThoughtWorks做过很多次校园活动,我也参加过很多次,有一些问题经常被问起。不妨在此整理一下。

    如果不是学习计算机专业,应聘你们公司会不会很吃亏?

    能问出这样问题的人,通常有两个特点:第一,所学专业不是计算机,第二,对自己写程序的能力不够自信。

    把大学当技校,是学生普遍存在的一个误解。学了这个专业,在这个专业领域领域内就强,没学就弱,是一种常识,也是一种误解。

    我的同事里有有很多优秀的程序员,学的专业根本和计算机不搭边。他们只是发现了写程序是他们的最爱,于是,义无反顾地投身其中,而且,这样的人往往会觉得自己不是专业出身,所以,往往会更加勤奋地弥补“天生”的欠缺,取得的结果往往比“专业”人士好得多。

    另一方面,许多人是学了这个专业之后发现,自己根本不适合做这个,于是,转投了其它专业。无论是同事还是同学,我身边这样的例子比比皆是。

    如果一个公司招聘以“计算机及相关专业”作为硬性标准,而不看实际的动手能力,这样的公司不去也罢。

    本科和研究生应聘你们公司会不会有差别?

    很显然,这个问题一般是本科生问的。同专业的问题一样,学历对于软件开发来说,如果不是一文不值的话,也不值几文。

    这里的假设是这样的,研究生比本科生多学习了几年,所以,水平比本科生高。如果从整体上说,是这样的。但是,所谓整体上说,意味着跟你作为一个个体并无直接关联。

    编程的水平与学历无关,与投入的时间有关。从我了解的情况看,很多研究生选择读研原因并不是我们假想的为科学奋斗那样崇高的目标:本科毕业没找到合适工作,或是,本科没有好好练习写程序,用研究生的时间来练,以此找个好工作。所以,如果本科多花点时间写程序,就可以省下了两三年的时间,多赚两三年钱了。

    这是一个很现实的答案,一般来看,研究生的水平通常不如同年龄工作两三年的人。所以,经常看到这样一种现象,一个项目组里,两个同龄人,有工作经验的带着研究生。即便放到长线来看,研究生所谓的潜力也并不比其他人突出。

    从我们自己的招聘上来看,应聘ThoughtWorks成功的本科生和研究生,从能力上讲,相差无几。从长期发展来看,某些本科生甚至做得比研究生还要好。

    还是那句话,编程的水平与学历无关,与投入的时间有关。

  • 六年,在ThoughtWorks六年了。

    还记得六年前,我加入公司的时候,整个办公室也不过三十几个人,而今天,ThoughtWorks中国区已经发展成四个办公室,小三百号人了。这六年间人来来往往,按照加入公司时间排序的话,我已经是ThoughtWorks中国区的第18号员工了,当年的新员工,已经成了老鸟。当年屁颠屁颠地跟着别人一起写程序,到现在带着一些人写程序,并影响着更多的一些人写程序。

    作为一个普通的程序员,我也有过很多普通程序员的困惑。我应该在怎样的公司工作,公司能给我带来什么。我也看到过这样的讨论,我应该进ThoughtWorks,还是进百度。

    其实,所谓这些问题都不是真正的问题。真正的问题是我想做什么。

    100%可以肯定的是,无论哪个公司,有在里面做得怡然自得的,也有在里面做的闷闷不乐的。在ThoughtWorks里面,我们可能接触到各种各样好玩的技术,也可能在一个遗留系统焦油坑里被折磨得死去活来;我们可能参加各种各样有趣的活动,也可能因为没有个“标准”告诉我该做什么而茫然失措;我们可能享受与牛人交流的快乐,也可能被不断袭来的某些反馈弄得心烦意乱。

    所谓机会,哪个公司都有各种各样的机会,只是这样的机会多大程度上能砸到你的头上。不是进了百度,就都能去做搜索引擎,不是进了淘宝,就都能去支持光棍节。你的机会在哪里?在自己。

    很多人通常都习惯于别人把工作安排到自己头上,自己按部就班做就好了,却很少有人想我要做什么,一下子就把自己未来的发展放到别人的手里。遗憾的是,别人没那么关心你,于是,你会很好奇地发现,为什么机会都到别人那里了,自己只有怨天尤人的份。答案除了上司眷顾之外,个人的积极主动占了很大一部分。

    面试的时候,我经常会问候选人一个问题,你未来想做什么?答案当然是各种各样。接下来,我会问,你之前为此做了些什么,这个时候你就会发现,很多人什么都没做。所谓想做什么,真的只是想想而已。

    说起来,公司是我们个人发展的平台。但是,只有在我们为自己的发展做了打算,并付诸努力时,公司才会成为我们的推动力,机会才会不经意间降临在我们的头上。

    遗憾的是,很多人考虑公司考虑的只是报道中的公司,考虑的是自己按部就班能够得到什么。

    回想自己六年ThoughtWorker生涯,公司给我最大的回报是机会。当我想做一些事情时,我只要争取通常都有不错的结果。当我想尝试Rails项目时,我可以;当我想尝试培养新人时,我可以;当我想回归Java项目时,我可以……当然,有时我不得不做一些不那么心甘情愿的事,比如,敏捷咨询,那段时间恰恰是我自己最没想法的阶段。

    相比于很多公司,ThoughtWorks的扁平结构让我们经常有机会把自己的想法和“领导”交流。不知道你上一次和自己公司的大领导是什么时候,我前不久刚和我们的新CEO吃饭聊天来着。交流了,想法得到表达,机会自然也就有了。在ThoughtWorks里,交流是很重要的。

    如果说ThoughtWorks有什么特别之处,在我看来,它让普通员工有了更多实现自己想法的机会。

    最后,讲一个我们“领导”的故事。最近有一条新闻,ThoughtWorks宣布了新的CEO,他就是我们原来中国区的总经理郭晓。。事实上,直到今年年初,郭晓都没想过做ThoughtWorks的CEO。他只是在每次ThoughtWorks全球管理团队一起讨论各种各样的事情时,非常积极,主动承担了很多工作。当大家认为需要一个成为CEO的时候,几乎所有人脑子里面都想到了一个名字:郭晓。于是,他成了ThoughtWorks的CEO,如果我没记错的话,郭晓也是第一个成为跨国外企CEO的中国人。顺便说一下,十几年前郭晓加入ThoughtWorks时,他是一个程序员。