《构建之法》读书笔记
十多天前邹老师在博客上留言问我读这本书了没有,我很不好意思的回复了一句只读了前几章。我没有在一周内快速通读全书,也没有在之后的几天把课本读完。不过现在我已经通读一遍了,虽然已经过了一个月了。感触颇深啊!
第一感觉就是“软件工程讲的净是一些奇妙玄幻的概念,拗口的专业名词加上纷繁的复杂的流程”(教材P142,二柱的话)。虽然二柱也说“其实做软件完全没那么难,主要靠的还是程序员自身的修养和完成工作的素质”。但是对于我来说还是有点难了,说人话就是这本书我基本上没看懂,尤其是这种还没有细读的情况下。不过读一遍有一遍的收获,或多或少。
读书先看目录,一开始我也不知道目录写的都是什么东西,不过现在感觉基本上是按照瀑布模型展开的。在常规的瀑布模型之中添加了一些必要的知识章节。比如第六章介绍了敏捷(爱脚儿),第七章说的是微软解决方案框架(Microsoft Solution Framework,MSF)。这个课本与平时用的课本是不一样的,没有把理论的东西集中讲解,是分散到各种对话,小故事之中了。这样理解起来比较容易。而且里面的内容还是十分贴合实际的,第五章讲团队的时候提出了许多软件团队的模式,有一个是主治医师模式,最后有句话说“在一些学校的软工课上,这一模式往往退化为“一个学生干活,其余学生跟着打酱油””。一句话就指出了这个“抱大腿”的现状。感觉如果能抱住一个大腿,人生就成功了一半。印象比较深刻的还有最后一章,那个猪、鸡和鹦鹉的故事在课本中间也多次出现,很贴合实际的比喻,想要表达的内容也能很快理解,然后引出RASCI模型,不过我的第一印象还是猪、鸡和鹦鹉,对RASCI模型没什么印象。感觉自己读书是比较失败的,整本书基本上没有和我产生共鸣,从头到尾就是我在机械的读文字,感觉不到文字里面的内容。唯一让我眼前一亮的是第四章讲的代码规范,感觉就是为我写的似得。其他的章节都一个样了,形同陌路的感觉。
我找了找自己的原因:
1.基础差,基本上没有属于程序员的修养,停留在刚开始接触高级语言学习编程的阶段。有句老话叫没学会走路就想跑,感觉自己有些急于求成了,基础不好但是课程不等人,这就是现状。我现在连小程序都不能够顺利篇写出来,即便编写出来还是会有许多Bug存在,这种情况下我不认为自己可以理解软件工程的课程内容,这门课程在大三开设必定是因为需要一定的专业基础的,而我的专业基础还停留在大一阶段,学习起来难免无力。套用一下公式:软件=程序+软件工程,程序都写不好怎么去加软件工程,怎么去等于软件;
2.拓展面比较窄,课本里面的各种英文缩写都不知道什么意思,阅读存在障碍。例如课本P51“在和别的角色(例如UX/PM/QA)打交道的时候”,这些都什么意思我根本不知道啊,然后就去问度娘了,度娘说:UX(User Experience),用户体验;PM(Product Manger),产品经理;QA(Quality Assurance),质量保证。姑且信她一回。一开始我是去看课本后面的索引了,后面的索引只是指出了出现的页数,并没有注释,后来就放弃了。看到最后才发现PM竟然还专门拿出一章的空间去讲解。第十二章也有UX出现,而且给出了解释,虽然是汉语给出英文注释以及缩写。敏捷流程的哪一章有个方法论Scrum,不知道是干什么的,而且多次出现,感觉很影响理解。问过度娘之后知道Scrum是一种迭代式增量软件开发过程,应用于敏捷开发。Scrum Mater即敏捷大师(来自度娘),Scrum Meeting即每日例会(课本P107),没有特定的意思,也许是不同场合不同理解吧;
3.实践经历比较少,没有形成自己的思想。人要有自己的思想,否则就是行尸走肉,任人摆布。这个课本弘扬的是做中学的教学方法,实践中学到一定知识,只是我的情况比较差,自己思考和动手能力都比较弱,难以跟上课本的跳跃。例如单元测试,看着班级助教演示了一遍挺简单的,自己去实践的时候问题百出,不是我不想做好,是我做不好。我每周基本上稳定20小时以上的时间交给软件工程课程,需要编写代码的时候更多,即便程序不难实现但我也需要很长时间,上次的WC程序,就一个统计空行数就整的我焦头烂额,好几个小时时间就浪费在它身上了,无力啊!
我就不列举问题了,自我认为只有了解内容才能提出问题,我这种走马灯似得读书是读不出深意的。没有含金量的问题提出来也没什么意义。
不过还是想斗胆提一点建议(可以无视):
1:如果课本要面向各个等级高校,后面的索引真的很必要。也许北航的学生读者各种英文缩写能理解,但是不代表沈航的学生也能理解,或者说不能理解的学生数量不能忽略。如果第一章的课后题要求依然是一周之内快速读完整本书,希望邹老师能把这些缩写的全拼以及汉语意思也写到索引里面,不是不想百度,是没有时间百度。也可以把通读全书的时间放长一些。
2.邹老师的索引好像不太全。34页出现的PSP以及152页出现的PDA都没有出现在索引里面,还有一些是出现在这一页索引里面并没有标出来。类似的问题我就不一一指出来了。
3.断章取义的借用课本161页的这句话“软件工程师的【能力】没有合适的衡量单位”,邹老师的课程在北航等班级取得成功,然后这学期我们也进行了课程改革,同样是一个专业的,都应该差不多吧。虽然自己口中一直说着自己不比他们差,但事实是差的不是一点半点。我在博客上看到了2014年3月份的电梯调度作业,和这次作业差不多,不过人家基本上都是用C#写的代码和界面,我感觉自己周围的同学至少一半不能用C#写出来程序和界面。正因为没有衡量单位,所以才会出现自己不比他们差的错觉。极端的举例一下,把大一学的高数分别给高三的学生和高一的学生学习,一样的老师必然是不一样的结果。感觉高考就是把人分为三六九等的一种能力上的划分。至少邹老师的课程要求对于我来说有点难了,毕竟一口吃不成个胖子。过大的压力不是所有人都能承受的。不是不相信自己,是没有实力相信自己,可以自信但不可以自负,端正的自我评价也是必须的。优秀的学生有,但不是所有的学生都是优秀的学生。再借用一下194页的这句话“我们的软件不是为所有人服务的”,所以软件需要定义典型用户。也许邹老师的教材也不是为所有人服务的,但希望不是定义过典型用户后的产物。我感觉自己学习的很艰难,也很努力,但收获很少。(这段话仅代表自己的想法,来自底层人民的无力的呐喊与彷徨,跟不上啊。着一定是我自己不够努力的借口。fighting!)