这个项目的一个重要问题就是过多的关注截止期限,这对代码质量带来了很大的伤害。如果开发者们被迫关注交付而非编写一个好的代码本身,他们最终不得不为让老板开心而买单。原因有两种,一是估计过高,二是承诺过多,不管怎样,最终都会带来更多的包袱。
通常来说,由于效果很快会在项目的成本上体现,因此您的开发人员可能会选择过度承诺,然后跳过重要的工作,如考虑架构的问题,或者如何使任务自动化,从而达到一个不现实的截止期限。这些任务通常是被视为附加值,所以它们会在没有通知的情况下直接削减。积累的技术债务越多,产品的质量也就随之下降,甚至会比以前设想的更多,因为在一个项目上后期重编代码的代价会成倍增加。
举一个例子,在这个项目上,我会发现一些代码明显在其他地方已被写过,但是好像当时急于交付,一些开发者也就懒得检查是否有其他人在此之前已经写了相同的方法或者SQL查询。
有些时候,预算可能是假的。例如,Agile有一个术语叫“速度”,这个概念是为了计算你的团队交付有多快,然后做一些必要的调整来提速。问题是在短期到中期里是不太可能算出一个精准的速度的。平均法则强度,你不能凭借过去的业绩来测量你现在的速度,因为过去的业绩并不是一个好的未来结果的指示器。
(注:平均法则是一个外行术语,认为一部分小样的数据分布的结果肯定会反映整个数据分布的结果)
事实上,一个开发者可以一天可以编写很多的代码,也可以在读完文档并在考虑和同事们如何合作后,三天只写五行代码。平均预算并不会在短期和中期得到有价值的反馈。