《大道至简——软件工程实践者的思想》读后感
大道至简,指的是任何大道理是极其简单的,简单到一两句话就能说明白。此一概念,不仅被哲学流派诸子百家所重视。也被宗教流派道教等使用,然而运用于软件工程领域,作者周爱民传递出“工程其实很简单,只是大家把它做复杂了”的核心思想。而这一本仅仅一百多页的书,更加印证了作者的观点——“大道至简”。
文章一开始便指出了编程的根本:顺序、分支和循环,并用愚公移山来举例。这让我明白了为什么刚开始接触C语言是便开始学习If条件判断,for、while和do...while循环等等,这些都是编程的精义,任何一个庞大的工程也都可以通过这样简单的编程来实现。这也就说明了只要不是先天智障或后天懒惰者,都是可以学会写程序的。
编程最重要的不是Coding,而是搞清楚做什么。如果你自己都没有理清其逻辑方法,又怎么指望计算机去理解你想做什么并做好呢?所以编程的第一要务是先把事情分析清楚,事件先后的逻辑关系和依赖关系搞清楚,然后再去代码实现。这让我想起了初学C甚至半年后学习C++时老师依然强制要求画出流程图。很长一段时间内我都对这种要求置之不理,认为这种程序只要把代码写清楚,能实现就可以了。直到一段时间前,做了10个较大的程序,发现其中的逻辑关系很难理清楚,但如果画出流程图其中的结构顺序便一目了然。后来又读到了这本书,才深刻明白了流程图、UML图、用例图等这些的作用。积极工作和勤于思考都要占时间。愚公积极工作“叩石垦壤,箕畚运于渤海之位”,然而想要完成这个庞大的工程需要300年,如果能停下来休息会儿,为什么不思考一下碎石的技术呢?第一个编写代码的人,往往是最后一个下班的。第一个完成关于编程本质的人提出了一个公式“程序=算法+结构”。我理解这个公式,将此类比于盖房子,算法便是画出图纸,结构便是指出构建顺序,这两部分都清楚之后,Coding只是一个劳力活。
做程序一定要“懒”,因为懒人才会创造方法,懒人才会去想如何避免去写重复的代码。在一开始进行面向对象程序设计学习的时候,我很不理解为什么要去创建一个类,在类中写方法;明明一个程序可以面向过程写出来,为什么非要分出好多类。读完这本书之后真的有了更深的体会。要是一个有几千行代码的程序,我们真的要一行一行翻着去找吗?“懒人”的答案是否定的。
之后书中谈及的制度管理、团队管理、与客户的沟通等篇章与我还相隔甚远,因为没有实际的经验相结合,读起来也有些吃力。不能保证完全读懂这些内容,所以下面的话仅是当做一种对未来学习或是工作中的建议。
“三人为众”,所以一个团队至少会由三个角色组成:项目经理、开发经理和开发人员。三种角色各司其职,这能保证团队的效率最大化。这是一种硬性分配。另外,如果一种角色短缺,你可以及时顶替。这是一种弹性分配。弹性分配可能需要时间去锻炼,你不可能瞬间了解一个从未接触过的领域。
制度管理方面,永远不要打破原有的、既定的制度。管理者动摇了制度,造成的管理不公现象,会很大程度的影响团队之间的合作。另外,如果你是一个新来的管理者,更不要动摇原有的制度。你只要负责观察,发现哪里有运行合作的bug,然后修改就可以了。
与客户沟通永远是一大问题。想要最大程度上的满足客户的需求就要尽可能有效率的完成与客户的交流。永远不要期盼能用UML完成与客户的交流,隔行与隔山,这种行为与用甲骨文交流没有什么区别。所以,尽可能找到一种平衡,使我们能与客户进行有效的交流,了解客户的需求。
对于我而言,在软件工程的道路上只是刚刚起步而已,书中的内容不免有一些苦涩难懂的地方。在过三年、五年、十年,学习的更加深入,接触了庞大的工程之后,再次拿起这本书时或许会有不同的感受。“道之为物,惟恍惟惚”,或许在那一次编写代码的时候,便得道了……