软件工程相关书目之《大道至简》读后感
截止今天7月30号,读完了《大道至简》这本关于软件工程的书目。其实在此之前对软件工程并没有太深的了解,仅以为软件工程毕业的学生就是去做软件,今天读完了《大道至简》,确实改变了我对软件工程的认识,最主要的是,对工程两个字的认识。
其实在大一上学期的时候,我的编程思维还是习惯于面向过程的编程方式,一直到大一下学期学习了C++之后,因为并没有具体的项目或者正儿八经的作品去做,觉得C++里面向对象的编程有很多在教学上都是生搬硬套,不如面向过程的方法来的简单直接,总的来说就是不能理解面向对象的精髓。但是在暑假小学期的实验中,发现面向对象的编程方式使得思路更加清晰,程序更加模块化,在出现bug进行调试的时候,也发现模块化的编程方式更易于调试与修正,至此对面向对象的好感油然而生。那么,在阅读《大道至简》之后,更是理解了编程的精义,即程序=算法+结构。而总体结构->面向对象,关系->数据结构,实现->算法,这三段更是生动的解释了面向对象编程的过程,形象的展示出面向对象的思维方式。
书中有很大一部分是针对管理者,客户,团队成员的关系的内容,由于没有这方面的经历,对这部分内容感受不是很深,但是我十分赞同的一点是“流于形式的沟通,可能是使得你的项目被不断推翻和不断延迟的最直接原因”,流于形式的沟通在生活中还是比较常见的,像吃饭、打回访电话等等,很多诸如此类的沟通方式使得交流感情仿佛成了沟通的目的,而忘了沟通的本质是解决修正项目中遇到的问题和困难,最后才是交流感情。
本书最大的亮点是用生动形象的图画和具有深刻韵味的历史典故来形象的说明软件工程中的思维方式,问题出现的原因以及解决问题的方式。印象最深的是“刻鹄类鹜”和“画虎类狗”的引用,真切的阐述了“越是简单的东西,往往越是接近于本质”的道理,着实引发了到底是选择架子还是选择骨子的思考。
令我最有感触的一章是“从编程到工程”。首先说明,语言只是工具。之前我还由于C和C++较之java、Python等语言缺少很多诸如排序等的内置函数而疯狂的“抨击”C与C++之“难用”,但现在却发现只是每种语言所更擅长的领域不同,选择语言不是因为它在“1+1=2”类的问题上可以用多么短的代码去实现,而是“术业有专攻”,认识到某种语言更适合哪个领域才是正确的思想。毕竟高射炮打蚊子看上去总是不恰,用纸去挡子弹也同样是天方夜谭。至于如何将思维转向面向对象,我想到的解决方法是每做一个东西之前分析这个要做东西的结构,各部分的关联,然后根据自己的分析判断如何去用面向对象的方法实现更合理,只有思路清晰,才能开始“代码”这个劳力活。
然后谈谈我对工程的理解,之前,“工程”与我而言就是和房屋、建设类的项目挂钩,如此片面的理解至今让我汗颜,甚至从没想过做软件也是一门工程,当今软件规模的增大、团队的愈加庞大、组织的细节、角色的分配以及需求、配置等方面的分析,确实可以将软件称为一门工程,“软件工程的体系中,‘实现’作为软件开发的本质需求和基本动因,如同上帝之手在推动这几十年来的软件工程理论体系的形成”。
“你能把每一个‘管见’拼合起来,你得到的才是‘豹’而不是‘斑’”。要想真正的审视软件工程,就要从软件工程的本质上去思考问题,而不仅仅是关注“斑”。软件工程由于其灵活性,需要软件工程体系中的各部分人员“知律而变”,才能达到最好的结果。
从此以后,我也会深切的将软件工程的思想应用于实践,以一个软件工程实践者的身份,更深入的去理解软件工程,做好软件工程。