大多数软件开发人员本能地认为,项目经理所要确保的项目按时完工与实现高质量的软件是矛盾的。这并不是因为项目经理们不想要高质量的软件,他们只是想在质量的基础之上,能够按时完工和低于或等于预算的情况下,实现这个软件。他们的努力可以成功地在降低成本和开发时间的同时不会对质量造成影响,然而,他们有可能过度地使用了这些技巧。
尽管以下的这些项目管理技巧至少是很有意义的,在某些情况下,它们甚至是受到尊敬的技巧,但是它们都有造成灾难的潜在可能。
时间盒(Time boxing)
在破坏软件质量的事件列表上,时间盒的应用排在第一位,当您告诉某人在任务必须移交之前,他拥有多长时间来完成这项工作,我说“移交”而不是“完成”,因为在极端情况下,这经常意味着代码并不完善,仅仅是抓紧时间去完成这项工作。
在大多数情况下,时间盒是有效的,因为它可以做到四件事:
1. 它迫使开发者能够富有创造性地在他们的预算之内发现解决方案。
2. 它排除了经常添加在软件中不必要的虚饰,而这些虚饰往往并不能增加软件的价值。
3. 它防止开发者过度测试。
4. 目的只是要得到这件产品,在完整的质量评价(QA)阶段将会有详细的测试,希望在此阶段中能够发现代码中存在的问题。
当存在未知问题,或技术没有经受检验,或没有正确的方法来检验结果的时候,时间盒就无能为力了;当时间盒很小,而且在分配的时间之内并没有可能的办法来实现目标时,这种方法也是无效的。换句话说,时间盒可以很好地解决一些问题,比如充分理解、谨慎评估和执行类的任务;然而,也确实存在时间盒方法不能很好解决的问题,比如研究和发展,还有解决问题等等。
如果时间盒是正确使用的,那么不应当导致测试到很糟糕的代码,这些糟糕的代码可能会导致数百个小时的诊断和返工。时间盒应当适度使用来确保最低的成本、最快和最高质量的软件。
误期
所有人都要有奋斗的目标,里程碑是一种受到尊敬的方法,它用来激发人们向同一个目标前进,这种动力可以在很短的时间内得到重大成果。然而,每个人都必须承认里程碑所界定的时间并不是每次都能实现,这时就必须要做出新的决定。
项目经理们必须要在团队中树立里程碑的目标,以此来激励他们前进,但是,当里程碑确立的日期并不现实,而且队员们一再出错,那就应该重新评估这个计划了。如果因为某种特殊情况可以使这个日期不再重要,那么当这个重要日期真正来临的时候,整个团队就只有很小的动力来实现这个里程碑日期。当整个团队连续错过了10个日期,那么第11个日期还重要么?这就像喊着“狼来了”的孩子一样。