“当估计某一功能的实现时间时,不要只考虑最初写代码所花费的时间,还要加上提升、调整和改进这些代码所需的时间。写高质量的代码和测试都需要花时间。从短期来看,这似乎是一种损失,然而它带来的却是长期收获。”速度固然重要,但是由于速度快导致的后果是无穷的。
上面这段话引用自“项目经历应该知道的97件事”。文中举例有两个开发人员,一个速度快(开发出的代码可维护性差),一个稳扎稳打(写出的可维护性好)。 在项目前期,开发速度快的人员很快的提交了可运行的代码,开发速度慢的则忙于架构代码,对代码整体框架进行优化,为后续功能的添加和改动作铺垫。在项目后期,由于新功能的加入,需求的变更,导致速度快的人员编写的代码出现了维护难,修改了这里那里就无法运行,花去了大把大把的时间来修复这里缺陷。就像打地鼠,你永远不知道下一个地鼠从哪里出现,下一个缺陷何时出现如何解决。而相反的是,前期开发速度慢的人员却发力了。由于之前的代码架构很多,模块之间的耦合度低,模块的变动不会影响其他模块,添加修改功能更简单更方面。
结合上面两段话,我联想起我接手过的一个二手项目。项目初期开发人员由于时间紧,缺乏经验,在功能实现的时候东拼西凑,仅仅是为了完成功能而编写了某些代码。最直接的后果就是后期项目测试环节,反馈的众多问题无法修改,或者只能折中方式去修改。改了这个地方,那个地方又出问题了。就像大海里行驶的木船,拆了这块板补那个洞,补好了之后刚才的地方又开始漏水了。
因此项目前期不妨稍微慢一点,对基础架构进行慎重的考量,由此带来的好处自然不必多说。尤其稍大的项目,前期的准备更是尤为重要。
根基不劳,你还指望能建造出什么样的摩天大楼?~ 为了你的项目按时交付,避免打地鼠式的开发。