1.6 大部分知识是已经存在的
每个有趣的项目都是一个会产生专门知识的学习之旅。我们通常希望文档能够提供我们所需的专门知识,但有趣的是,所有这些知识都已经存在了:可能在源代码里、在配置文件里、在测试里、在应用程序运行时的行为里、在各种相关工具的存储里,当然还可能在所有从事这个工作的人的大脑里。
在软件项目中,大多数知识以某种形式存在于工件中。这有点类似于蚂蚁主要从巢本身来学习如何改进它们的巢。
因此,要承认大多数知识已经存在于系统中。需要它们时,找到并识别它们,再就地进行开发。
即使知识已经存在,也不意味着我们无事可做。那些已经存在的知识仍然存在很多问题。
FyWWTV6bQEShjgdKWgy3BG2y9K3/498lNocHTogejtNeoYuVYSeY0l+ieymsuL85
-
不易获取
:有些知识存储在源代码和其他工件中,非技术人员无法访问。例如,非开发人员无法读取源代码。
-
体量太大
:项目工件中存储了大量知识,所以我们无法高效使用。例如,每行逻辑代码都编码了知识,但是对于某个指定的问题,可能只有一两行与答案相关。
-
碎片化
:我们以为有些知识是一个整体,但实际上它们分布在项目工件的多个位置。例如Java中的类层次结构,即使我们想将它作为一个整体来看待,但实际上,它一般分布在多个文件中,一个文件里有一个子类。
-
隐性
:在现有的工件中隐含着大量的知识。比如说,可能有99%的知识是显而易见的,但缺失的1%则令它变成了隐性知识。例如,如果你使用了一个设计模式(如合成模式),只有在你熟悉这个模式时,才能在代码中看出来。
-
不可恢复
:知识可能已经存在,但是由于这些知识过于混乱,我们可能无法恢复它们。例如,代码表达了业务逻辑,但是代码太乱了,所以没人能读懂业务逻辑。
-
未成文
:最差的情况是知识仅存在于人们的大脑中,系统里只有这些知识的结果。例如,可能有一条通用业务规则,已经通过编程成为一系列特殊用例,所以任何地方都找不到对它的描述。