大多数软件开发人员本能地认为,项目经理所要确保的项目按时完工与实现高质量的软件是矛盾的。这并不是因为项目经理们不想要高质量的软件,他们只是想在质量基础之上,能够按时完工和低于或等于预算的情况下实现这个软件。他们的努力可以成功地在降低成本和开发时间的同时不会对质量造成影响,但他们有可能过度地使用了这些技巧。
尽管以下的这些项目管理技巧至少是很有意义的,在某些情况下,它们甚至是受到尊敬的技巧,但是它们都有造成灾难的潜在可能。
时间盒
在破坏软件质量的事件列表上,时间盒的应用排在第一位,当您告诉某人在任务必须移交之前,他拥有多长时间来完成这项工作,我说“移交”而不是“完成”,因为在极端情况下,这经常意味着代码并不完善,仅仅是抓紧时间去完成这项工作。
在大多数情况下,时间盒是有效的,因为它可以做到四件事:
1.它迫使开发者能够富有创造性地在他们的预算之内发现解决方案。
2.它排除了经常添加在软件中不必要的虚饰,而这些虚饰往往并不能增加软件的价值。
3.它防止开发者过度测试。
4.目的只是要得到这件产品,在完整的质量评价(QA)阶段将会有详细的测试,希望在此阶段中能够发现代码中存在的问题。
当存在未知问题,或技术没有经受检验,或没有正确的方法来检验结果的时候,时间盒就无能为力了;当时间盒很小,而且在分配的时间之内并没有可能的办法来实现目标时,这种方法也是无效的。换句话说,时间盒可以很好地解决一些问题,比如充分理解、谨慎评估和执行类的任务;然而,也确实存在时间盒方法不能很好解决的问题,比如研究和发展,还有解决问题等等。
如果时间盒是正确使用的,那么不应当导致测试到很糟糕的代码,这些糟糕的代码可能会导致数百个小时的诊断和返工。时间盒应当适度使用来确保最低的成本、最快和最高质量的软件。
误期
所有人都要有奋斗的目标,里程碑是一种受到尊敬的方法,它用来激发人们向同一个目标前进,这种动力可以在很短的时间内得到重大成果。然而,每个人都必须承认里程碑所界定的时间并不是每次都能实现,这时就必须要做出新的决定。
项目经理们必须要在团队中树立里程碑的目标,以此来激励他们前进,但是,当里程碑确立的日期并不现实,而且队员们一再出错,那就应该重新评估这个计划了。如果因为某种特殊情况可以使这个日期不再重要,那么当这个重要日期真正来临的时候,整个团队就只有很小的动力来实现这个里程碑日期。当整个团队连续错过了10个日期,那么第11个日期还重要么?这就像喊着“狼来了”的孩子一样。
如果在设定的时间线之后并没有任何处罚,那么当错过这个时间的时候就应该强制执行或者移动整个时间线。
长远来看,不断创造持续的压力和令人迷惑的环境并不能创造出好的软件,开发人员需要能够专心工作的环境。完成项目的日期和关于里程碑日期是否真实的混乱,经常会导致开发人员在开发过程中跳过关键步骤或者造成难以发现的问题。
假装没有错误
在项目管理中,忽视并不是一种幸福。为了成功地完成项目,除了不可阻挡的政治压力,向公司其他的员工介绍项目的风险也是必需的。几乎每个软件开发项目都有延期或超出预算或同时出现这两种情况的风险。
当然,当整个项目还没有落后于计划之前,这一问题还不会充分暴露出来,然而,大多数项目都有办法只让项目的某些部分落后一点点,而几乎每个项目都有过于仓促的风险,这是因为管理层在很长一段时间之内都在项目没有任何问题之后得知项目的真实状态。
忽视相关性
在软件开发中,我们有很多技巧可以用来延迟相关性,我们可以停用一些函数、移动相连的基本架构,或者绕开众多的错误处理,在正确使用的情况下,所有这些技巧都可以帮助推进一个项目,然而,当为了完成项目,而这些技巧的成本因素又没有被考虑到整个计划当中时,就埋下了烦恼的种子。
很多时候,在项目中排列软件开发的顺序是非常具有挑战的事情,相关性并不容易被发现,因此也就不可避免地有很多相关性因素没有被安排到计划当中。为这些不可预见的相关性安排日程表可以让人变得疯狂,因此,压制相关性的方法是经常使用的,但是,如果过度使用了这些技巧,这些费用可能经常会占据项目总成本中很重要的一部分,而且直到项目的最后才会被发现。
所以要确信您现在所做的对于管理相关性是必需的,不会添加过多的成本,而且是整个软件开发项目中必不可少的一部分。当项目经理不能在成本与降低相关性的便利中取得平衡,那么他们草率地组装的代码将会展示出质量问题。