本周学习了构建之法的第三、四章,对于如何成为一个合格的软件工程师有了基本的了解;
第三章主要讲述了评价软件工程师的水平的主要方法,技能的反面,TSP对个人的要求;
初级软件工程师应该如何成长:
1、积累软件开发相关知识,提升技术技能;
2、积累问题领域的知识和经验;
3、对通用的软件设计思想和软件工程思想的理解;
4、提升职业技能;
5、实际成果;
如何衡量软件开发的工作量和质量:
a.项目/任务有多大?
b.花了多少时间?
c.质量如何?
d.是否按时交付;
团队对于个人的期望:1.交流2.说到做到3.接受团队赋予的角色并按角色要求工作4.全力投入团队的活动5.按照团队流程的要求工作6.准备7.理性地工作;
软件工程师的职业发展:
1.职业发展——考级之路:如计算机等级考试和全国计算机技术和软件专业技术资格考试以及一些公司自己的认证项目;
2.职业成长——Steve McConnell版本:一个软件工程师需要具备一定的知识和能力,工程师还有职业成长级别;
3.职业成长——大公司版本:大公司对于一个工程师有自己的判断方法;
4.职业成长——自我评估:如何做一个CRUD;
还讲了技能的反面,需要知其然,更要知其所以然。用魔方的例子来进行讲解;
第四章的理论和知识点有:代码规范、极限编程、结对编程、两人合作的不同阶段、影响他人的技巧。了解了结对任务以及结对时应该注意的问题和结对的好处。当我们在编写代码中,代码的规范对我们个人以及团队有很重要的意义,如果我们编写的代码没有一定的格式那么当我们在回过头查看代码的时候就会不知道自己当初写的是什么了,更是会让我们无从下手,而当团队中的成员审查你的代码的时候更是对整个团队造成了影响。讲到代码编写格式,那么我们其中要注意的是每编写一句要尽量的加上注释以便能够很好的读懂每个代码的含义。另外在编写的时候一定要注意我们的命名。
一、代码规范
1、代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。
代码风格的原则是:简明,易读,无二义性。包括了:缩进、行宽、括号、断行与空白的{}行、分行、命名、下划线、大小写、注释。
2、代码设计规范。牵扯到程序设计、模块之间的关系、设计模式等方方面面的通用原则。
包括:函数、goto、错误处理。
二、代码复审
包括:自我复审、同伴复审、团队复审
代码复审的目的:
1、找出代码的错误。
2、发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的
3、发现算法错误,比如使用的算法不够优化,边界条件没有处理好等
4、发现潜在的错误和回归性错误
5、发现可能需要改进的地方
6、教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识
为什么要做代码复审?
1.人不可能不犯错误
2.让新员工快速融入
代码复审的步骤
1.代码必须成功地编译,在所有要求的平台上,同时要编译Debug|Retail版本。编译要用团队规定的最严格的编译警告等级(例如C/C++中的W4)
2.程序员必须测试过代码。
3.程序员必须提供新的代码,以及文件差异分析工具。
4.复审者可以选择面对面的复审、独立复审或其他方式。
5.在面对面的复审中,一般是开发者控制流程,讲述修改的前因后果。但是复审者有权在任何时候打断叙述,提出自己的意见。
6.复审者必须逐一提供反馈意见。注意,复审者有权提出很多看似吹毛求疵的问题,复审者不必亲自调查每一件事,开发者有义务给出详尽的回答。
7.开发者必须负责让所有的问题都得到满意的解释或解答,或者在TFS中创建新的工作项以确保这些问题会得到处理。
8.对于复审的结果,双方必须达成一致的意见。
1)打回去——复审发现致命问题,这些问题在解决之前不能签入代码。
2)有条件地同意——发现了一些小问题,在这些问题得到解决或记录之后,代码可以
签入,不需要再次审核。
3)放行——代码可以不加新的改动,签入源码控制服务器。
列举一个简单的代码复审核查表:1、概要部分、2、实际规范部分、3、代码规范部分、4、具体代码部分、5、效能、6、可读性、7、可测试性
三、结对编程
1、结对编程的好处:①在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。②对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。③在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。总之,如果运用的得当,结对编程可以取得更高的投入产出比。
四、两人合作的不同阶段和技巧
1、萌芽阶段
2、磨合阶段
3、规范阶段
4、创造阶段
5、解体阶段