PSP总结
回想一下你曾经对计算机专业的畅想
当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么?
回答: 最初选择计算机是因为高考志愿被调剂到软件工程专业,虽然并不是自己的本意但也没有换专业的想法。所以最终还是读了计算机的研究生。当然这一决定也得益于这个行业良好的就业前景。现在的想法依然没有改变,计算机这一专业的前景依然广阔,我也依然不讨厌这一学科。
你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学期,你的看法改变了么,为什么?
回答:本科阶段的课程是更加偏重于理论的,就连考试都不需要编程。虽然这与我预想的计算机专业不同但是我却更喜欢这样的方式,而本科阶段学到的看似无用的理论知识在同学们工作后被证明了确实是有用的。而研究生阶段的课程,有几门是与本科有交集的。其中有的授课方式与本科阶段无异,比如网络实验,有的与本科阶段完全不同,比如软件工程。我认为这些课程都是让我受益匪浅的。
你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?经过一个学期,你的看法改变了么,为什么?
回答:计算机是我喜欢的领域,也应该会成为我喜欢的事业。我不擅长计算机,但是目前在所有领域里我最擅长的领域是计算机。这一情况经过一学期没有什么变化
(2)考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些?
经过一个学期,你的看法改变了么,为什么?
回答:经过一个学期,这一情况没有什么改变。我的编程能力依然有待提高,同时,将理论知识应用到实际问题的能力还是不够
(3)每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。
对照以上你阅读的前人们的经历,你的选择是什么?经过一个学期,你的看法改变了么,为什么?
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?经过一个学期,你的看法改变了么,为什么?
针对你的选择,你给自己的本学期的规划是什么?经过一个学期,你的看法改变了么,为什么?
我的想法是毕业之后进入游戏公司。因为本科想要进入游戏公司是非常困难的,所以想要在研究生阶段达到进入游戏公司的要求。想要达到这个目的,本学期两个目标,一个是将C++用的熟一些,第二个是对计算机图形学有一个比较好的理解。
这样的选择并没有改变,我也在按部就班的朝着这个方向努力。
(4)你对这门课的期待是什么?
你打算平均每周拿出多少个小时用在这门课上?经过一个学期,你的看法改变了么,为什么?
实测结果,每周平均用在本课程上多少小时?
我对这么课的期待就是将以前学过的软件工程理论应用于实践当中(当然也会继续理解这些理论),比如文档的编写以及项目进度的控制和质量控制等,虽然以前这些工作都做过,但是文档一般都是最后写,项目进度完全看大家心情,希望这门课能带来不同的体会。时间上初步估算十个小时左右,具体视项目和工期而定。
可以说这么课的学习符合了我的期待。总用时是9.35小时
五个问题:
(1)关于软件工程的目标,为什么是“足够好”?
在1.2.4节中提出了
软件工程的目标是创造“足够好”的软件
而我个人认为这对于需求分析的要求会大大提高。因为很多时候用户并不能全面的表述出自己的需求,这就使得如果只是做的“足够好”,到了用户使用时会变得“没那么好”。而在书中第八章需求分析中也提到了要给用户惊喜的功能,那么为什么不将软件工程的目标定为“尽可能好”呢,即在成本允许的范围内将用户可能会提出的需求先行满足。
经过一学期的学习,我意识到可能足够好对于一个团队可能是可以完成的目标,更符合实际。
(2)关于软件工程师的衡量,如何衡量?
在3.1节中提出了软件工程师的衡量问题,其中提到
5.实际成果 绝大多数软件工程师的工作成果都是可以公开的,你参与的产品用户评价如何?。。。。。。是最重要的评价标准
而我想到了本科答辩的时候,一个阿里的实习生讲了一个他们公司高大上的项目,老师们问他哪一部分是他做的,他说都有参与,结果老师们都不满意。所以我感觉一个人在团队中的作用是很难量化的,将他作为最重要的评价标准是否合适。
这个疑问依然存在,以我们的课程举例,不同的人在本组中贡献是不一样的,我们能根据贡献分来体现贡献,而实际工作中没有这样的分数,那么以项目来评价软件工程师的好坏是否合理呢。
(3)关于产品经理的问题,为什么不同公司的团队配置不同
在9.1节提到了
微软通常有专门的产品策划,他们和市场部门的专职人员一起,负责产品的长期发展和市场推广
文章只提了一句产品的问题,却没有给出原因。而据我的了解,国内一些互联网公司例如百度,产品与开发是在同一团队的,这两种方式是为了适应不同的开发模型吗,他们的优劣是什么?
这个问题依然存在,比如我们小组可以看成是产品与编码在同一团队的,而我们认为这样更便于交流。所以对于产品与开发处在不同团队的模式不是非常理解。
(4)对于整体的系统开发完成,只是定期的添加功能与维护,那软件工程的方法是否还有必要?
这个问题稍微脱离了书本,一个同学在某知名网站负责管理广告的工作,据他说不仅没有文档,甚至连测试也不需要,完成时间也是产品问过他之后定的。虽然这种方式感觉是不好的,但是却又不会出现太大的问题。
这个问题得到了解决。经过了实践我们感觉到,哪怕是一小点的修改工作其实都不仅仅是对于个人的,会影响到很多方面,这就需要多方面的沟通与交流。而软件工程的方法可以提高这一过程的效率。
(5)构建究竟怎样理解
书名是构建之法,而书中也提到了每日构建的概念,但是对于构建本身的没有系统的概念,怎样进行?
依旧没有很透彻的理解这一概念。
请根据本学期的学习、收获、困惑,再提出5个问题,可以是读后不理解的,或者读后反对的。有求有观点、有证据或分析。体验一下,这5个问题,是不是更有深度了 。
(1)在软件工程中如何处理任务完不成的问题。在学习中我们可以补交,那么在实际的项目过程中如果出现这样的现象该怎么处理
(2)如何保证高效的结对编程。两人共用一台电脑进行编程,确实提高了编程的准确性,但是也存在思路被队友限制的情况,如何避免?
(3)在项目进程中,如何保证项目的整体架构不变而不断加入预期外的功能? 例如很可能用户提出新需求是目前的架构所不能完成的,该怎样处理?
(4)如何处理团队中成员不能或不想承担应有工作的问题?
(5)真实的项目进程中任务分配是怎样进行的?
回忆整个学期,你有什么话想对后来的学弟学妹们说。
认真写博客,还有git是个好东西。
如果重新来过一次,你打算做哪些(技术上,而不是态度上的)改变--基于希望得到什么样的更好结果,你才希望这样改变的;更重要的是,你根据什么估计这些改变会有预期的结果。
在需求分析和架构设计的部分进行改变,使用用户调查等方式获取更准确的需求,而不是想着先完成一个可发布的版本。这样可以使得架构设计进行的更顺利,进而提高效率。如果我们组可以提前分析出需要增加词库选择和欢迎界面的功能,那么就能够省去后续的大量的修改时间。
终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布及成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。
希望老师以后的作业要求更加明确。在我的理解中,高效而准确的沟通应该是工程项目中一个有意义的环节,所以清晰的便于学生理解的作业要求或许是第一步,特别是在前几周。可以考虑在留作业之前找没有上过这门课的人测试一下看看是否易于理解
总结
代码总量:711
周平均代码量:59.25
博文字数:22558
周平均博文字数:1879.8
总用时:9.35小时