建立“杀手”开发团队
作者: BUILDER.COM
本文从ZDNet转载
2002-5-8
建立强大的软件开发团队可不是一个轻松的过程。经过一番折腾,也许队伍中的某些人会去坐冷板凳,弄得不好还可能需要重造全新的团队。你得点燃自己的三把火、雷厉风行地做决定同时给自己定下成败的标准。在组织你的团队时一定要有一个清醒的头脑,一定要讲策略。由于多次遭遇以上的状况,促使我开发出了一整套规则,通过它们帮助我成功地组织团队来成功地交付高质量的创新软件。
按NFL的样子打造
有NFL(美国橄榄球联合会)充做样板你就不必重新起草队伍的创建蓝图,按照橄榄球运动的术语来说,如果你需要一个四分位,但是在设计阶段可用的最佳运动员却是外接员,那么尽可接受外接员。对软件开发团队来说,你应该寻求你能找到的、最聪明的开发者,而不必非得找个具有特定工作技能的开发人员。什么叫聪明人?聪明人就是不仅仅只会编写代码的人,他们能作出的贡献多了去了:他们可以给你提供想法,修正错误,增加成功可能性。别误解我,如果你的工程具有特殊的要求,需要的技能比较冷门——很少有人或者不太容易掌握,那么你需要雇用掌握这些技术的人中最聪明的人。但是总的来说,不但聪明而且能对整个系统具有非凡洞察力的软件开发者所做出的贡献往往比那些仅仅编了几年代码的人要多得多。
尽一切可能找到紧跟最新技术的潜在团队成员
我对大多数招聘面试缺乏深度感到难过。在许多情况下,如果候选人能说最流行的缩略词(比如XML、HTTP或者SOAP等),他或她多半就能得到一份好工作。我对这种做法感到很不满意。我相信,招聘面试一定要认真准备,要通过面试找到具有真本事的开发者,这非常重要。我的办法是进行白板测试,也就是说,给候选人一只笔,要他或她真正解决一个问题。有时那个问题可能是一个代码编写方面的问题;有时则可能是算法方面的讨论。问题描述通常要有足够的模糊性以便能产生讨论,从而令你对候选人具有更多、更深入的认识。
在这种情况下,候选人会受到一定的压力,没点真工夫可不敢上这台子的,同时你也得到一个非常好的机会了解他们在这些情形下的表现。这种办法可以帮助你找到最聪明的人。
互相帮助
在组织队伍的时候,在队伍中包含同你的技能互补的人员是极其重要的。如果你是一位技术型的项目经理,那么你可能得找些具有组织能力的人员。如果你是非技术型的经理,那么你可能得雇用些技术娴熟的人员。这一办法是不分层次的。在开发团队的各个级别上,那些起领导作用的人都应该找些同其技能互补的人员围绕在自己的周围。就我的情况来说,我在技术上是把好手,但专业是软件体系结构的设计。为了弥补我的技能,我找了些能在设计时更面向细节的人员。我还找了些非常在意工程截止时间而且能推动其他人保持正常开发途径的职员。这就是团队建设的关键所在——技术互补。
别怕仅次于你的人
这可能牵扯到其他方面的问题。但是,只要他们能具有与相应的贡献所匹配的应有态度,那么我也并不在乎自己的开发团队中还有第2个灵魂人物。作为开发工作的管理人员,我的工作就是摆平障碍、让所有的人都能朝正确的方向前进。我总是希望额外的努力能令我们的队伍获得最终的成功。作为我的一个习惯,我提醒新员工们他们将全身心地投入到软件开发的工作中;在我的团队里,任何颐指气使却什么都不干的家伙是绝对不能容忍的。
个性的创造力
Garry Trudeau曾经在早期Doonesbury卡通节目中评论说,乱纷纷的橄榄球队同幼儿园里的哲学别无二致。开发团队同样如此。期望每个人都会乐于同其他人一起生活是不现实的。事实上,如果你的队伍里从来没有出现过什么“另类”或者与众不同的人是绝对有问题的。如果什么事情都很顺利,既不需要严肃的讨论也不需要必要的争论,那么你的团队不可能产生获得真正成功所必需的创造性。最好的团队中的成员会对他们的工作和想法引以为豪而且不会害怕把这些思想表达出来。你要保证团队内部的争论处于受到控制的状态下,但是必须尊重新想法和从来没有想到过的任何新概念。
别做小气鬼
在购买设备或者新工具的时候,我总会对购买的事物和提出购买请求之后的原因进行评估。如果这些采购价格便宜而且购买请求也有一定道理,那么我通常都会批准购买请求的。为什么呢?总的来说,开发者就是喜欢新工具(我也是!),如果有人觉得有个好东西既然那么便宜而且又能帮助他们提高自己的工作效率,那么它几乎就肯定能提高他们的工作效率而不论这些工具是不是真的名副其实。
如果购买标的比较昂贵,那你可得好好讨论讨论了,别让提出请求的人在会谈之前交给你书面的理由。你应该理解他的请求然后寻求替代措施,讨论其利弊。如果你能公平地对待他们的要求就如同对待自己的要求一样,那么你的团队将更尊重你。
做消防队员
所有的软件开发工程都存在问题。如果你想获得最终的成功,在问题发生的时候,你需要有足够的能力解决问题。我的忠告是,如果可能,最好卷起袖子亲自深入问题。如果这个问题对你来说太难以处理,那么你不妨寻求其他援助。我曾经亲自打开调试器测试程序找出问题所在而赢得了团队成员的尊重。别坐视火焰的蔓延,别期望它们能自己熄灭;否则最终迎接你的将是不可收拾的森林大火。严重的错误、系统崩溃、内存储漏洞和不稳定的代码,这一切都是非常严重的问题需要你立即采取行动。它们会妨碍你的团队成员按时完成他们工作。扑火一定要快!
记住每个人的成功
什么叫团队精神?记住,只有队伍中单个成员是成功的这个队伍才是成功的。每个人都必须为成功做出自己的贡献而且为此得到承认。只有在他们付出的努力能达到承认的情况下,他们才能保持最佳的感觉。只有把个人的贡献集合在一起才能把工程推向成功。作为一个项目管理人员,你一定要保证每个人都是成功的。这就是说,你必须确定每个人都期望能付出什么,而且要找出这个队伍中最出色的成员,奖励他们做出的成绩。
面对问题迎头而上
许多经理人趋于避免冲突和麻烦的问题,但是我相信,成功的开发团队是敢于面对问题的。回避冲突会导致某些成员只满足于做最少量的必要工作。我比较喜欢那些其成员敢于互相挑战从而把工作做得更好的队伍,这样的结果往往就是成功,只有这样的队伍才能开发出软件精品。