团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos


团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos

软件开发过程目的是什么?

非常多的优秀软件和产品,比如说快手(GIF 快手)、今日头条、Facebook 等,他们都是从非常小团队中诞生的。产品发明之初这个最重要的阶段,从 0 到 1,全是几个人在一个不知名的民宅中鼓捣出来的。

因为是小团队,所以在这背后也就隐含了「另一层意思」这些产品发明并未采用正式的软件过程。

团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos

面对这种情况,我们不禁要问自己,为什么这么多优秀的产品来自于正式的软件过程之外?软件过程规范的目的又是什么?

天之道损有余而补不足 — 「老子,七十七章」

团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos

这句话用现代科学说就是“熵”,在任何情况下能量都会从高处(有余)流动到低处(不足)— 熵增,熵表示信息的混乱程度,任何独立系统总是趋近于熵增,也就是系统会最终达到熵的最大状态,也就是最混乱的状态。

软件开发,尤其是团队开发,如果没有项目管理,不讲究软件架构的话,软件的开发会发生过程混乱,结果不可控的情况。我们用来控制软件开发,避免结果不可控的过程就是软件过程。

产品创新如何发生

虽然某些人可能将他们视为疯子,但我们将他们视为天才,因为那些疯狂地认为他们能改变这个世界的人,确实就是改变这个世界的人 — Steve Jobs

团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos

乔帮主认为那些改变世界的创新是一群疯子发明的。

「创新是混乱的艺术」,产品创新与创意都是在混沌中诞生出来的。可软件过程是为了摆脱过程的混乱而形成的秩序,所有的软件过程天生都是和产品创新背道而驰。

软件过程要求,我们项目必须有确定性时间和资源,所有的过程严格按照时间表执行。但没有人能把软件创新当作一项任务,按照明确的时间交付任务。

没人能说今晚 10 点 10 分,我将要发明出一个软件来,这个软件估值 10 亿美金。谁要这么说,那他肯定是骗子。

但如果有人说,今晚 10 点钟,我们团队可以交付上线一个软件产品。这样就不会有问题了,因为这是软件过程。

软件过程是复制过去的经验到新的项目中,如果当时 Jobs 使用传统的软件过程去设计手机,只会再诞生一个 Nokia 而不是 iPhone。因为软件过程就是把过去成功过程应用到新的项目上。

「软件过程本身也是一个否定的过程」

,否定所有不好的想法,避免开发过程的混乱,防止预算和时间进度不能兑现。以至于所有的软件开发中的变化,比如需求变更、架构创新等都要开会解决,在会议中充分讨论,消灭掉不确定性,再形成共识决议后才能执行。

如果开发团队中,有一个人每天“鼓捣”新玩意,即使在项目中,频繁的引入新的技术,调整框架。我想如果没有软件过程管理,这个人恐怕会被团队“打死”,因为所有人都要跟他不停学习新技术,不断的提高风险控制。并不是不提倡大家不要学习新技术,可是如果折腾的太频繁,项目就可能完不成了。

「软件过程是从错误中诞生的」,开发规范的产生是从过去不断变化的错误中进行总结提炼而成,每次失败都会产生新的规则。如此下去,规则必定会越积累越多,因为,除非证明了规则的错误,不然规则会一直保留在软件规范中。可我们真的要全部遵守这些不停膨胀的规则吗?全部遵守,只会导致执行效率的低下,让人们迷失掉为什么当初要制定规则。睁一眼闭一眼,不遵守,则会导致规则就会全部失效。很多大型项目效率低下的主要原因就是规则繁琐,官僚主义盛行。

软件过程和产品创新如此对立,软件过程不断的吞噬掉产品创新所需要的土壤、时间和人力

Order & Chaos?

所以,有秩序的软件工程是不是恶魔?在开发中还需要软件过程吗?

当然需要!

团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos

软件过程是组织团队开发的基础工具,团队开发中必须存在协调、审批和复盘等动作,如果没有软件过程等规范和管理,团队开发也必将不复存在。

当出现产品创新和软件过程冲突时,软件过程应当适当的给产品创新让位,留出适当的空间和环境让产品创新生长起来。

在新产品产生后,必然会出现各种问题,比如软件 Bug、用户需求和产品升级等,类似这样问题,解决时,如果创新空间相对较小,这时软件工程就应该及时介入,并发挥出自己合理的作用。

「没有一种模式可以解决所有问题,问题也是在不断发展和变化的,我们工程师需要用问题发展的眼光来解决眼下的问题。」 不可以教条的认为某一种或几种方式可以解决一切。

团队规矩太多,让我很不爽,软件开发的规矩有用吗?Order&Chaos


分享到:


相關文章: