首先,不少人天性追求完满,要让他们接受分工,只完成整个工作的一个枝节部分,可能是非常痛苦的事。我记得自己刚刚参加工作后参与开发的一个系统,直到开发接近尾声,项目经理才在一次每周例会上说:“大家开发了这么久,对整个系统的用途可能还不很清楚,今天我们简单谈谈”——这时我才知道自己参与的是整个店铺系统的销售子系统的订货部分的一个底层数据模块。
另外,分工往往导致等级制度和不同角色间的疏离。既然分工的要义是把高要求的工作集中在少数人手中,在少数和大多数之间,不同的工种之间,必然会导致等级差异和隔阂。《人月神话》中也谈到,在区分了产品设计和技术实现之后,单纯的实现者会感到仅仅听命于人,常常缺乏独自开发时的“成就感”。这也是朴素的、混沌未开的开发过程一旦引入分工,就必然产生的异化。
如果说,上面谈到的这两点还应该算是人类各种分工制度共有的“必要的恶”,软件开发中的分工还有一种特有的弊端:细致的分工与“重量级方法论”之间有很强的亲和性,倾向于导致更高的开发成本和开发风险。