《构建之法》读书笔记
虽然因为上课的原因,并未能够将这本书全部读完,但读过的一部分章节也给我留下相当深刻的印象。或者说,将我原来的对于软工的印象完全颠覆。在选课之前,我本以为软工就像是和原来的C语言还有数据结构上机实验一样,只要随便写个程序输出一个结果就可以,最多完成一个类似于数组运算器之类的大作业就好。但事实却非如此,正如本书在第一章举出的例子一样,原本那些简单的程序就像是折一个纸飞机,而我们在这门课中需要学习的,却是如何去建造一架真正的飞机。虽然可能并不能够飞的多么高、多么快,但却麻雀虽小五脏俱全,纸飞机即使折的再好,和真正的飞机比起来,二者已经从本质上完全不同了。
书中虽对详细的开发技术讲述不多,仅在第二章和第三章讲述了一些必备的个人技能。但对我这样一个仅仅学过c语言的来说,几乎所有的开发语言和软件使用都要去学习了。好在第一节课上,老师所给的课程安排里是有一个月的个人水平提高期的,也会布置一些软件优化的个人题目,也算是给我一点喘息的时间吧。其次,书中对于软工学习也提出了一些看法。区别于传统的理科科目的学习,头等大事就是对于概念的深度剖析,是那种翻来覆去的一遍一遍讲解练习记忆。反而在这门科目的学习上,只需要简单的了解一下便可以上手了,就像老师上课时说的一句话一样——“书是用来查的”。可能有点跑题,但也算在这里给自己立一个flag吧,争取在一个月内,也就是团队项目正式开始前先了解(并不敢说掌握)一门新语言。
在读过的几章中,给我留下深刻印象的,一是一份关于个人开发流程的综述,二是对于团队开发流程的讲解。首先是对于个人开发流程的讲述,本书将其分为三个部分Planning(计划),Development(开发)和Report(报告),而我最熟悉也是唯一经历的过的Coding仅仅是Development中的一小部分,甚至在书中的统计数据中显示,对于资深软件工程师来说,这部分仅仅占据21%的时间。说来也不是不能理解,就如我在去年的数据结构上机中,一个Huffman Tree的程序,我尝试先在纸上将所有的函数的逻辑关系画出来,最后实际编程的过程的确很轻松。比起我刚刚学习c语言时,想让写出来的代码编译成功就需要不断找错半个小时来说,个人技术水平的确提高了不少。同理,当Coding的水平达到一定程度之后,Coding只是一个照本宣科的步骤(前提是你做好之前的一系列工作)。而这一系列工作要做什么,怎么做,如何做快,也就是软工中我们所需要学习的部分了。
而在团队开发流程的讲解部分中,本书则分别介绍了主治医师、明星、社区等多种模式。其实说到底,个人认为无论是哪种模式,其中最为关键的一点就是各司其职,每个都做好自己分内的事情,无论是开发、测试还是程序管理。然而各司其职却不意味着各自独立,相互之间的交流同样是至关重要的。就以书中提出的MSF开发模式来说,几乎每一条都离不开交流,书中第四章,两人合作就对如何交流进行了深入讨论,包括结对编程的训练和代码复审的讲述,团队开发,就是将这些任务从两个人扩充到一个团队。看似简单,但实际中往往会出现一些问题,这也是我们后续的任务中所需要注意到的。
最后,也就是对于我们的团队项目,个人认为书中提及的渐进式交付开发模式极为适合。一开始先可以将目标仅仅集中于二手书的交易,后续维护中可以逐渐加入其余二手物品交易、书籍的租借甚至是失物招领。
艾寅中 PB16061489