全部学习汇总: GitHub - GreyZhang/The_Mythical_Man_Month: My reading notes of The Mythical Man-Month.
接下来整理的一个章节内容比较多,我将会分成两次来整理我的学习笔记。这个章节的名字叫做没有银弹,后面来看看这个题目大概的由来。

其实,银弹是来自于人狼故事传说的。人狼是非常可怕的,可以变换成各种可怕的怪物。但是,银弹是人狼的克星。我们软件开发中也会遇到各种各样的问题,如同一个个怪物,是否我们也能够找到一个威力强大的武器来解决各种各样的问题呢?
其实,之前内容梳理的时候其实就看到了这一点差异。银弹其实是被翻译成了多种不同的叫法,这样虽然没有对整体的理解造成太大的影响,但是还是给读者一种不连贯的感觉。
软件的开发工作很多时候来自于硬件的升级,之后,软件需要不断进行升级迭代。典型的例子是现在的操作系统的开发,有很多新的处理器的匹配还得保证一系列设备的兼容性。在我所接触的嵌入式领域,这种现象不是很明显,但是现在越来越多的换主芯片其实带来的工作影响与此十分相似了。
在所有的工作中,明确即将设计的产品是什么,什么样子其实是最重要的。相比之下,如何去实现反倒是次要一些。
软件本身是复杂的,而且随着硬件升级以及客户需求的升级,软件如果是一个持续维护的产品,它将会更加复杂庞大。而一系列的复杂堆叠下,各种产品的问题瑕疵也会层出不穷。
很多的软件复杂度来自于保持接口的一致性,其实这部分项目经理有时候很难意识到。这其实还真是其中的一点,现在我看到的很多难以解决的状态时喜中忧。什么叫做喜中忧呢?那就是,我们原本的基础可能已经比较标准化了,但是我们现在又要做保持接口一致性的工作。而这个接口一致性的工作,通常是跟客户的一个非标准接口保持一致,这样的工作难度就会大而复杂了。
这样的问题其实并不是所有的软件中的共性,也有一些例外。我所接触的嵌入式软件开发,其实开发的思路以及方法相当成熟。但是挑战点在于什么呢?其实是驱动的设计,因为我们需要用开发的方法来实现对各种各样的芯片本身的描述,而这是一个很大的集合。
我接触了一些互联网、桌面用到的各种软件,了解了一下发现他们的开发模式的确是友好很多。开发的效率也非常高,因为现在的计算机的资源一般不是什么限制。相比之下,嵌入式软件开发并没有那么幸运。其实,这么多年以来,嵌入式软件开发的整体模式我个人觉得并没有太大的革新。当然,纯粹的逻辑设计部分往模型化方向发展,算是一个很好的进步。