如何提高团队协作效率
------通过合理的团队组合提高团队协作效率
1 引言
从进入软业件行业开始我就认为该行业是一个与众不同的行业,与高科技华丽词汇的外表相对比的是软件项目的高失败率。这些年间,我经历了简单的信息管理系统项目、臃肿的ERP系统项目、奇怪的办公自动化系统项目、复杂的引擎类系统项目后,我一直抱着"怀疑与否定"的心态尝试着各种方法,试图的在我认知范围内得到最佳实践和方法。在这个过程中经历了不少失败与思维的升华。 软件的高失败率是业内人士广为头疼的问题。也说明了为什么我们用从传统行业中学到的项目管理方法来管理软件项目不是那么有效。但我认为每个行业都有它的特殊性,软件行业就是软件行业,它和其他行业是不能类比的和方法套用。我需要正视这种特殊性,我们需要拨开混沌的迷雾。布鲁克斯的“没有银弹论"是真实的,让我对抱以怀疑与否定的心态去使用这些方法,直到找到软件项目真正的规律。所以我认为软件开发的高效率和成功的关键在于团队成员能力、以及团队组合的合理性。
2 优秀团队与高效协作是成功软件的源动力
软件行业与传统行业相比有着非常的明显的不同。制造或建筑行业等属劳动密集行业,他们有大量的材料、设备等成本而人力成本只占产品的很小的一部分,所以由人造成的影响相对较小。而软件行业则属于知识密集型行业,软件项目完全是智力产物,大量的不可见成果,软件项目70%以上是人力成本, 所以说团队在整个软件项目生命期起着非常关键的因素,那么团队成员的能力和协作效率自然形象了软件进度和成败。在这里要探讨的是如何在有限的资金下建立相对优秀的团队来高效率的完成软件项目。
优秀团队的定义
优秀团队的定义应该是个相对概念,是应该放在某个上下文中来谈的。优秀不是团队每个人都是优秀人才,而是针对当前公司资源情况和将要完成的项目类型来建立相对优化的团队组合,即这个优秀团队指定的是团队组合的优秀。这就好比《西游记》中的“唐僧团队”,团队中并不是每个人都是孙悟空,同时我们并不要求“唐僧团队”能完成任何项目,但对于“取经”这个项目他们是最优秀的就行了。这里将引出我会在后边将要阐述的概念“组建合理的团队”。
3 组建合理的团队
设计项目组结构时我们不能照搬别人的经验,应该充分考虑所面对项目的规模,项目的类型,人员的素质,公司环境等因素,并且在实践中逐步让它运行良好。说到这里我要说明的是即使在同一个公司里不同的项目类型也应采用不同设计的团队结构,除非公司的每个项目都非常的相似,否则极易出现团队协调上的问题。
组织团队是首先我们应该明确软件团队的责任制的问题。在软件项目中有两个角色(注意这里指的是角色而不是职位和人)。一个角色对项目管理过程(成本,时间,范围)负责即项目管理者,另一个对产品(功能,技术,结构)本身负责即架构师。在《人月神话》一书中对此详细的分析后提出三种方式:
l 项目管理者,架构师由一个人担任的负责方式
在项目团队规模较小时,1-5人这个范围中一般采用负责方式,因为团队较小,协调适宜相对较少,那么由一个人完全可以胜任。 很多长远的科研项目同样适用这样的方式,该项目的目标方向具有不明确性以及高技术风险那么对研究方向专业知识的丰富将很大程度影响项目的成败,那么很多时候采用某专家领导科研小组的方式进行研究。
l 架构师为主,项目管理者为辅的项目负责方式即架构师负责制。
在项目团队规模在6-25人时一般可以采用这种负责方式,这种团队规模理论上仍无需专门的项目经理,但随着项目成员的增多,会使架构师分心,那么为其配备一位项目助理来整理质料、计划排序、分析成本、应付客户完全可以最高效的发挥团队的潜力。该种方式即<人月神话>推崇的手术医生式的团队。 电影拍摄中导演也是典型的这样的角色(制片人、监制属于高层经理)
l 项目管理者为主,架构师为辅的项目负责方式即项目经理负责制
当团队规模在25人以上是那么资源协调类的工作将以成倍增加,同时人员的协作、资源调配、客户关系、沟通等方面将成为影响团队的核心因素那么专门的项目经理则显得尤为重要,而产品设计以及技术责任方面的将由他的架构师负责。 大型应用项目,产品开发,大型系统集成项目,特别是涉众多,涉及领域广,多个企业合作的情况均采用这种方式。工程建筑是项目经理制的最佳体现。 同时这也是在国内最滥用的组织方式。
确定了责任制后,那么我们应该要明确团队成员有哪些角色,在一般情况下一个完整的软件团队有如下角色:项目管理者,架构师,功能设计师,程序设计师,测试工程师,软件配置管理人员,文档支持人员,技术支持人员,产品发布人员,这些角色可以剪裁也可以合并,也可以另设某类角色的组长。各种角色映射为哪些职位以及怎样一种协作方式,这样看不同组织的设计了,在这里就不作一一列举了。但在这里要强调的是在软件项目中明确架构师的职责是非常重要的,架构师保证了软件功能和技术的一致性,这是导致项目成败的一个不可忽视的重要因素。
4 把合理变为优秀
何谓优秀,优秀既是非常的好,超出了我们的预期。合理的团队组建好后这仅仅是有了基础,要把合理变为优秀还有很长一段路要走。团队建立初级必然会有一段混乱的阶段,这称为磨合期,在团队领头人的正确带领下,团队会很快经过这个阶段,成员之间会形成一定的默契,使得项目工作能很好的推进。作为团队领导人赶紧要做的是建立团队荣誉感如制作统一体恤,团队代号,团队作战室等,使团队每个人产生归团队属感。在整个团队成长的期间除赏罚分明外,需要领导者亲临亲为营造一种平等的讨论氛围。让每个人都敢于说出自己的看法。不管对错团队领导者都要给敢于说话的成员给与鼓励。不要认为在会议桌上放点零食不好的,这恰恰是让团队成员放松警惕而信任对方的好办法。用一切资源鼓励敢想敢做且取得成功的人,同时对于失败者也要接受,但必须让他总结失败。记得在紧张工作之后定期组织你的团队进行户外活动是非常必要的。在这些都做得非常好的情况下不要忘了时刻提醒你得团队什么是你们真正的目标。说服你的高层让你得团队成员尽力的固定,哪怕是更换项目。慢慢的在你细心领导下你会拥有一支优秀的团队。但要切忌的是,在发展中的企业里,或则强人并不是非常多的企业里请谨慎对待末位淘汰制,使用不当将使你的团队彻底崩溃。
5 合理的职位与职称体系
合理的职位与职称对团队成员职业素质的肯定和尊重。职位与职称会给成员带来成就感与认同感,让其对职业发展方向由明确的期待。说到职位、职称、职位称呼,目前国内应该是混乱的,毫无章法可言,特别是系统集成企业,而且很多企业根本就不重视,或者没有意识到其重要性。目前国内管理性职位还稍微好点,技术性职位基本上就没有明确的体现级差职位与职称体系。如果项目组有足够梯队那么考虑在项目团队中建立适当的职位与职称来体现对成员的认可以及对其职责的督促是非常有效的。如项目组中设立首席程序设计师或是首席架构师,或者大点的程序开发团队设置程序设计师组长、程序技术指导等职位是非常有必要的,这样的层级技术职位关系会确立技术人员的发展路线,同时使项目以前不可见的技术层面问题变得显性而受控。那么职称是什么呢?职称是描述成员在某个分工领域上的专业水平的等级,如助理程序设计师,程序设计师,高级程序设计师,资深程序设计师,项目经理,高级项目经理,资深程序设计师。职称工具的正确应用使成员可以在项目组中明确自己处于那种层次,管理者可以以此勉励成员的在专业水平上的提高。准确职称定义在项目中还可以用识别解决某个问题的有效资源。比如一个新项目立项时,传统的方法是笼统地估算人天认为有足够的人员可以完成项目,而真正到项目开发中却发现公司安排的人根本无法胜任项目的难度,而在有良好的职称体系下,项目负责人可以根据项目的难度较快的分析出需要各种水平的人才各是多少快速估算预算,同时根据公司的储备情况可以在项目启动前发现资源风险,同时人力资源部门可以迅速根据缺口组织符合要求的人员。要注意的是职位与职称之间是有关联性的,比如首席程序设计师必须高级程序设计师以上才能胜任,大型产品的产品经理必须要资深项目经理才能胜任。所以利用合理的职位与职称有助于你的团队能健康的向上成长。
6 结束语
前面的阐述表明,合理组成是团队高效协作的基础。首先,团队人员组织和成就方面的问题解决了,内因解决了,自然每个人积极性也提高了,积极性提高了效率也就提高了;其次,团队组织结构和职责设计原则是尽量避免政治因素对团队的影响,团队合力加强1+1>2,效率会大幅提高。最后,通过优秀的人、组件合理的团队、配合好的管理制度团队的效率也就自然提高了。当团队问题解决了,软件项目的成功率也会大幅提升。
作者: 蔡春茂 2013-7-24