敏捷开发本质上是后福特主义在软件工程方面的实践,两者在组织管理方面的理念简直如出一辙。事实上,在欧美企业大量转向后福特的管理制度之后,敏捷的出现只不过是时间问题。甚至说,敏捷开发与管理制度关系如此紧密,以至于敏捷开发本身就是一种管理制度。由此,我们就可以明白,为什么国内大多数企业的敏捷开发都失败了。

回顾康威定律,康威定律描述了组织架构与软件架构之间的关系,但这只是马克思有关生产力与生产关系、经济基础与上层建筑论断的翻版。而敏捷开发本质上就是为了上生产力与生产关系相适应的产物,但敏捷开发根植于资本主义生产方式,没有资本主义生产方式的支撑,敏捷开发也就无从谈起。

以往的软件工程不牵涉这一点,他们也并不关心这一点。软件生产必然是政治经济学的,工程化与生产方式的关系是直接的,因此,决定软件工程底色的因素,也就不言而喻了吧!我们着力观察目前市面上流行的闭源商业软件传统开发模式,不难发现开发处于整个软件开发最底层,同时也是最基础的位置,而好的工程方式与坏的工程方式的区别在于,是将开发过程当作原子还是将开发人员当作生产工具。两者的区别在于,前者比起后者,对开发者的限制更小一点。

将人视作工具是一种奴隶制,而将开发人员视作生产工具本身就是一种奴隶制,且必然的是,肯定不单单是开发人员被视作奴隶,它喻示着整个上层建筑的奴隶制管理形式。而将开发过程当作原子的,从形式上讲,应该是比奴隶制是好很多,但由于开发者与整个开发流程割裂,从而使得整个软件开发并不需要软件开发者,开发这个过程的内容被流水线化了,换句话说,福特制化了。

我们回过头来看看敏捷开发在这方面与传统开发有什么改进。就如同它自己宣称的那样,它将生产的重点从生产者转移到了消费者者身上,由此,更多的需求可以被发觉,因为开发者本来也是第一使用者,这种释放是通过不对开发者进行控制而得到的,开发者获得了动力和积极性。但真的是这样吗?消费者中心只是一个表现,对生产者控制的放松来源于对生产者更精确的控制。通过缩小时间周期和各种效率图表,管理层对生产者的控制达到了更加灵活的层面。如果将一次软件开发当作一次流水线过程的制造,那么传统软件开发倾向于制造一条完善的生产流水线,而敏捷开发则强调不同流水线的组合,因为他们发现,软件开发与传统流水线工程是不同,软件开发制造流水线并组合流水线,因此,问题在于如何高效的生产出流水线并将其组合。但显而易见的是,多个小流水线如果不能并行的话,效率是不如一条完善的大流水线的,但多条流水线组合具有极强的灵活性,对于管理层来说,是整个软件开发的过程被原子化了,取而代之的是软件开发过程的组合,从决策上可以更加的粗粒度。这里还有一点,为了让单个软件开发过程尽量的快,管理层采用了泰勒制,而且比起在工厂里,在软件工程里的效果显然更好。为了精确把握生产能力,管理者采用甘特图等工具定量计算工作量,粗看只是为了把握进度,但一旦历史的看就可以把握整个开发团队的生产上限,并不断逼近。因此,如果一个团队如果长期采用这种制度的话,在工资相同的情况下,领导层就剥削到了更多的剩余价值,同时,一旦这个上限的阈值没有把握好,整个生产团队的疲劳是不可避免的。

底层的脑力劳动与底层的体力劳动,其境遇的形式是相差不多的,但由于脑力劳动的特殊性,因此常常会有一些掩盖,但由于资本主义可计算倾向,脑力劳动必然会以各种方式回归到抽象要素上,最终与体力劳动相差无几。曾经施加于工厂的制度现在经过乔装,又被软件公司采用,这就是资本主义生产方式的必然。