大道至简第七、八章读后感
大道至简第七章的标题为:现实中的软件工程。首先说的是“王不如远交而近攻,得寸,则王之寸;得尺,亦王之尺也。”出自《战国策.秦策》,来引出第七章的内容。
开始说的是大公司手中的算盘。文中列举了IBM,Borland和Microsoft的一些体系,来说明大公司眼中的世界。大公司们在标准、理论、语言上的争来夺去,未必全然出于“软件实现”的考虑。对统一理论、统一工具、统一过程的企图,其最终目的是在整个软件工程体系中的全面胜出。算盘上的绝大多数人,只是用于计算胜负的一枚算子。所谓编程语言,只不过是他们在商业战场上争夺所用的工具而已。
接着讲回到工程起点,文中所画软件工程层状模型可以看出,作者将软件工程划分为实现,团队和经营三部分。从这个模型中可以看到,在“程序”与“方法”层面,是关注于“(具体的)实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。从角色的角度上来说:开发经理思考项目的实施方案和管理具体的开发行为;而项目经理则保障团队的稳定性和一致性。然而这只是基本模式,或者说,是理想模式。
后来是思考项目成本的经理理想状况下,“软件工程=过程+方法+工具”。然而工程成功的真正关键,并不在于你把你的团队“组织”得有多好。即使在团队中他们都显示有条不紊,你一样会面临失败。蚂蚁的团队总是被本能地组织得非常好。如果资本没有了,就没了运作,团队的存在就没有了必要性和可能性。所以,思考项目的成本是非常必要的,只有项目成本在承受范围之内,这个项目才能真正运行下去。
最后提及了一下技术层面的见解,文中作者向我们展示了他眼中的AOP和MDA/MDD,为我们介绍了这些语言的特点和人们对其的一些理解中的错误。
无论采用什么样的沟通工具,目标不是在“选用工具”这件事本身,而是通过这个工具能实现良好的沟通,能够表达的足够准确和详细,对于不同的阅读者来说都能提供了充足的信息。所有的工具都是辅助,实现良好的沟通,让对方清楚了解我们的思想才是最终目标。
注意平衡目标,平衡时间、资源、和功能三者之间的关系,“实现”的欲望是从程序员出身的管理者的通病。因此如果你仍然在思考选择什么语言、如何重构,以及在开发部里争论一段代码有没有或应不应该采用某种模式,这是细节。要学会在什么时候注意细节在什么时候忽略细节。通过古词的例子阐释了在软件开发过程中,大多数人不知究竟地使用着技巧和方法,而一旦出了问题,则归究于这些技巧和方法的不好。而真正的问题在于,这些人并不知道这些技巧、技术和方法的原理,因而不知道变通,也不知道回避错误。通古词我们应该明白我们要学会在软件开发中,要明确了解每个方法的使用,并学会变通,也不要回避错误。
《大道至简》后面提到这是一本“小书”,这的确是一本很小的书,相比于其他什么什么软件设计工程或者教程之类的其他书目,但是书中的思想确是一本“大书”,不是教我们写程序的语法,而是说明了如何去学软件工程,是从思想的层面给我们确立了一个方向,让我们明白在学什么,怎么学。