”构建之法“——我会用一学期的时间去读你懂你
软件工程
1:为何读“构建之法”
抽出时间,看看软件工程这本书,就像老师说的“好书不读就浪费了,怎么也49块”。不读还对不起我们的毛爷爷呢!刚刚拿到这本书的时候,“构建之法”映入眼帘,心里在想这本书是在教我们怎样去“建造”好一个软件吗?怎么这样取名啊?一开始我只是任务式的看完一到第五章,只是单纯的看并没有太大的思考。不得不说,相对于别的书籍,这本是那样的枯燥乏味,没有一点点的吸引力,一眼看去,全都是理论知识,没有实际的相关操作。要用心看下去是挺难的,因而对于每一章我都是一眼带过,想的只是怎么快点看完,并没有想其他的。这是我第一次阅读这本书的想法和结论。
但当我读第二遍的时候,我就不然而然的换了种思想,为什么老师要我们看书,恐怕不是只为了不浪费钱,更多的是让我们接触了解软件工程究竟为何物。于是心中就产生了一些疑问“什么是软件工程,为什么我们要一个学期去学习”。带着这些疑问,我重新阅读了一遍“构建之法”,用四个字可以概括“受益匪浅”。
2:看完书后的第一感觉
看完一到第五章后,就自然而然的把一到第五章串成这样的一条线:什么是软件工程,个人在写代码的时候怎样做才能写出高效有用的代码。以后作为软件工程师又应该怎样的不断进步,怎么在团队中找到适合自己的位置。对于一到五章,这样串线不知道对不对(第一个问题)。
3:疑问解决,心生愉悦。重生疑问,如何作答。
看完第一章,恍然大悟,原来这就是软件工程啊。一直以来,我以为软件工程就是和建筑物的构成是一样的,只是系统的、机械的把所有的代码有规律的集合在一起,从而构成一个软件。看完定义才知道,软件工程是“把系统化、规范化、可度量的途径应用于软件开发、运行和维护过程”。软件可以成为商品,但又不同于别的商品,它是一个逻辑产品,具有抽象性和易复制性,由程序和软件工程组成。软件也会像楼房一样慢慢出现裂痕,这时候就需要维护保证其可用性和耐用性。这时候程序员就要重新检测自己的代码哪里出现错误,怎样维护才可以补救。与其出现问题后才补救,不如将问题扼杀在摇篮之中,这时候的就出现了“单元测试”。单元测试可以有效地保证模块的质量。诸如此类的还有效能分析测试,就是
说对于同一个功能,在保证功能不受损的前提下,怎样的代码才能节约系统开销。例如33页中的for()循环条件,只是将i<m_wordlist.Count改为i<count,System.Collections.ArrayList_get_Count()的调用次数和时间都大幅度的减少,关于这一点我一直都想不明白,只是换个条件为什么差别就会这么大,这是什么原因导致的,以后我们写程序的时候怎样避免这种现象的产生。(第二个问题)
4:“团结就是力量”,善于运用团队,发现无限潜能。
第二次作业的时候,当老师提出结对子的时候,我就觉得只是这么一个小小的程序,没有结对子的必要性吧。刚开始结对子的时候是带着一点点抵触心情进行的,可越到后来越发现结对子的好处。尤其是看完书后觉得,结对子不是单纯的从一个人变成2个人写。而是从一个角色变成另外一个角色,就像是领航员与驾驶员,在不同的位置完成不同的任务,但目的都是一样的。”代码复审“是一个比较难理解的名词,是说重新把代码从头看一遍,然后再找出错误吗?如果是这样,那为什么不叫做”代码重检“呢?书中详细的介绍了代码复审定义,代码复审步骤及意义,但我依然无法明白“代码复审”究竟是什么意思。为什么只要求在“代码规范”的前提下检测代码呢?(第四个问题)
俗语有说“你有一个苹果,我有一个苹果,2个人在一起就会有2个苹果”,思想也是如此,但思想不应该只是简单地相加,应该进行系统的汇合,成为“思想结晶”。软件的产生需要的是一个团队,一个人是可以写代码,但写出来的都是一些功能相对简单,含有较多bug的代码,但是团队不仅可以避免这种情况,团队不仅有一致的目标,而且分工明确,互相依赖合作共同完成任务,这样可以大大提高软件的生产时间和软件利用率,这也是为什么要有团队的原因。第五章84页开始介绍了几种软件团队模式,看起来每一种都有自己的优势。对于没有团队合作经验的我来说,应该怎么去选择合理有效的模式呢? (第五个问题) 。是根据具体情况?还是听从团队成员的想法决定模式。我想应该都不是这样吧。
5:启发人生思考,未来怎么走,现在应该怎么做,做什么。
未来是怎样的,谁也没有办法预料。所以我们应该把握当前,为自己努力。“软件工程师的成长”让我更好的了解了未来的路应该如何走。我报考了2015年5月份的软考程序员,想一步一步的努力,最后得到软件工程师这个证书。有时候会想,我只是很简单的学习了软件,只是会编写很简单的代码,而且我们是2B学校,以后出去找工作真的能找到一份好的工作吗?尽管第三章讲解了如何成为一名“软件工程师”,如何检测自己是否为合格的工程师。书中的第45页详细的介绍了“初级工程师的成长”,我也在反思自己有没有做到书上的其中一点,怎么才能做到。想了很久也没有想明白。我到底一样怎么做才能成为一名初级软件工程师(第三个问题)。是从软考最底层的程序员过度到初级的软件分析师,最后再考软件工程师。还是说我按照书本的45页的关于初级工程师的介绍,积累了相关知识等,最后才去软考“软件工程师”。
6:总结
看完此书最大的收获就是知道一名合格的软件工程师是怎么样的,要怎么做才能进步。书可以读很多次,每一次都会有不同的感受,对事物都会有不同的认识。我想这可能就是成长的一种表现吧,随着成长我们队许多事情就会用不同的角度思考。对于“构建之法”,我也是这样认为的,现在我只是很粗浅的认识了软件工程,谈不上任何实际,但一个学期的量变可以让我看到质变,到那时候再细细读,可能就是更加有感受,更加知道怎么做才能学到自己想要的吧。
加油吧,少年!精彩的人生正等着我们每一个人呢!