自计算机问世以来,人们一直试图估计构建软件所需的时间,但一直以来都失败了。估计中等规模的项目非常困难,而估计大型项目几乎是不可能的。然而,这个行业一直坚持认为,如果我们都再努力一点,这个六十年来一直不起作用的方法一定会在下一个项目上奏效。根本问题在于,一旦软件开发变得如此常规,以至于可以估计,它就会变成一个可以购买而不是构建的产品或服务。今天,很少有人需要构建普通的内容管理系统或电子商务店铺,他们只是使用WordPress、Shopify或其他替代品。因此,大部分软件开发都集中在创新工作上。但是关于创新工作的问题在于,在开始构建之前,没有人确切知道它应该是什么样子。在软件行业一直未能估计工作的同时,它也一直自欺欺人地认为,你可以事先指定创新工作,并生产出人们真正想要的东西。然而,我们之前也尝试过这样做!但是没有人关心结果。因为它最终没有解决真正的问题。只有在构建了一半错误的解决方案、改变方向,然后提出更好的解决方案之后,你才能明确表达出这些问题。是时候接受这一点了。聪明的程序员已经尝试了几十年,他们一次又一次地失败,就像今天我们试图逆着人类的智慧潮流而动一样。
本文强调了不确定性在创新工作中的重要性,提出了三个设计原则:明确规则、促进创新、灵活支持。通过案例分析,说明了这些原则的应用。文章强调了不确定性对创新的积极作用,提醒人们避免将风险与不确定性混淆。最后,提出了引入生成性不确定性的方法,并强调了低调行事的重要性。
完成下面两步后,将自动完成登录并继续当前操作。