| 来源: Phillip G. Armour

五阶无知:你以为在写代码,其实在学东西

软件开发的产出不是代码,是知识。理解"五阶无知"模型,才能理解为什么项目总是估不准、为什么 90% 完成后还要再做几个月。

这篇文章说了一个反直觉的事:软件开发的产出不是代码,是知识。

想想看,写一个程序容易吗?太容易了。写一个能用的程序呢?难多了。区别在哪?在于你得知道它应该怎么运作。代码本身就是打字,难的是搞清楚该打什么。

作者提出了一个模型叫"五阶无知":

为什么软件项目总是估不准?因为项目开始时,你大部分状态是二阶无知。你知道有很多东西要学,但你不知道具体是什么。所以你估的只是"你知道你不知道的部分",而忽略了"你不知道你不知道的部分"。

那些方法论、敏捷、Scrum 有什么用?它们的真正价值不是给你答案,而是帮你发现问题。一个好的流程会不断暴露你的二阶无知,把"不知道不知道"变成"知道不知道",然后你才能去找答案。

如果你把方法论当成答案机器,你会很沮丧,因为它只会给你更多问题。但那恰恰说明它在起作用。

还有个现象叫"90%完成综合症":程序员说90%完成了,然后连续几个月都是90%。他不是在骗你,他是真的不知道自己还差多少。因为剩下的部分是二阶无知,他看不见。

所以:下次写代码前,先问自己:我在生产代码,还是在获取知识?如果是后者,别急着交付第一版,那只是你的"探险草图"。真正的地图,得在你知道目的地长什么样之后再画。

查看原文