我非韩信,岂敢乱点兵。大将军韩信点兵,多多益善,并非每个大将都能点兵百万,引兵于战场上刀枪厮杀,至少韩信的老板刘邦就最多只能领兵十万,过了十万估计也是力所不及。
有不少人拿软件工程和建筑相提并论,毕竟软件工程和建筑还是有不少类似之处,不过二者也不尽相同,对于软件和建筑的讨论我不再这里多说。今天我从另外一个方向来看软件开发,看看软件工程和军队能不能抽取出点点共性。软件工程和军队的最大共同点就在于集体作战,特别是目前软件行业规模逐渐趋于庞大的势头,个人单打独斗的时代或许不再普遍,所以团队的合作性就和军事中的集团概念类似,用一群人的力量来解决问题。软件工程和军队还有一个共性在于协作性,军队讲究多兵种合作,软件开发也是不同角色共同参与才能完成项目开发工作。
但是对于软件工程中,即便再庞大的项目,参与的人数再多,其项目经理也不可能像韩信一样可以轻易点兵。韩信敢点兵百万,是因为他在作战之前有长时间的操练军队,用他的之军方法提高整个队伍的战斗能力和士气,而后才能出征。但是项目经理没有这个好运,首先项目经理即便用军事化的管理方法来管理项目,但是其本身的性质不一样,所以所谓的管理也只是照猫画虎,有型无神,毕竟项目讲究的效益,而军队讲究的胜利和荣誉。企业很难能够像军队一样,等你把人员都操练好之后,团队成员都磨合的比较完美之后,才让你开始项目工作,往往都是临阵凑人,特别是大项目,散兵游勇者聚集到一起,这样的兵你敢点多少?
有人曾经问过我能够管理多少人的项目团队,我当下没有直接回答,只是笑笑应道:“你能给我什么样的团队?”如果说你遇到一堆让你日日绕头搔耳,痛苦不堪的木头,即便你再有才华,朽木不可雕,这样的团队只要五个估计就会让我华发早生,但是如果我像刘备那样,有关云长,张飞,诸葛亮,赵云等等,你说我即便只是会哭,估计也能管下雄军百万。所以在团队中部在于你能够管理多少,更多在于你合作的成员是那种类型。
在今天早上的项目组的早会上我和大家简单的通报了一下我们将会接手新项目的事宜,等我把下项目的规模和可能的人数刚刚说完,话音刚落,便听到超仔和杰克已经“哇”出声来,脸上的惊叹之余便是磨拳擦掌,一副越越欲试的态势。看着他们的神情我到有点好笑,或许自己几年以前也是如此,在经验缺乏的时候,一个大的项目就是期盼已久的励练,初出茅庐无可畏惧,倒也敢凭一股冲劲去做任何项目。
倒是大师沉默不语,眉头倒微微皱起,听完工数和人员数量之后他用手托起脑袋,闭起眼睛。从大师反应来看,估计他也对项目持有一种谨慎的态度,毕竟这个不是香饽饽的项目,项目越大,风险越大,参与项目可能遇到的问题也就越多,这一点以大师的开发经验来说应该非常了解。
“那我们项目组不就可能Double了,到时候可能就是公司最大的项目团队了。”木子一句无关紧要的话,把话题扯到了项目之外,作为项目组唯一的女生,木子有时候就像调味剂,多少能够给团队带来一点不一样的感觉,或许也印证了男女搭配,干活不累的话语。
“哈哈,你倒看得远。”我笑着回应道,也没有就项目的细节问题再继续和大家深入说明,项目还在合同确定的时期,我们目前只要做初步的准备阶段,所以很多事情还不需要具体分配到每个人那。
我简单地把其余的工作和大伙交待以下,会议便结束。我让大师稍稍等一下,我想和他聊上几句,听听他的看法。
“大师,你对这个项目有什么感觉?”我倒也不需要寒暄,单刀直入问道。
“哈哈。”大师笑了笑,倒也打破了会议上他的沉思之状,反问我说:“你想接着个项目吗?”
“说实话,不太愿意。”我倒也没有避忌,直接回答道。
“嗯!”大师点了点头,说道:“如果搞不好,这是一个坑。项目需要的其他人员怎么协调呢?”
我把开发课的人员安排计划简单的和大师说了一下,他听完之后便又不做声,只是直盯着我看,眼神中带有一股狐狸的狡猾,笑着说到:“你可以带一个大队伍了。”
“哈哈,大师,你别取笑我了,要不这个项目你来管?”
“别,我还缺乏这个能力,还有待学习。”
“你呀你,怎么搞得这么油条。”我笑道,“不过这个项目我也是感觉不是那么容易,项目涉及的人员是一个比较麻烦的问题。”
“我们的人,新人,其他开发团队的人,外驻的人,有点像八国联军。”
“这个项目的技术难度估计不会存在很大的问题,但是如何协调这些人员的合作,还有在这批人员到位的之前,我们需要做一个准备工作,比如说开发模式的统一,编码规范,还有沟通方法的约束等等,我们自己内部的人都好说,都合作这么久,彼此之间的默契都有了,而且都比较了解,我倒没有什么可以担心的。只是如何让刚刚进入的人能够快速适应我们目前的工作方式,这个可能需要我们考虑。”
“嗯。”大师接着我的话往后说道,“按照现在的时间来看,招聘进来的人估计还没有过公司的培训阶段就要进项目组,其他团队的人可能还好一点,我们可以预先了解一下人的个性和能力,外驻估计需要倒项目启动前才能够进来,他们连培训的时间都没有,就直接上手工作。”
大师说的内容我之前也考虑到,我把自己的那时所想的解决方法直接和大师说道:“其实整个项目来说,我们还是需要主要用我们自己的开发人员,对于外驻和其它团队的人员,首先我们需要准备好开发规约和相应的文档让他们来遵守,其次对于开发中的核心部分的开发工作还需要我们自己团队成员来处理,特别不能让交给外驻人员来处理核心业务的开发。对于外驻的开发工作我们需要及时的Review,确保这部分的开发质量,避免等外驻退出后由于这部分出问题造成返工。”
“也只能如此,还是苦了我们自己的人。我们的人还是被推上主力的位置,其他人估计也只是做帮手,搞不好还是炮灰。”
“哈哈,希望他们不是炮灰。”我无奈的笑了笑。
我心目中的理想团队是10人团队,1:2:3:4的分配比例,一个项目经理,2个Senior Enginner,3个Middle Enginner,4个Junior Enginner。对于团队中人员我倒不希望太多,毕竟多了压力就大了,我曾经和别人开玩笑地说道:“如果我的团队有二十个人的话,我迷糊一天,一人/月就没了。”
很多人都在说团队建设,对于软件开发这个群体性的工作来说,团队的确非常重要。有不少的公司采用一种做法,人员池的做法,如果说有项目来的时候,会临时组建项目团队,然后从人员池中选取人员,如果项目结束手,人员再返回倒人员池中,接受培训或则从事内部项目的开发工作。其实这种做法弊端非常大,首先如果说一家公司非常正规的话,公司本身就形成了非常良好的管理氛围,公司文化底蕴也非常深厚,那么这么做倒无可厚非,因为临时组建的团队也能够从公司那里继承下来团队的士气和风格。但是,国内有多少家公司能够有这种底蕴和氛围呢?屈指可数。所以那些临时组建出来的团队往往存在彼此合作缺乏默契,人员沟通不够顺畅,在开发过程中人员都是各自独立发挥个性,缺乏合作意识。所以良好的团队需要有磨合的阶段,在彼此相互了解之后才能够更有效的发挥每个人的特点和特长。
团队的人员该有多少才和什么样地配比比较合理呢?我心目中的理想数值是10人,当然这10个人也不是每个都是大牛,而是按照一定的比例存在,其中Junior的人员还接近半数,因为这是从成本考虑,对于很多项目来说,如果不是非常强的创造性类型的项目,而是一般的商业性系统的开发,那么开发过程中Junior能够做的工作非常多,所以项目人员比例来说,Junior也就比较多。
不过如果从实际的成本角度来考虑的话,很多时候,Senior其实比Junior要便宜得多,老板可能看了会吐口水说道:“你知道一个Senior的工资要比Junior高多少吗?”Senior的工资的确比Junior要高,但是Senior的工作效率和工作质量比Junior要高得多,往往Senior的产出可能是Junior的2-3倍。
所以对于团队成员来说,我也梦想每个都是Senior级别,要精不要多,但是现实不是如此,所以我就在这个中取一个权衡,虽然不是个个都是精英,但也要他们在各自级别上都要突出,即便是Junior级别,也应该是这个级别上优秀的人员。而不是来者不拒,多多亦善。
本文转自小余(Yice)博客园博客,原文链接: http://www.cnblogs.com/yice/archive/2009/04/14/1436079.html ,如需转载请自行联系原作者