构建之法--第三章读书笔记(2)程序员为何不能按时交付工作?

程序员为何不能按时交付工作

第三章读书笔记(1) 中,我们提到了衡量软件开发工作量大小和质量的指标。
在讨论质量指标的过程中,提到了是否能够按时交付。但是实际软件开发过程中,很多工程师不能够做到按时交付,这一节就讨论了不能按时交付的原因,或者说导致不能按时交付的思维误区。了解了这些误区以后,希望在实际工作中能够有意识的避开这些误区。


软件的模块中存在着很多复杂的依赖关系,软件的不可见性和易变性使得软件的依赖关系很难定义清楚。工程师对待依赖关系的极端态度,导致了延迟交付的发生。

1、分析麻痹(动手前分析太多,迟迟不能动手)

这种情况是想弄清楚所有的细节、所有依赖关系之后再动手。分析太多,腿都麻了,没法起步前进,所以得名“分析麻痹”。

2、不分主次,想解决所有依赖问题(快速动手,想解决所有问题)

这种情况是过于积极,想马上动手修复所有主要和次要的依赖问题,可以完美的达成目标。

这里举个例子:

构建之法--第三章读书笔记(2)程序员为何不能按时交付工作?

3、过早优化

工程师在写程序时,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化,无视这个模块对全局的重要性,甚至还不知道“全局“是怎样的。

4、过早扩大化/泛化

比如:
需要某个函数来处理整数类型和字符串类型的信息,有的程序员往往灵光一现,是否可以把类型抽象出来,让这个函数可以处理所有可能的类型?
有的软件本来是解决一个特定环境下的具体问题,有的程序员想一想,是否可以做一个平台解决所有类似的问题。

这样的想法很好,但需要分析必要性、难度和时机
解决大问题固然让人感觉美妙,但是把小问题真正解决好,也不容易。