构建之法 读后感
在读这本书以前,我对软件工程的概念几乎为零。在我的认知中,所有用那些计算机解决,或者说使它更加方便的问题,无非就是一些程序合在一起,越复杂的问题,程序越多罢了。但是在读了《构建之法》的前三章之后,我刷新了对软件工程作为一门工程,是如何与计算机理论,或者程序理论有着显著的不同的。
首先书本的前言给我留下了非常深刻的印象。“传统教材里的软件工程,都是在没有竞争的环境下做软件’’而这本书要教会我们的,是如何‘Build to win’,以在市场上赢为目标。这让我不禁联想到邓老师在课上讲的,假如你的软件时间复杂度较低,很有可能给公司节约大量的资源和机器,从而获得丰厚的利润。
当然,这本书的内容远远不止这么简单。
如何才能赢呢?乔布斯曾说“创新就是极致的用户体验”。为了达到赢的目的,需要进行需求分析切中人们的痛点。做成一款极致的软件并不容易,除了大量的源程序,还有程序之间的结构,整个系统的耦合。因此需要一个良好的软件开发流程以提高包括开发,运营,维护的效率,提高安全性,稳定性,最终提高用户满意度。因此一个好的团队非常重要。这本书给了很多关于团队合作,团队管理,领导力等很有价值的建议。包括如何利用考量项目的大小,时间,以及质量等来计算个人贡献,最后分红。这样可以避免出现划水的现象。
在开始团队开发的指导前,本书先强调了个人能力对于团队是否能跑赢的重要作用——“正如足球比赛一样,就算战术再强大,合作再紧密,如果个人的体力,速度或者力量不行,也是无济于事的”。为此,本书介绍了很多提高个人编程能力的建议,我觉得很受用。诸如单元测试,效能分析,个人开发流程等。
作者指出一点我们常犯的错误,以为投入的时间越多,回报越大。“这一点有点像《人月神话》讲的内容”。他举了一个例子,高级工程师很早就下班回家了,初级软件工程师却一直在工作,赚的钱也比软件工程师少很多。
特别的,作者还diss了一下中国科学技术大学。从这份对比我想到上学期数据结构大作业整的我要死要活的。现在想想那个时候编程不带脑子,不懂得去反思,提高自己的编程水平,以减少重复工作。但不管怎么说,希望通过软工的磨练我能增强自己的实力吧。