第五章 画蛇添足
估算和责任分工是制定计划很关键的一环。实际情况中,尽早交流和持续沟通能够使项目经理能有更好的成本意识,项目经理能及时改进他的估算或修订计划,使开发人员获得对设计的信心,并且不会混淆各自的分工。
面对估算过高的时候,项目经理有两个选择:削减设计(砍需求)或者采用成本更低的实现方法。若采取后者,项目经理则是在向开发人员的做事方式提出挑战,想要成功,必须:
(1)牢记开发人员承担主要的功能实现创造任务,所以项目经理只能建议其使用成本更低的方法,而不是支配;
(2)时刻准备着一种实现方法的建议,同样准备接受其他能够达到目标的方法
(3)对上述的建议保持低调和不公开
(4)准备放弃坚持所做的改进建议
一般开发人员会反对体系结构上的修改建议,因为涉及到架构、业务流程的特性修改,往往会造成意料不到的成本开销。
结构师设计的第二个系统是最危险的系统。因为在开发第一个系统时,结构师倾向于精炼和简介,由于对业务需求和任务的不够了解,所以会谨慎、仔细地工作。在面对不断产生的装饰和润色功能时,他会先搁置到一边,作为“下一个”项目的内容。当他着手开发第二个系统时,就会向系统里添加很多的修饰功能,往往就是过分地设计第二个系统。在开发第三个或者第四个系统时,这些系统之间的差异才能帮组他识别出系统中通用的特性。
结构师如何避免开发第二个系统画蛇添足呢?虽然他不能跳过第二个系统,但是他可以有意识地关注系统的主要需求,自我约束,避免一些过于修饰的功能。根据系统基本理念及目的变更,舍弃一些功能。
书中给到的一个建议是:
为每个小功能分配一个值:每次改进,功能x不超过m字节的内存和n微妙。这些值在一开始作为决策的向导,在物理实现期间充当指南和对所有人的警示。