《构建之法》第四章、第十七章读书笔记
第四章 两人合作
在第四章两人合作,我重点阅读了“代码复审”和“结对编程”两个部分。
代码复审。书中的定义是:看代码是否在“代码规范”的框架内正确地解决了问题。代码规范在书的前面部分描述的很清楚,简明、易读,无二义性,我想代码规范在结对编程中不会造成太大的麻烦,因为在平时编程的过程中都会注意代码格式。代码复审最重要的部分应该还是检查“是否正确地解决了问题”。代码复审的目的即在于找出代码的错误,主要是逻辑错误、算法错误和潜在的错误,我认为这部分应该是最难做也是最重要的一部分。在“为什么要做代码复审”这一小节,书中重点强调了“做中学”的思想,理论上新成员应该在完全掌握了知识之后再写代码,但是会受到时间的限制,并不能真正达到先学再做,只能是边学边做,在“做”中学。对于“做中学”,我是比较赞同的,学一点儿理论知识,就把理论知识付诸实践,能够加深对理论知识的理解,但是在“做中学”的过程中,经常会遇到的一些问题就是,知识太零散,只关注了在做的那一部分,做的那部分能够很好的执行,却不能将两个分离的知识连接起来,没有系统地去开发,零零散散学了很多知识,却不能完整地做出一个项目,其实也是蛮耗费时间的。至于如何来做代码复审,也需要按照步骤来进行,记录复审前的代码,复审后的代码;写好代码复审的核查表,就概要部分、设计规范部分、代码规范部分、具体代码部分、效能、可读性、可测试性等方面进行研究和记录。
结对编程。对于这一部分,我知道开发一款应用,单枪匹马是比不上团队合作的,因此结对编程能够帮助我们提前熟悉团队合作进行开发的流程,以及克服团队合作所面对的种种困难。我认为结对编程过程中最难的一部分应该是代码的磨合部分,每个人的编码思维和风格都不一样,甚至在水平上也有所不同,或许就如书中所说,也许结对项目两个人中一个人就能包揽整个项目,而且还能做得很出色。这对于结对编程中比较弱的一方确实是个挑战。当然,我所希望的结对编程是能够双方都能够在结对项目中学到更多的知识,达到合作互利的目标。
第十七章 人,绩效和职业道德
猪、鸡和鹦鹉的故事。我给目前自己的定位是“鸡”---也就是“参与者”的角色,能够出一点点力,但是不能完全投入到整个项目当中去 。为何只是参与而不是像“猪”一样全身心地投入进去?明明知道要想把一件事情做好必须要付出大量的时间和精力,必须要不断地实践、实践再实践,必须要在错误中学习,在错误中成长,在错误中进步,但是偏偏在现实生活中却不能做到这一点。我承认我确实没有全身心地投入到软件工程这个专业中来,我学习知识还是零散着学,老师叫我做什么,我就做什么,除了布置好必须要完成的任务,也没有花很多其余的时间再去扩充一下自己的专业知识和能力。由于这样子的“不付出”,现在的我变得特别被动,因为能力的缺失,不能按时按量地完成简单的编程小任务,确实给我也带来了挺多的麻烦。我希望自己能够在思想上做出一些改变,多分配一些时间给专业课学习,慢慢地把自己的角色由“鸡”转变到“猪”上来,在团队项目中做一个“做事的人”,而不是“拖后腿的人”。
萝卜和白菜。先简单地介绍一下“萝卜”和“白菜”:“萝卜”做事很快,是“萝卜快了不洗泥”类型,在开发阶段做出的功能挺多,但到了稳定阶段出现的问题也很多,于是又去解决很多问题,虽然到了最后的阶段,萝卜工作的最晚,但是他却是唯一了解其模块的开发人员。“白菜”做事很慢,是“慢工出细活”类型,白菜在项目开始前会花很多时间跟项目经理和测试人员讨论,能在规定的时间内完成任务,没有出现太多的问题,还能帮助其他成员,但是因为不熟悉其他人的模块,修复的缺陷也不是很多。“萝卜”和“白菜”的对比之下,我认为“萝卜”类型的开发人员更优秀,他们是在“做中学”,虽然在开发的过程中遇到了不少的问题,但是如果将问题解决了,他们学到的知识也是非常多的,尽管在这一次项目开发中不能够按时交上,但是在今后的开发中会很清楚问题所在,解决问题的时间会大大减少,开发也就快了,最终他们总是会高质高量地完成项目的开发,而这一个过程是需要他们大量去付出,去经历的。