4、合理安排人手。
通常在我们面临最后期限的压力时,第一想到的是加班,然后闪入脑海中的念头则是增加人手。加班策略素来为我所唾弃。以每人每日的生产效率来看,虽然加班可以延长工作时间,但长期的过度疲劳必然会降低生产效率,如此以时间换来低下的效率与团队成员的抱怨,完全得不偿失。在长期积怨的情况之下,开发人员会产生一种破罐子破摔的思想,心里认为反正都要加班,那么在正常上班情况下,反而会“磨洋工”,敷衍搪塞项目经理安排的工作。那么增加人手呢?且不说这会增加项目成本,我们还要考虑团队的新兵需要多长时间才能上战场?业务培训、团队磨合是新增成员必然存在的两大痼疾。如果没有处理好这两个问题,不仅不能提高开发进度,反而会有拖慢或者打乱原有开发节奏的危险。另外,如果添加的新手不幸是一个刺头或者“害群之马” 呢?需要明确的是,往往在项目经理提出增加人手的情况下,项目经理并没有亲自挑选新成员的权利。这些新成员要么是闲置的,要么是其他团队转过来的,要么是新招聘的。考虑前面两种情况,你觉得这样的成员能够达到及格乃至于优秀的几率会有多大呢?如果是新招聘的,那么拜托,赶快在心里多念几遍“菩萨保佑”吧。
总体而言,如果项目经理没有挑选新成员的权利,最佳的选择是非到万不得已不要添加成员。所谓“万不得已”,即是无论如何改进,如何协商,如何提高效率,都无法达成既定目标的情况。
兵贵在精而不在于多。关键在于知人善用,以及合理调度。一个项目经理在组建自己的团队时,必须要了解自己成员的人格特点与技术特点。在理想状态下,如果项目经理具有挑选成员的权利,会具有更大的成功率。
如果项目过大,那么必须建立层级式的组织架构,而在划分出的各个小组中,却应该以扁平的平等架构为最佳。这样就能够自由而不失于集中,平等而又不至于缺乏效力。当然,具体的组织架构应依据企业文化、产品性质、开发规模、团队成员特点等各个因素综合考虑,不能死搬硬套。在安排人手时,要注意对技能型人才和管理型人才的使用,注意对领域专家和系统架构师的使用,注意对开发人员和测试人员的使用,注意对编档人员、QA、配置管理员的使用。此外,还需要养成从容不迫的心理,即使最终期限火烧眉毛,迫在眉睫,仍然要保证对架构的设计、对编码的测试以及合理考虑产品性能、可用性和产品质量。
5、开发环境的保护与基础设施的维护。
兵家云:天时、地利、人和。没有一个好的开发环境,很难想象开发人员能够高效率的工作。开发环境必须是相对独立,又利于交流与沟通的工作室。具体的说,项目组的工作环境必须拒绝项目无关人员的干扰与破坏,但却无阻于项目成员,特别是同一小组成员的交流。此外,会议室的数量非常重要。我在管理一个项目时,竟然常常为寻找会议室而东奔西走,将大量的时间浪费在会议准备上。此外,服务器、客户机、网络、打印机、白板、卡片,以及开发工具和软件,例如IDE开发环境、版本控制工具、Bug管理工具等,都需要在团队建立之初就要准备好。对于计算机、网络和相关工具,则必须保证在项目开发期间的稳定性、畅通性。我曾经在项目开发中,因为网络中断、病毒侵袭以及服务器坏掉从而破坏了SVN的版本管理等诸多突发事件,让我在本来就紧张的开发时间里,牺牲了不低于三天的时间,真是让我抓狂不已!所以说,一个好的网络管理中心、一个好的配置管理员,在关键时刻,可以抵得上半打高效的开发人员呢。如果你在项目开发过程中,频繁遭遇这样的问题,我的忠告是,赶紧准备换一家公司吧。
6、合理控制需求变更。
需求变更是软件开发必然遭遇的暴风雪,也是导致“没有银弹”的渊薮。传统的瀑布开发模型在项目后