七、八章主要讲述的是软件和思想。现实中的软件工程,作者从工程的关键点,角色,审视方面来谈述了软件。软件工程的三个要素为工具、方法与过程,它们是相互作用的。所以做工程要从本体上来思考问题,而不是仅关注于每一个局部的要素,工程的整体问题仍然是“实现”。就如一个团队参加一个比赛,如网页设计大赛,要从整体上来确定一个主题并且要实现什么样的网页,每个组员负责一部分,但是每一部分要最终的结果是要和大的主题相呼应的,做网页要用什么样的软件,要怎么做,怎么排版、设计,每个组员之间要怎么分工,实际上就体现了工具、方法与过程三者之间的相互联系。角色关注层面完全不同。在这个比赛团队中,不同的人负责不同的模块,所以每个人关注的层面不同。
RUP的例子教会我们取得什么样的成效,要看我们采用什么行为,及通过我们的辨识力与组织力怎么用这个行为。做一件事可能有上百种方法,但是采用不同的方法会取得不同的结果。同样,采用的方法相同,但是如果对于这个方法的使用不同也会有不同的结果。
无论采用什么样的沟通工具,目标不是在“选用工具”这件事本身,而是通过这个工具能实现良好的沟通,能够表达的足够准确和详细,对于不同的阅读者来说都能提供了充足的信息。所有的工具都是辅助,实现良好的沟通,让对方清楚了解我们的思想才是最终目标。
注意平衡目标,平衡时间、资源、和功能三者之间的关系,“实现”的欲望是从程序员出身的管理者的通病。因此如果你仍然在思考选择什么语言、如何重构,以及在开发部里争论一段代码有没有或应不应该采用某种模式,这是细节。要学会在什么时候注意细节在什么时候忽略细节。通过古词的例子阐释了在软件开发过程中,大多数人不知究竟地使用着技巧和方法,而一旦出了问题,则归究于这些技巧和方法的不好。而真正的问题在于,这些人并不知道这些技巧、技术和方法的原理,因而不知道变通,也不知道回避错误。通古词我们应该明白我们要学会在软件开发中,要明确了解每个方法的使用,并学会变通,也不要回避错误。
《大道至简》这本书到现在为止已经阅读完了,通过阅读这本书明白了编程者的思想,拿这本书来作为软件工程活动的参考时,绝大多数的人不能明白类似如下的问题:为什么要这样做呢?我们这里应该这样做,但是接下去呢?这个环节很重要,但是如果不做会有怎样的风险?我们在做这件事的时候,其它的人在做什么?为什么失败了?这本书更多的是在描述“怎样实做”,而绝少讲述“为什么这样做”。以致于行为失去了思想的引领,能“完成”工程,而不能“做成”工程便是可以想见的事了。本书中所要讲述重点是这种规律。即使提及到一些“实践规则”,也是在对规律讨论之后。最为正在学习网路工程的一员来说,这本书真正教会我的并不是编程,而是如何做好一个工程,例如如何有效沟通,团队之间的合作,角色等。