一、问题回顾

   学期开始时,通读《构建之法》之后结合学科作业产生了一些问题,下面是简单列举的五个问题,经过一个学期的学习,对这些问题也有了自己的理解:

  1、结对编程对我来说是一种没有接触过得编程方式,如何在这一过程中做到队员工作的合理分配?

     在结对编程过程中,和结对的伙伴并没有做到像老师说的——整个代码由两人交替完成,实际工作中两人的工作分配并不太合理。回顾整个结对编程过程,我们应该对项目进行分割,分成几个小模块,在完成这些小模块时两个人可以对具体采用的方式进行讨论,然后共同完成编码部分。

  2、在团队合作中,如果队员能力存在差异,怎样能在编程过程中真正的做到“拥有平等的决策权力”?

     在小组项目进行了几周后,我认为在团队合作中,整个团队的PM在项目整体把控上十分重要,其他队员对于分配给自己的任务尽量做到最好就可以了。能力差的可以用更长的工作时间完成任务,其他队员的决策权力,只有在对PM的决策有较大争议的时候才有所体现,具体决绝方式还是要讨论过后,PM对于所有人的意见整理之后最终敲定。

  3、在具体的作业项要目中不能体会到完整的项目流程,客户的需求在整个开发过程中至关重要,那么具体 要怎样分析客户需求,从而了解客户到底想要什么样的软件呢?

    在完成老师布置的作业过程中,分析客户需求这一过程还是体验不足,但是又读了一边《构建之法》之后对分析客户需求有了更具体的理解。对于“用户最需要的东西”,有这样的过程:用户需要的——用户表达出来的——软件团队能理解的——软件团队具体表达出来的——具体执行出来的——验证——发布给用户。在这个过程中可以对客户进行调研、与客户详细面谈、进行问卷调查等方式了解用户需求。

  4、对于一个比较复杂的工程,程序代码都有相互的关联 , 那么如何做到准确将其细化成几个各个小模块,并将其链接成相对较大的模块呢?

     在团队项目中我们的做法是根据整个项目的不同功能对其进行划分,所以对于模块如何准确划分还是存在一定疑问。

  5、对于产品创新这一问题,如果产品本身已经很成熟,再对其进行进一步创新是否有现实的应用意义?

     产品的创新赋予了产品在市场中的竞争力,对于相对成熟的产品来说,创新也是能够不断更新市场需求的重要手段。


二、产生的新问题

1、对于一个项目,在最初有些想法觉得还不错,但是在后期的实现过程中发现实际工作量比预期的大很多,并且达不到预期效果,对于这样的情况,是否有一个评判标准,在工程初级就能做出准确的判断?

2、对于付出一定精力和时间的功能,但是效果远远不如预期的好,这样的功能在项目中是该适时舍弃,还是在预定时间内完成的程度作为最终的效果?

3、对于软件的测试部分,对于如何进行测试,具体项目该采用怎样的分类、方法和工具还是存在一定的疑问。

4、对于软件的质量好坏是通过测试结果进行评判么?是测试的次数越多,采用的测试方法越多,得到的软件质量就会越好么?

5、在团队项目中,如果队员有一个觉得感觉不错的想法,但是决策者认为没有必要,这种情况下是否有一个评判标准来对其进行评判?

 

三、对学弟学妹的建议

   建议今后学习软件工程的学弟学妹们,在课程开始时制定一个十分具体的目标:在课程结束后自己能做什么程度。在学习过程中也要及时记下自己在完成作业中遇到的问题,并解决它们。

 

四、如果可以重来

   如果重新来过,我会选择先学好一门编程语言,而不是“双管齐下”,这样的结局是可悲的。在学习过程中,记录问题时要尽可能详细,很多问题事后再看,完全不是当时的想法。对于学习计划也要尽量细化,完成了哪些,有哪些没有做到要定期做一个总结,一味记录并没有多大收获。

 

五、想对老师说的话

  我在学习这门课程中的直观感受是:在作业比较少的时候,感觉老师的授课方式真的特别有个人魅力!如果可以,希望老师在今后的教学中,可以在初期的前两周不要一下子几个项目同时进行,先进行两个然后逐渐增加需求会更容易接受。最后,感谢杨老师能把个人的项目工作经验在课堂上与同学们分享,还要感谢杨老师这一学期在布置作业和批改作业上投入的大量时间和精力!