所有软件工程教师与学生都值得一读的书_构建之法书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 教育 > 构建之法 > 所有软件工程教师与学生都值得一读的书
牛蛙 构建之法 的书评 发表时间:2015-03-31 09:03:22

所有软件工程教师与学生都值得一读的书

在有幸从周筠老师处获赠《构建之法》这本书之前,我就已久仰作者邹欣老师的大名了。多年以前就读过他的《移山之道》,和其他许多干巴巴地在书中罗列各种空洞概念的软件工程类书籍不同,此书别出心裁地把软件开发模型(MSF)与具体的开发工具(VSTS)相结合,介绍的还是在当时比较新颖的敏捷开发,并以故事的形式展现出来,读起饶有趣味,但又不失深度。这本书不但体现了邹老师深厚的内功,还体现了他优秀的语言组织和表达能力以及最重要的——一颗热忱的心。

后来又顺藤摸瓜,接触到了邹老师在博客园发布的《现代软件工程》系列教程,不禁直呼:谁要是能做他的学生,简直是太幸运了!一般来说,在各个高校中教授软件工程、项目管理、质量保证和软件测试等课程的老师,都不太会有在企业中主持中大型软件开发项目的经验,而邹老师不但有着丰富软件开发与项目管理经验,而且也有在高校中任教的经历,所以他的教程不像很多技术博客上的文章,虽然针对某个技术问题有十分详尽的解释,但是知识点却比较零散,无法组织成一个完整的体系,也不太清楚初学者们容易感到的困惑的地方到底在哪里。根据他多年以来在多个国内一流软件学院授课的经验,这套教程已经形成了一个完整的教授软件工程的体系,十分适合所有对软件工程有兴趣的学生、教师与技术人员们学习。

《构建之法》这本书可以看作是“现代软件工程”系列教程的扩充与总结,是我看过的软件工程书籍中少有的适合直接拿来直接作为教材的书籍(当然,本书的目的是为了让读者们真正的懂得软件工程是什么,能做什么,该怎么做,而不仅仅是应付各种考试)。本书的一开篇就分析了目前国内高校中软工课程的教学现状与师生关系(作者的微博上还有相应的吐槽系列),很多场景简直就是活生生地出现在我们的周围,我作为软件工程系的专业教师,体会更是深刻。书中提出了最理想的师生关系是“教练/学员关系”的观点,我深表赞同。反观周围的不少老师,包括自己,在教学过程中,往往采取的是书中“保姆/幼儿”的关系,巴不得把所有知识都掰碎了,咀嚼好,然后喂给学生们。虽然这种方式可以保证大部分学生都多少学到些知识,可以做到课堂内容充实,条理清楚,还能有助于学生打分的提高,但是其实大家都清楚,至少对于软件工程、计算机等工科专业来说,不实实在在写几千几万行代码,不反反复复修复各种奇怪的BUG,开发水平又怎么能提高呢,更不要说团队合作编写一个稍微像样的程序了。而这些学生中最优秀,对计算机真正拥有浓厚兴趣的那一批人,往往会主动加入老师们的实验室,形成“教练/学员”的关系。在这样的环境中,他们往往不得不去学会在压力面前如何自行解决问题,所以四年下来,他们的水平已然拉开了其他的同学们一大截,自然在就业时的竞争力也提高了许多。虽然因为各种原因,要形成这种理想的师生关系很难,但是如果每一位老师和学生一起努力,也并不是遥不可及的事情。邹老师的这本《构建之法》,就是很坚实的一步,从微博上的反馈来看,许多对软件开发有兴趣的同学,也正因为这本书,被激起了他们的兴趣与热情。

接下来的篇幅,邹老师就软件工程中的方方面进行了介绍。在我看来,本书最大的优点,就是内容覆盖特别全面。从基本概念到职业规划,从瀑布模型到敏捷开发,从软件测试到质量保证,从代码规范到用户体验,只要是软件开发会涉及到的方面,这本书中都涉及到了,绝对的“一站式体验”。如果是想要加深自己对于软件工程的理解的读者,又苦于没有太多的时间和精力将各种经典书籍一本本地看过来,那么从这本书入手,一定不会有错!而且作者在书中并没有太多的长篇大论,而是用一个个实例说明一个个小小的观点,读起来比较轻松。这些例子中有不少和软件工程并不直接相关,而是借用了许多社会生活中的例子,可能对于某些想要通过本书提高自己技术,或者找到现实中遇到的问题的答案的读者来看,略有失望,但是我觉得这样反而是非常beginner friendly。即使读者本人对于要这些例子说明的观点并不熟悉,但是仍然能比较容易地记住这些例子。终有一天,这位读者在碰上同样问题的时候,会先想到这个例子,然后恍然大悟:哎呀,这个例子原来是说这么一回事呀!毕竟,软件工程中“工程”的许多概念,就是借鉴了人类实践了四五千年的建筑工程的概念发展而来。

其次,我认为与绝大部分介绍软件工程或者项目管理的书籍非常不同的一点,就是邹老师非常强调“人”在软件开发中起到的作用。其他许多书籍,往往把重点完全放在各种开发模型、国际标准、项目流程上面,却把如何处理开发过程中人与人之间的问题一笔带过。实际上,我觉得,一个优秀的项目管理人员,真正有竞争力的地方应该是如何挑选合适的人,去做适合他做的事情,同时还能够很好地调节开发团队内部,及开发团队与外部人员之间的关系。本书用了一小半的内容来介绍“人”的问题,如“第3章——软件工程师的成长”、“第4章——两人合作”、“第5章——团队和流程”、“第9章——项目经理”、“第10章——典型用户和场景”以及“第17章——人、绩效和职业道德”。像第5章就非常详细地介绍了一个团队中常见的岗位,以及每个岗位的职责,同时还列举了理想的模式,以及不那么理想但非常常见的模式。如果是有志于从事项目管理工作的读者,读到这里就非常有价值了。还有第4章,就拿一对舞伴互相磨合的过程作为了例子,来说明开发过程中团队成员之间经常遇到的问题,相信有许多有类似经验的,尤其是经历过恋爱的读者们,看到这里,会会心一笑。绝大多数软工类书籍都强调要“加强沟通技巧”,但是如何沟通却完全没有涉及。邹老师实实在在地在书中介绍了不少“说话的艺术”,即使读者并不从事软件相关的工作,这一部分也是很有学习价值的,毕竟世界上绝大多数工作,多多少少都需要人与人之间的沟通。

本书还特别强调了软件测试在软件工程中的作用。在经典的软件工程教材中,软件测试往往不作为整个软件开发流程中的一个重要环节来进行介绍,导致至今还是有不少人忽视软件测试的作用。但是随着软件行业的不断发展,软件规模的不断扩大,软件测试的重要性也越来越凸显出来。由于篇幅所限,本书对于软件测试的介绍自然比不上以软件测试为专题的教材,但是基本上各种基本概念和测试类型都涉及到了,还有不少具体的例子,相信对于软件测试有兴趣的读者,可以按照各个知识点顺藤摸瓜,进一步了解各种测试。作者与时俱进,非常强调单元测试在开发中起到的作用(当然这和他在微软长期从事开发与项目管理工作是密不可分的),而且还提到了单元性能测试,这是大多数书籍所忽略的一点。按照目前的观点,单元测试已经成为衡量一个开发人员是否优秀的重要标准,所以本书在第2章——“个人技术与流程”中就花了很大的篇幅来进行介绍,而这是很多其他经典教材所忽略的。

还有一点,也是许多书籍所忽略的,就是本书的排版看起来十分舒服,采取了对于中文来说比较前卫的空行分段但不缩进的方式(对于经常阅读网络媒体及英文文章的人来说可能非常容易接受),中英文字体及其大小也经过精心挑选,行间距和段间距也十分合理。也许大多数读者不会特别地注意到这点,但是对于我这个有一半工作时间都是在编写各类Word与PowerPoint文档的人来说,可以深切地体会到本书编辑——也就是周筠老师的良苦用心和对于本书的精雕细刻。至少从我的经验看来,一模一样的内容,在不同的排版之下,读者阅读起来的耐心与细致程度是完全不一样的,自然读后的效果也大相径庭,周老师显然不希望排版成为这本心血之作的短板。

最后,邹老师在百忙的工作当中贡献出自己的业余时间,为大家奉献上这样的一本优秀的书籍,为我国的软件教育事业不遗余力地做着贡献,真是让人钦佩。相信像他这样的人会越来越多。

展开全文
有用 5 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读