寻找优秀的程序员之实战指南

注:此文选自《软件随想录:程序员部落酋长Joel谈软件》,作者:Joel Spolsky。

你是一个雇主。你在所有正确的地方刊登了招聘广告,你有一个完善的实习生制度,你面试了所有你想要的人。但是很不幸,如果优秀的程序员不愿意为 你工作,你就无法把他们拉来工作。不要着急,现在就介绍如何使优秀程序员愿意为你工作。我将谈谈优秀的程序员想要什么,还有在工作环境中他们喜欢什么和不 喜欢什么,以及如何使你的公司成为顶尖程序员的头号选择。

私人办公室

去年,我到耶鲁大学参加一个计算机会议。一位发言者是硅谷老手,创建和领导过一长串公司,无一不是风险投资加盟的著名创业公司。他拿起一本名叫《人件》 (Peopleware)的书,该书作者是 Tom DeMarco 和 Timothy Lister。

“你们一定要读这本书,”他说,“这是如何管理软件公司的圣经,是这方面目前最重要的书。”

软件随想录:程序员部落酋长Joel谈软件
软件随想录:程序员部落酋长Joel谈软件

我不得不说,我很同意《人件》是一本伟大的书。书中最重要和最具争议性的观点之一就是,如果你要让程序员高效工作,你就必须给予他们安静和宽敞的工作环境,比如说私人办公室。该书作者不厌其烦地强调这个观点。

他的发言结束以后,我走到他的面前。“我同意你对《人件》的评价,”我说,“请告诉我,在你所有的创业公司中,你的程序员有没有独立的办公室?”

“当然没有,”他说,“风险投资家永远不会这么激进。”

原来如此。

“但是,这可是那本书中头号最重要的观点。”我说。

“说是这样说,但是你必须有所侧重。对于风险投资家来说,那样做看上去有点像是乱花钱。”

大量证据表明,给予程序员独立的办公室会显著提高他们的工作效率。我在自己的网站上也不断重复这一点。但是尽管如此,硅谷的流行做法却是要求创 业者将大量程序员塞进一个巨大的开放空间中。我无法真正地说服大家,虽然我觉得应该还是可以说服的,但是因为程序员多多少少喜欢和大家待在一起,即使这样 会降低效率也无所谓,所以说服工作不是那么容易的。

我甚至听到过有的程序员说这样的话:“对,我们都在小隔间中工作,但是所有人都是这样,甚至包括 CEO 在内!”

“CEO?他真在小隔间中工作?”

“是这样的,他的确有一间小隔间。但是既然你问到了,我就都交待了吧。实际上,他还有一间大会议室,所有重要的会他都到会议室里面开……”

没错。这种大模大样的作秀在硅谷相当常见,CEO 装得像平头老百姓一样,在一间小隔间里工作,但是某处还有那么一间会议室,他往往会占为己有。(虽然他解释“只有讨论不能公开的事情,才会使用会议室”, 但是当你经过那间会议室,有一半的时间,你会看到你的 CEO 在里面,独自一人,通过电话与他的高尔夫球伙伴侃侃而谈,把他穿着 Cole Haans 名牌皮鞋的脚搁在会议桌上。)

但我在这里不想老生常谈了,不想讨论为什么私人办公室可以让程序员更有效率,为什么戴上耳机隔绝噪音被证明会降低程序员的工作质量,以及为什么 为程序员提供私人办公室并不会真地花费特别多的钱。这些事情我以前都谈过了。今天,我要谈的是招聘,还有私人办公室对招聘的影响。

不考虑效率问题,也不考虑工作环境中的平等问题,有两件事是确凿无疑的:

(1) 私人办公室意味着更高的地位;

(2) 小隔间和其他共享的空间会带来某些尴尬和不便。

正是因为存在这样两个事实,所以基本判断是:如果提供私人办公室,程序员就有更大的可能接受你的工作邀请。如果这间办公室有一扇可以关上的门,有一扇窗,有良好的视野,就更好。

但是在现实中,很不幸,这些可以让招聘变得更容易的事情不是你的职权所能控制的。如果 CEO 和创始人听命于风险投资家,那么甚至连他们也无法拍板提供私人办公室。大多数公司每隔5到10年才搬一次家,或者重新安排办公空间。那些小型的创业公司也 许根本就没有能力提供私人办公室。所以,我的经验是,除了那些最开明的公司,其他所有公司都会搬出一大堆的借口,使得程序员几乎毫无可能得到一间私人办公 室。即使是在那些最开明的公司也有可能会出现这种情况:这些公司有一个由行政经理秘书和来自一家大型建筑事务所的初级合伙人组成的决策委员会,他们每隔 10年就要开会,决定公司新的办公地点和办公条件,而且这些人更乐于相信课本上的童话,什么开放性的空间意味着开放性的公司之类的。程序员或者开发团队的 意见基本上对这些人是零输入。

这种事情有点太不像话了,我将继续为了自己的信念而战。但是与此同时,私人办公室不是不存在的,我们就设法做到了这一点。在绝大部分时候,我们 所有的专职程序员都有自己的私人办公室,而且是在纽约城,全世界办公楼租金最高的地方之一。毫无疑问,这使得人们更愿意在 Fog Creek 工作。所以,要是你们所有人还是坚持老一套的做法,随你们的便,我就让这一点成为我的竞争优势好了。

工作环境

比起私人办公室,工作环境有更多的话题可供谈论。当一个应聘者在面试的那一天来到你的公司,他们肯定想多看看里面的人是怎么工作的,并且设想他 们自己在这个环境中工作会怎样。如果工作环境让人感到很愉快,有一种生机勃勃的感觉,办公楼坐落在一个良好的社区,所有东西都是崭新干净的,那么他们就会 产生一些愉快的畅想。如果工作环境很拥挤,地毯脏兮兮的,墙壁也不干净,到处贴着赛艇队比赛的图片和大幅的“团队精神”的标语,那么他们就会有一种看呆伯 特漫画的感觉。

许多技术人员对自己办公室的基本状况麻木得惊人。事实上,如果办公室稍作改进,有些人马上就能从中受益,但是即使如此,那些人可能也已经对自己办公室的某个明显缺点熟视无睹了,因为他们早已司空见惯。

请你站在求职者的位置,设身处地地想一想。

1. 他们会怎么评价我们所在的城市?布法罗听上去同其他城市(比如奥斯汀 )相比怎么样?应聘者愿意搬到底特律吗?如果你本人住在布法罗或者底特律,你会不会不愿意在9月份进行大量面试?
2. 当他们进入办公楼后,会有怎样的感受?他们看到了什么?是不是一个干净而且让人感到兴奋的地方?大楼有没有一个漂亮的中庭,里面有生意盎然的棕榈树和喷泉吗?还是让人觉得像一个贫民区中的公立牙科诊所,到处是枯黄的盆栽植物和过期的旧杂志?
3. 办公室看上去怎么样?是不是每样东西都是崭新明亮的?或者签到的时候,你们有没有用那种一整张的、发黄的、很不正式的员工资料登记表格?那种表格是用点阵式打印机打印在折叠式的连续打印纸上的,这些东西让人觉得恍若隔世。
4. 办公桌看上去感觉怎么样?程序员用的是多屏幕的液晶显示器还是一个大块头的带显像管的 CRT 显示器?程序员的椅子是 Aerons 出品的名牌电脑椅还是 Staples 品牌打折时的便宜货?

 

关于 Herman Miller 设计的著名的 Aeron 牌电脑椅,请让我在这里多说一句。这种椅子的价格是每把900美元,比办公用品连锁超市 Office Depot 里卖的便宜货或者 Staples 牌贵出800美元。

Aeron 牌电脑椅比那些便宜货舒服得多。如果尺寸正确,并且调节到最合适的位置,那么大多数人坐一整天都不会感到不舒服。靠背和坐垫都被设计成网状形,空气可以自由流通,所以坐着不会捂汗。这种椅子包含了第一流的人体工程学设计,尤其是那些带有腰部支撑的新型号。

它们比便宜的椅子更经用。我们公司开业已经6年了,每一把 Aeron 牌电脑椅差不多都还是崭新的,我赌你分不出哪些是我们在2000年买的,哪些是我们在3个月前买的。它们的使用年限可以轻松地超过10年。而那些便宜货在 买了几个月后,上面的零件就开始松动了。一把 Aeron 牌电脑椅的寿命至少抵得上4把那种100美元的椅子。

所以结果是,买一把 Aeron 牌电脑椅,每10年只多出500美元,也就是每年多出50美元,相当于在每个程序员身上每星期多支出1美元。

一卷上等卫生纸的价格大约是1美元。你的程序员每人每星期大概会用掉一卷。

所以,将电脑椅升级到 Aeron 牌,多出的花销与你花在程序员的卫生纸上的开销大致相等。但是,我可以向你保证,如果你把卫生纸的支出拿到预算委员会上讨论,你一定会被严厉地呵斥不要捣乱,还有许多更重要的事需要讨论。

很不幸,Aeron 牌电脑椅同奢侈铺张的坏名声联系在了一起,尤其是对于创业公司来说。它甚至成了某种象征,代表了在互联网泡沫时期所有被胡乱花光的风险投资。这真是可惜, 因为考虑到经久耐用的寿命,它其实不是非常贵,尤其是你要想到,每天有8个小时你坐在上面。即使是带有腰部支撑和后部平衡装置的顶级系列的型号,也可以说 是便宜得要命,你购买它们实际上是赚到了。

玩具

同样的逻辑也适用于其他程序员的玩具。就是因为这个原因,所以没有理由不给你的程序员配备顶级电脑,至少两块大(21″)液晶屏幕(或者一块是 30″),不给他们设置上限,让他们可以自由地在 Amazon.com 上订购任何他们想要的技术书籍。这些都会带来很明显的效率上的提高,但是更重要的是,对于我们在这里讨论的问题来说,它们是招募优秀程序员的杀手锏,特别 是在这样一个大多数公司都将程序员视作随时可以替换的齿轮或者打字机的世界中。真的,他们会质疑为什么程序员需要这么大的显示器,15″的 CRT 显示器有什么不好?他们甚至会说起当年他们小的时候……

程序员的社交生活

程序员与普通人并不是真地有那么多不同之处。当然,我很清楚,如今很流行将程序员看作埃斯柏格综合征患者,行为刻板、呆头呆脑,在人际交往中表 现得很不协调。但是,这不是事实,哪怕有些程序员真患有埃斯柏格综合征,他们也很关心工作场所中社交性的一面,这包括以下内容。

程序员在组织中如何被对待

他们被当作明星,还是被当作打字员?公司的管理层是不是由工程师和曾经的程序员组成?程序员外出参加会议时,坐的是不是头等舱?(我不在乎这样 是否像在浪费钱。明星坐的就是头等舱。请习惯这种做法。) 他们飞过来面试的时候,有没有豪华轿车在机场等着接他们?还是说,他们得自己想办法到公司?如果其他条件都相同,程序员就会选择去一个对待他们像对待明星 一样的公司。如果你们公司的 CEO 以前是干销售的,并且什么都看不顺眼,他就很不理解那些娇滴滴的程序员,为什么一直要求发放诸如腕垫、大屏幕显示器、舒服的座椅这一类的东西,这帮人以为 他们是什么?如果你们的公司是这种样子,那么就需要调整态度了。如果你不尊重程序员,你就不会得到优秀的程序员。

谁是他们的同事

面试的那一天,程序员会密切关注他们遇到的那些人。他们待人是否友善?以及更重要的,他们是否聪明?曾经有一年夏天,我在贝尔通信研究所当实习 生,那是贝尔实验室的一家子公司,我遇到的每一个人都不断地、一遍又一遍地跟我说同一件事:“在贝尔通信研究所工作,最美好的事情是这里的人。”

这表明,要是你手下的程序员中有人脾气火暴爱挑剔,如果你不能摆脱他们,至少不要让他们在面试场合出现;要是你的程序员中有人性格活跃、喜欢社 交和组织集体活动,一定要让他们在面试中现身。你要不断提醒自己,当求职者回到家中时,他们必须做出决定去哪里工作,如果他们遇到的每个人都面色阴郁,他 们对你的公司绝不会有一个好印象。

顺便说一句,Fog Creek 软件公司原先的招聘理念是从微软公司抄袭来的,只有两点:聪明,并且能够完成工作。但是,甚至在我们开始运作公司前,我们就意识到应该再加上第三点“不收 怪人”。回想起来,在微软公司的时候,是不是怪人其实不是录取新员工的必须要考虑的事。虽然,我相信微软公司在口头上一定说,与其他人融洽相处是多么多么 重要,但是实际情况是他们从来不会因为某人很古怪就否决了他的录用资格。事实上,有时候,古怪反而是进入微软公司高级管理层的先决条件。虽然从公司运营的 角度看,这不会造成太大的影响,但是从招聘的角度看,它确实会产生负面影响:谁愿意在一家需要忍受怪人的公司里工作呢?

独立和自主

回想1999年的时候,在创办 Fog Creek 软件公司之前,我辞职离开 Juno 软件公司,人力资源部约我进行一次很标准的离职谈话。我不知怎地就落入了陷阱,将我对公司管理上的种种不满都告诉了人事经理。虽然我很清楚这样做对我绝无 好处,实际上只有坏处,但是我最终还是做了。我对 Juno 公司最大的不满是那种抽风式(hit-and-run)的管理风格。你们瞧,大多数时候,管理层对程序员完全不闻不问,将程序员扔在那里,让他们静悄悄地 完成工作。但是,偶尔公司经理本人也会介入,追问一些极其微小的细节,坚持一定要百分之百按照他们的方式做出来,不许有任何借口。接着,他们又转向其他方 面的细节问题,每个问题关注的时间都很短,短到来不及看到按照他们要求做出来的可笑结果。举例来说,我记得有两三天让人特别恼火,从我的上级经理一直到 CEO,都跑来跟我说,怎么才能符合要求地填写 Juno 公司员工资料登记表格的日期栏。他们没有受过用户界面设计师的专门训练,又不肯花时间同我就这个问题交换意见,搞清楚为什么说在那个特殊情况下我恰好是正 确的。不过这些都不重要,重要的是管理层根本不愿意屈尊同属下讨论问题,甚至不愿意花时间听取我的论点。

基本上,如果你要雇用聪明人,你就必须让他们在工作中发挥技能。管理层可以提出建议,而且这样做是受欢迎的,但是他们必须极端小心,不能让他们 的“建议”被视为命令,因为不管是什么技术问题,经理们知道的很可能不如在壕沟里干活的工人们,尤其是正如我前面说过的,你雇用的都是聪明人的话。

程序员希望自己之所以被雇用,是因为自己的技能,希望被别人当成专家那样对待,有权力在自己的专业领域中做出决定。

不搞政治

老实说,只要有两个以上的人待在一起,就会有政治。这很自然。我说“不搞政治”的真正的意思是“不搞恶性的政治”。程序员早就练出了对公正有非 常良好的判断力。代码要么能运行,要么不能。坐在那里争论代码是否有问题,这是毫无意义的,因为你可以运行代码,答案自然就有了。代码的世界是非常公正 的,也是非常严格有序的。许许多多的人选择编程,首要的原因就是,他们宁愿将自己的时间花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要 你是对的就能赢得任何争论的地方。

如果你要吸引程序员,你就必须去创造出这样一个环境。当一个程序员抱怨“人际关系复杂”时,他们的意思明白无误,就是指任何个人因素超过技术因 素的环境。程序员在完成手头任务时,不被允许使用最合适的编程语言,而是被命令只能使用另一种特定的语言,原因仅仅是老板喜欢这种语言——没有什么比这更 让人气愤的了;晋升的原因不是成果,而是人际关系——没有什么比这更让人抓狂的了;程序员被迫去做技术上落后的东西,仅仅因为上级或者得到上级支持的人坚 持这样——没有什么比这更让人发火的了。

没有什么比因为技术原因赢得一场由于政治原因本来要输掉的争论更让人心满意足了。当我在微软公司刚开始工作的时候,有一个正在开发中的大型项目 走入了歧途,项目的代号是 MacroMan,目标是创造一种图形化的宏语言。真正的程序员遇到这种语言会很有挫折感,因为图形的特性让你真地没有办法完成循环和条件判断功能。此 外,对于那些非程序员的用户,这种语言也不会有很大作用,因为我觉得那些用户不会习惯算法思维,没有办法很快地理解 MacroMan。当我说出对 MacroMan 的负面评价时,我的老板告诉我:“火车跑起来就刹不住了。算了吧。”但是,我还是不放弃,一再地不断地争论。那时我刚走出学校,在微软公司中差不多跟谁都 没有利害关系,所以,渐渐地,人们开始倾听我的核心观点,MacroMan 后来终止开发了。我是谁并不重要,重要的是我是对的。非政治性的组织就应该这样,这种组织才会让程序员感到高兴。

总的来说,关注你的组织的社交动态变化,对创造一个健康的、令人愉悦的工作环境是很关键的,这样可以留住程序员和吸引程序员。

我干的是什么活

一定程度上,让程序员干有趣的活是吸引优秀程序员的最好方法之一。但是,这可能是最难改变的事情。请试想,如果你很倒霉地在为沙土行当写软件,跟石头和沙子打交道,这就是你的行业,那么你无论如何也没法装得像某些互联网创业公司一样酷,靠这个吸引程序员。

另一类程序员喜欢干的活是开发一些非常简单或者非常流行的东西,这种东西足以让他们在感恩节那一天向艾玛婶婶解释清楚。而艾玛婶婶当然对沙土行当中的 Ruby 编程并不怎么懂,因为她是学核物理的。

最后,许多程序员也会关注他们服务的公司的社会价值。在社会化网络公司(social networking)和网志公司工作,可以帮助人们交流沟通,看上去也不会造成污染,所以这种公司受欢迎。军火公司和那些不道德、充斥着会计欺诈的公司就非常不受欢迎。

很不幸,在这方面,我真不确定我有办法给那些一般的招聘经理出主意。你可以尝试改变一下产品线,制作某些很“酷”的东西,但是这样不会长期有效。不过,我看过一些公司在这方面采取的举措。

让一流的新员工挑选他们自己的项目

多年以来,甲骨文集团有一个叫做 MAP 的计划,也就是“多选择性计划”(Multiple Alternatives Program)。这个计划针对各个班级中甲骨文认为最好的高校毕业生。计划中的安排是让他们来甲骨文,花上一到两个星期到处看看,访问所有缺人的开发小 组,然后让他们选一个自己想进去工作的小组。

虽然也许对这个计划的效果我没有甲骨文的人清楚,但是我觉得这是一个好的计划。

使用非必要的热门新技术

纽约的那些大型投资银行被认为是相当艰苦的程序员工作环境。那里的工作条件很可怕,大量的连续加班,嘈杂的环境,咆哮的上司。程序员是千真万确 的三等公民。而与此同时,一群狂热的类人猿在那里操盘买卖金融工具。这群类人猿是公司里的皇室,拿着高达3千万美元的分红,公司里所有的汉堡包他们都可以 吃(经常是让碰巧在旁边的程序员递给他们)。不管怎么说,这些都是陈规陋习,所以为了留住最好的程序员,投资银行有两个策略:一个是给程序员发一吨的钞 票,另一个是给予程序员完全的自由,允许他们使用自己想学的任何最新热门编程语言,不断地一遍又一遍重写每件东西。想把整个交易程序用 Lisp 语言重写?随你的便。帮我再拿一个该死的汉堡包过来。

一些程序员固执于他们正在使用的编程语言,但是,大多数程序员很高兴有机会使用令人激动的新技术。现在的热门大概是 Python 语言或者 Ruby on Rails,三年前是C#,再以前是 Java。

在这里,我不是让你不要用最好的工具完成工作,我也不是让你每两年就用热门语言重写一遍程序,我只是在说,如果你能找到办法让程序员有接触新的 语言、框架和技术的经历,那么他们会感到更开心一些。即使你不敢为了学习的目的用一种新语言重写核心程序,那么有没有可能重写你们使用的内部工具,或者其 他不关键的新应用程序呢?

我能够认同公司吗

大多数程序员工作不是为了谋生,他们要的不是一份“朝九晚五”的工作,他们要的是工作所能带给他们的意义。他们想要认同他们的公司。年轻的程序 员尤其会被有理想有抱负的公司所吸引。许多公司与开源运动或者自由软件运动(两者不是一回事)都有一些联系,这使得它们能够吸引那些具有理想主义倾向的程 序员。另外一些公司与非营利性的社会事业有关系,或者制造的产品被视为和用于造福社会。

作为一个负责招聘的人,你要做的是找出你的公司中理想主义的一面,确保招聘对象了解它们。

一些公司甚至努力在创造它们自己的理想主义运动。芝加哥的创业公司37signals 就强烈地认同简单的东西,所以他们开发像 Backpack 那样简单、容易使用的应用程序,以及像 Ruby on Rails 那样简单、容易使用的开发框架。

对于37signals 来说,简单已经成为了一种主义,实际上是一种国际政治运动。简单不仅仅是字面上的含义,哦,不,它是夏日的时光,它是优美的音乐,它是和平,它是公正,它 是幸福,它是头发上插着花的漂亮姑娘。Rails 开发框架的创造者 David Heinemeier Hansson 说,他们的故事是“一个关于美、幸福和激励的故事。从你的工作和你的工具中享受乐趣,并为它们感到自豪。这个故事并不仅仅是一种时尚,而是一种趋势。这个 故事使得像激情和热诚这样的词不用找借口就能成为程序员自己所认同的词汇。你再不用为喜欢自己的工作而感到尴尬了” (www.loudthinking.com/arc/2006_ 08.html)。将一个互联网编程框架上升到某种“美、幸福和激励”,可能看起来有点像说大话,但是这确实非常有感染力,的确使得他们的公司与众不同。 他们把 Ruby on Rails 说成是一种幸福,并且向外推广这种观念,这实际上保证一定会有某些外部的程序员想来找 Ruby on Rails 方面的工作。

但是,在这种自我认同的管理方法(identity management)潮流中,37signals 资历尚浅。如果比起苹果公司,他们连在旁边(为明星)举蜡烛的资格都没有。1984年的美式橄榄球超级碗决赛时,苹果公司播出了一支广告。 从那时起一直到今天,它一直在加固自己反对传统文化的形象:追求自由,反抗独裁;追求自我,反抗压迫;追求色彩,反抗单调。就像广告里的内容一样,苹果公 司是一个穿着明亮的红色运动短裤的漂亮姑娘,奔跑着穿过身着制服被洗过脑的人群。但是,我不得不说这里面的含义其实是奥威尔式的反讽。巨型公司用一种不合 理的方式操纵它们的公众形象——嗯,比方说,他们是一家计算机公司,那么与反抗独裁有什么关系呢?真是活见鬼——成功地创造出一种自我认同的文化,使得全 世界各地购买计算机的用户感觉他们买的并不仅仅是一台计算机,觉得自己通过购买而参加到了一场运动中。当你购买一台 iPod 时,你当然是在支持甘地反抗大英帝国的殖民主义统治。每一台被卖出的 MacBook 都表达了一种反抗独裁和饥饿的立场!

好了,不说了,深呼吸……这一部分的真正用意是,思考你的公司代表了怎样的追求,这种追求是怎么形成的,又是怎么才能被别人感受到。管理好你的公司的品牌不仅对营销很重要,对招聘新人也同样重要。

程序员不在乎的一件事

他们实际上不在乎钱,除非你在其他事情上搞砸了。如果你开始听到有人在抱怨薪水,而以前并没有出现这种情况,这经常就是一种信号,表明人们并不 真地喜欢他们的工作。如果你想雇的新人提出高得离奇的薪水要求,并且不愿意降低,那么你可能遇到的是这样一种情况,那些人心里想:“好吧,如果不得不接受 这份糟糕透顶的工作,那么我至少应该有一份优厚的报酬。”

我们说程序员不在乎钱,并不意味你可以向他们支付低工资。因为程序员对公正公平是在乎的,如果他们发现同工不同酬,或者他们发现自己公司每个人 的薪水都比街对面同样的公司低20%,他们会被激怒的,然后,突然之间,钱就将成为一个大问题。你必须支付有竞争力的报酬,但是让我们这样说,当程序员决 定去哪里工作时,在他们考虑的所有因素中,报酬的位置低得让人吃惊,前提是薪水必须基本合理。同样让人吃惊的是,如果你的公司里有这样的问题,比如程序员 用的是15″显示器,整天都有销售人员对着他们吼,他们的工作是猎杀小海豹、制造核武器等,那么向他们提供高薪水并不是一个有效的工具,并不足以克服这些 问题,吸引他们加入你的公司。

收藏 1 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部