热力学第三定律:能量转化率不可能100%,其中不做功的能量称为熵。
在软件开发中,主要存在两种形式的熵:工程熵和组织熵
工程熵是技术方案本身导致的无效能量消耗,组织熵是组织架构本身导致的无效能量消耗。
譬如,一个单机版本程序,使用了EJB技术方案就比采用WEB方案熵要大的多。技术方案最好是依据实际情况进行评估和确定,可以有效提升软件开发的工程效率。
一个非常简单的软件系统,单个开发,单个项目组会比多个开发,跨团队协作组织熵要低的多;甚至同样的人数,采用不同的协作方式,组织熵也要有极大的差异。
工程熵是一个普遍严重的问题,常常见到,在一些小的企业中,羡慕大公司的技术,采用大公司才采用的非常高大上的技术,最终造成很低的开发效率。解决工程熵,需要很好的判断能力。
组织熵是一个更普遍的问题
在大的企业中,由于跨部分,跨团队协作的增加,每个人都要进行相当比例时间的沟通;如果企业协作复杂到一定程度,每个人需要沟通的部门花费的时间,超过本人所有的时间呢?这个时候,有什么效能去做正常的工作呢?
组织熵的主要原因是分工的耦合,避免组织熵的核心措施是
1,避免分工
2,分工,但避免耦合
有些事情,事情本身是高内聚,几乎不能再分的。这种情况下,应该避免分工
在手术刀团队中,医生一人几乎承担了所有核心的,高内聚,高耦合的职责,这是避免分工。是在不能避免,把一些内聚性较低的工作分配出去。
组织熵是大部分企业病的根源,其中一个原因是大公司有意的规避风险,进行掣肘;获取整体更低的风险收益。
软件开发团队,在满足需求的情况下,尽可能采用简单的技术,手术刀团队式的分工。
手术刀团队的合理分工,依赖于领域模型。