《大道至简》第七章讲的是“现实中的软件工程”,文中以IBM的故事为例,告诉我们在软件工程技术的竞争中是很残酷的,敌人的敌人就是自己的朋友吧,软件当今不是一些软件工程师之间的争争吵吵,而是大公司之间相互制衡的结果,大公司在相互竞争激烈的时候,忽视了一些小公司,导致这些小公司在激烈的竞争中崛起。大公司们在标准、理论、语言上的争来夺去,未必全 然出于“软件实现”的考虑。对统一理论、统一工具、统 一过程的企图,其最终目的是在整个软件工程体系中的全面胜出。
软件工程的关键还是要回到工程的关键点,因为,软件工程的除了本质力量的推动之外,还需商业因素影响,商业也推动软件工程的发展,大公司把软件工程从自生自演的过程已经推动到它激自演的状态。这种它激发展可能会影响到软件工程发展的速度,然 而在各个工程层面上的关注点并不会发生变化。俗话说细节决定成败。现在在绝大多数公司只追求实现目标,而忽略了质量的问题。往往这个质量出现的问题,都源自于细节,细节处理不好就很容易出现我们意想不到的错误。
工程成功的真正关键,不在于你把你的团队“组织”得有 多好。即使在团队中他们都显示有条不紊,你一样会面临失败。这就需要经理必须对项目成本的多少做出合适的推断。如果在做项目的时候经费不够了,那么此项目只能作废,只是一个死的项目,团队也就随之分解,更不用谈论合作做项目了。
在软件开发中思考尤为重要,除了思考还是思考。思想是特别重要的,有了思考了,才会诞生一种新的思想,思考问题的方法可以是由点及面的,也可以是统揽全 局的。换成业界最常用的词汇,就是“自上而下”还是“自 下而上”的区别。 软件工程的三个要素是:工具、方法与过程。三者是相互关联的,并不是孤立的存在,它们共同组建立一个工程。
实现目标和保证质量的矛盾是不可避免的。 即使在时间、资源和功能三者中取得了平衡,即使客 户、项目组和公司同样满意于这个平衡“目标”,它仍然 有可能是“不能实施”的。 所以我们通常所说的细节,其实是对实施方法的一些 有限量的描绘。比如“软件工艺”这个概念本身的提出, 就是考究“细节问题”的。对于是先思考还是先有思想,思考之后才会有一种合适的思想,思想对于软件工程特别重要,是一个项目的核心内容。
作为软件工程的学生入门应该清楚地是软件开发是灵活的,要懂得“变”,死读一本书,即使读的再多遍也是无济于事。