一.在本学期开始时教师提出要求:通读《构建之法》,之后列出自己的五个问题。以下是我当初列出的问题。
1.对于文中提到的敏捷开发,因为现实中需求一直在变,如果前后需求差别很大,怎么样细化每个成员的任务?
2.在单元测试上,如果对每个模块进行测试时都通过了,那么最后整体测试有bug,该如何是好?如果重新检测代价会很大。
3.书中的理论感觉不太适合小公司开发过程,不知老师怎么看?
4.对于工程师的称号一直很崇拜,一个优秀的工程师应该有什么样的素质?
5.软件工程和计算机专业的理论研究(比如机器视觉,数据挖掘)关系大吗?
现在我的回答如下:
1.对于现实开发过程中遇到的前后需求差别很大,如果在时间足够的情况下应该对每个人的工作作出具体安排。例如以四人团队为例,如果大家都能从事代码的编写,那就由组长分配项目中的具体某一个功能,并规定提交的期限。在每天的站立会议中反映各自遇到的困难并讨论。在提交期限到达时,验收成员代码并整合到项目中,如果还有成员的任务没有完成,应该在后续的工作中减少其任务量,具体来说可以让其负责文档的编辑以及代码的测试。根据燃尽图反映的项目进度,如果出现时间预计不够的情况,应当对次要功能进行搁置,先对主要功能(通常是技术难点)进行开发,使得在发布时能使项目的主要流程运行。
2.对于问题2中出现的问题,在成员开发自己的功能模块时应该对自己负责的模块进行单元测试,最后整体测试出现bug时,由组长进行整体的调试。
3.以作者现在的认知,书中的理论(例如敏捷开发)同样适用于小公司。
4.个人现在对工程师的理解有一下几点:(1).过硬的个人的技能和强大的抗压能力。(2).对于团队的管理以及团队内部利益的分配要制定一套团队成员认可的标准。按照标准评价个人的工作。(3).对于开发过程中遇到的技术路线问题要及时与成员或者PM沟通,不能拖延。
5.个人理解:软件工程偏向工程方面,工程的产品是以服务人为目标,根据人的需求而改变,对工程的实施秉持严瑾.协作.认真的态度进行。理论研究和工程都需要一定的编码能力。
小结:经过近一学期的学习,虽然在编码能力上的长进很小,但是对工程的实施与控制和团队间的协作有了很深的认识。
二.提出问题:
1.老师课堂上讲授的知识几乎和软件工程的书本知识没有很大关系。我本科没有上过软件工程的课,连基本的瀑布模型都是在蹭学硕班的软件工程课时知道的。虽然只讲理论很枯燥,但是也应该要讲一些基础的知识。在这点上不太理解老师的做法。
2.在中期时大家的个人项目和结对项目都没有进展的情况下,估计大家都在忙于团队项目没时间或者不想做了,老师仍然继续发布相同的作业要求,个人感觉意义不大。或者换一下作业内容效果应该比较好。
3.在团队的软件开发过程中如果遇到技术瓶颈,是否应当删掉某部分功能或者外包给别人做?
4.项目在开始的时候预期的功能很全,但是在后来做的过程中由于技术原因不得不舍弃一些功能,那么如何在项目开始时对项目的难度有一个准确的估计?
5.当实现某个功能时,此功能没有做出来,但是时间也花费了,是否应该将这部分时间计入psp?
三.对学弟学妹们想说的话:
2016年的秋季学期就要完结了。我有几句话想对学弟学妹们说:1.课余时间不要闲着,多学习点知识,提高自己的编码水平。不然会很被动。2.对于团队工作要分配好团队成员的工作,并以此作为评价成员的指标。3.练习自己的表达能力。产品很好需要通过语言来表达,产品做的不理想也需要好的表达将好的部分凸显,将bug解释清楚。4.面对公众讲演和产品发布要对可能出现的情况(例如投影仪不清晰和教室的计算机的环境配置)考虑周全并想好应对之策,建议提前测试。
四.如果再来一遍,对于技术上的改变:
如果对于在规定期限内解决不了的问题,我会降低对项目的开始预期或者以支付报酬的方式将技术难点外包给别人做。这样根据我的以往开发经验和对外包团队能力的评估达到我的预期效果。
五.在本课程即将结束之际,我有话想对老师说。
(1).首先表示对老师的感谢。感谢老师对我的严格要求和关怀;整个学期下来老师基于我的个人作业和团队作业给了我很多工程技术上的指导,对我的待人处事方式有了很多积极地影响。
(2).对老师的建议:老师应该对我们更为严格,在计算个人分数时按照个人的实际完成量给与评分。比如老师要求我们每天有可提交的代码,事实是我们没有达到要求,对于这种情况就应该给予客观的分数。
(3)希望老师多休息,工作顺心。