初读《大道至简——软件工程实践者的思想》,单从书名就能看出,这本书的主要内容是一位从事软件工程实践的专家的思考与心得,是一种思想的体现。我想阅读这本书,定会对我未来对于相关知识的学习和未来的发展产生极大的帮助。
对于我这种初出茅庐的软件工程专业的学生而言,这本书中后半部分的一些内容,包括一些具体实例我是几乎没有接触过的,更别提深入的了解和认识。所以阅读过程中我也通过查找一些资料,阅读他人对于相关部分的了解与认识,最终得出了我对阅读此书的思考与感悟。
阅读之前我先借助目录和网上的一些简介大概了解了一下全书内容,也由此产生了一系列的问题:编程的精义到底是什么?编程要从何学起?如何完成一个软件项目?团队应如何分工合作?怎样与客户进行沟通或者说什么是最简沟通?现实中的软件工程到底是什么样的?未来的我应该如何快速的融入这个行业?未来我应该向着怎样一个方向努力?于是我带着这些问题开启了整本书的阅读。
这本书开篇即编程,从编程入手,借助愚公移山的故事阐明编程的精义,编程的第一要务,程序包含的内容,以及编程语言的运用和掌握。从中,我认识到了编程的根本即顺序、分支和循环以及编程不是一股脑儿上去就写代码而是要从分析事情开始,搞清楚事件的各种关系再去用代码实现。更记住了一句话:积极工作和勤于思考都要占用时间。以前的我总是上去就开始写代码,不去详细分析我要实现的一些内容的先后关系,逻辑不清,导致我编程的效率低下。
其次,作者用李冰团队修堰筑坝和愚公移山做对比,向我展现了编程的发展,时代的进步,并写明了作者对于程序的本质和思考:程序 = 算法 + 结构 + 方法 以及工程的概念。其中令我印象深刻的就是新方法的产生所带来的结构化编程以及对程序的更加深入的认识。之前的我,就像书里面所写的那样:我学了编程,把知识学了进来,能够写一些程序,但是不知道知识是干什么的,我能够用这些知识创造什么。所以目前我要做的就是将所学的知识归类,明确知识的用途,做到真正意义上的会写程序。
同时,这本书也阐明了如何去做项目。从团队入手,借助李离伏剑等例子,论述一个软件工程团队要修订制度,确定组织模式,要体现人性更要表现公平。而作为管理者就要进行合理的角色定位和明确分工。更明确了当一个人进入一个新的团队应该如何去做:就像书中所说:“跟随蚂蚁。但不要栽进蚂蚁洞里”,在跟随的过程中发现规律,尝试改变。这就是团队内部的协作。然后,延伸至完成一个项目,如何与客户进行沟通,明确客户要求并提出最简沟通,这也就是在网络上查看相关的软件系统的特征以抽取客户所关注的内容,深入了解客户所在公司、同类公司以及客户的竞争对手。然后开始进行设计提问,每个问题要具有发散性涵盖更多的信息点,明确项目的实际目标和远期方向,实现一个系统模型让客户操作并提出意见,确保每一次沟通的有效性,促进项目的更快深入推进。这就是团队外部的交流。这对于我未来如何快速的融入整个行业,在团队中更好的发挥我个人的作用而言至关重要。
这本书也揭示了现实中的软件工程其实是大公司手中的算盘。软件业内如今的局面,是大公司们相互制衡的结果。更提出了更为清晰明确的软件工程层状模型。这使得我对现实中的软件工程了解更加深入,通过书中所给出的实例了解到了一些实际问题。同时,书中也强调了细节和枝节的区别:要注重细节,但前提是“这是技术或方法的细部”,要“跳出枝节”,要学会忽略枝节问题,枝节是事实发展的次要分支,它不涉及行为本身,也不是对行为本身的考量。而令我感受最深的就是书的最后一部分中所提到的“知律而变”,“律”若解释为规律就与“道”释为同义,如果明道,可以变换无穷,这样做软件工程才是活的。而另一层意思就是知道原理,对于软件工程实施而言常见的问题是需要我们知晓这些技巧、技术和方法的原理,进而进行变通来回避错误从而解决的。这对我产生了一定的启示意义,使我认识到死学是根本没有意义,不会变通,不会创新,很难成功。因此这提示我在今后的学习中要正确认识规律,学会变通,学会灵活运用,从而实现成功。
总之,通过阅读《大道至简——软件工程实践者的思想》这本书,我明确了之前我提出的问题的答案。同时,在阅读这本书的过程中我也发现了一些我的典型性问题,这本书更是给了我很多解决方法,希望我在今后的学习过程中能够吸取教训,应用书中提及的方法解决自身问题,提升个人能力,做活的软件工程,做真正的软件工程。