暑假期间,我阅读了软件工程经典读物《大道至简——软件工程实践者的思想》,作者周爱民用八章的内容讲解了软件工程实践者的思想,读完这本书后我受益匪浅,对软件工程的学习有很大帮助。
首先,本书开篇讲述一名著名工程学家--愚公的事迹,愚公移山,来引出编程的精义,紧接着提出了编程的根本即顺序、分支和循环,并介绍了经典公式:程序 = 算法 + 结构。算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。编程的第一要务是先把事情分析清楚,事件先后的逻辑关系和依赖关系搞清楚,然后再去代码实现。
紧接着,以懒人李冰“(因)其崖崭峻不可破,(冰)乃积薪烧之”的方法指出愚公的“勤快”有时候并不是什么好事,并提出新的“方法”,解决的将是影响做事成效的根本问题。然后作者提出了一个令我印象十分深刻的问题“你桌上的书是乱的吗?”,书中的学生也提出了我想问的问题“为什么我学了一年的编程,却还是不知道怎么写程序呢”,说实话,到现在我还是不怎么明白如何去写程序,当然作者也给了我们回答“他学了,也把知识学进去了,就是不知道这些知识是干什么的。或者说,他不知道各种知识都可以用来做什么”。所以我们要该尝试一下分类,把既有的知识像桌子上的书一样整理一下,最常用的放在手边,而最不常用的放在书柜里,这样桌上的书才不会乱。
一个工程,只靠一个人是不可能完成的,而是要靠一个团队的努力,说到团队,就要涉及到团队的管理,就如周爱民先生在书中所说,三人以上的团队就需要有一个能承担责任的管理者,同时也一定要有一个合理的管理制度,要建立人性化且公平的制度来确保项目的组织是合理的,并通过明确分工来开发项目。团队管理者必须要能承担责任,这是最基本的素质。管理者要把制度做的人性化和公平化,要观察像蚂蚁一样的开发人员,明确分工,但不能坠入蚁巢。
程序员大多数都不擅长沟通,在工程过程中沟通者必须进行次数少且保证高质量,实现对象是软件工程体系的基本动因。只有双方都能准确地理解对方的意思,才能保证最后工程实现的内容是准确的。书中提到了“最简沟通”的概念,即在了解客户需求、市场因素的情况下,设计好自己的问题和提问方式,用最高的效率进行沟通。并且我们不仅要学会于客户进行沟通,还要“为不存在的角色留下沟通的渠道”,要做到“有史可查”,我们做项目的时候,如果也不留下历史记录(History),那么以后别人来看这个项目,也会是两眼一抹黑。
失败的过程也是过程,失败也是编程中不可或缺的一部分,不能为了工程而工程,并且在工程的过程中,要“组织”工程,分工明确,步调一致,共同地完成这个项目。语言只不过是为了完成工程的一种工具,作为开发人员,我们的目的是为了实现对象,不需要因为语言的精简、细节而拖延了项目的开发。实现,是软件开发的本质需求。因此类似于过程、单元、记录(结构)、对象等的出现,其实都是出于编程实现的需要。
“道”是规律,如果明“道”,而可以变化无穷,这样做软件工程才是活的。因此在以后学习软件工程的过程中不可避免的盲目与停滞,要懂得变通,要懂得“道”的道理,软件工程看似复杂,但只要我们能够抓住其核心思想,用简单的方法去解决复杂的问题,就能够事半功倍。我相信,在未来的软件工程实践中,这本书将会成为我宝贵的参考和指南。