软件的模块中存在着很多复杂的依赖关系,软件的不可见性和易变性使得软件的依赖关系很难定义清楚。工程师对待依赖关系的极端态度,导致了延迟交付的发生。
1、分析麻痹(动手前分析太多,迟迟不能动手)
这种情况是想弄清楚所有的细节、所有依赖关系之后再动手。分析太多,腿都麻了,没法起步前进,所以得名“分析麻痹”。
2、不分主次,想解决所有依赖问题(快速动手,想解决所有问题)
这种情况是过于积极,想马上动手修复所有主要和次要的依赖问题,可以完美的达成目标。
这里举个例子:
3、过早优化
工程师在写程序时,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化,无视这个模块对全局的重要性,甚至还不知道“全局“是怎样的。
4、过早扩大化/泛化
比如:
需要某个函数来处理整数类型和字符串类型的信息,有的程序员往往灵光一现,是否可以把类型抽象出来,让这个函数可以处理所有可能的类型?
有的软件本来是解决一个特定环境下的具体问题,有的程序员想一想,是否可以做一个平台解决所有类似的问题。
这样的想法很好,但需要分析必要性、难度和时机。
解决大问题固然让人感觉美妙,但是把小问题真正解决好,也不容易。