具备良好的阅读能力并能够清晰的表达出来是作为一个软件工程师最基本的素质和要求。因为只有这样,我们才可以更好的读懂客户的软件需求,并按着需求更好的做好我们自己的产品。“这句话使我认识到了作为软件人的阅读能力的重要性。还有就是只有你自己亲自去实践了,才会发现问题;只有你自己亲自动手解决了,才叫真的解决问题。
一个产品的问世以及发展状况,就如书中所说的飞机的产生类似:经历了纸飞机/飞机模型——爱好者的尝试和探索——飞机的产生与流行——带动了飞机航天航空业的发展——飞机的完善,根据实际问题进行功能的完善和安全机能的提升。但与此同时它却确又有着自己的特性:复杂性,不可见性,易变性,服从性和非连续性。除此之外,不仅讲述了软件产品和实际产品的差别,还从不同程度上介绍了软件工程和计算机科学的不同特点,以及各自的发展前景和相互之间的联系。从某种程度上说明了不同的产品在不同的领域的客户的眼里的实地可利用价值是不同的,就如此书中所说的每一辆车在出场的时候都会经过严格的功能检测,应该都是好车,不会有类似于软件中的”Bug"的存在,但是你问路人哪些车好,他们总会给出你明确的答案。有实际用处的同时又是完美的软件,在世界上是不存在的,只有顾客眼中对软件产品的满意。
而第二章的内容先对第一张来说更偏向于技术性,在团队合作中,如何保证自己所负责模块的质量的稳定,这就对自身的技术和一些良好的代码书写习惯有一定的要求。这里除了之前接触的代码的整齐(段落划分),变量值和文件的命名,还有注释的要求之外,这里重新提到了一个新的名词,即单元测试。而这个单元测试必须有一定的独立性,它不依赖于别的测试,可以人为构造数据,以保证单元测试的独立性。有了个人的技术还不行,还得需要团队的合作。俗语说:“你有一个苹果,我有一个苹果,两个人在一起就会有两个苹果。”但是软件思想以及团队的合作并不是如此,并不是简单的叠加,应该进行系统的回合,成为“思想结晶”。一个人是可以写代码,但是写出来的都是一些比较简单的,含有很多bug的代码,团队不仅有一致的目标,而且分工还比较明确,互相依赖合作共同完成任务,这样就可以大大的提高软件的生产效率。而在第五章,此书就介绍了几种软件团队模式,不同的团队模式有不同的优势,应该根据自己的实际情况选择合适的团队模式,最大化的发挥自己的价值。
我们在编写程序的时候,总会通过不停的调试修改使之能通过编译,但是通过编译只能代表它的语法正确,不能代表程序的语义正确,而单元测试正好可以帮助我们检验程序(软件)的语义正确性,在实际的工作中,可以不必过分强调先什么后什么,重要的是高效和感觉舒适。从经验来看,先编写产品函数的框架,然后编写测试函数,针对产品函数的功能编写测试用例,然后编写产品函数的代码,每写一个功能点都运行测试,随时补充测试用例。