回顾一
一、回想一下你曾经对计算机专业的畅想
1.当初你是如何做出选择计算机专业的决定的?经过一个学期,你的看法改变了么,为什么?
答:没有改变。因为对于我自己来说,计算机就是我从小以来最喜欢的也是我自己最愿意投入时间学习的专业。并且,我自己也很愿意之后从事计算机行业,把计算机作为我的工作对于我来说是幸福的。从第一次小时候接触计算机的时候,就对这个新鲜的事物非常感兴趣,一直就有着强烈的兴趣。所以在大学的时候报的所有志愿都是有关计算机的。经过了软件工程课程几个月时间的学习之后,我觉得对计算机的兴趣又更加强烈了。
2.你认为过去接触到的课程是否符合你对计算机专业的期待,为什么?经过一个学期,你的看法改变了么,为什么?
答:有改变,但是总体来说还是不符合我的期待。同样的,在我几个月前第一次回答这个问题的时候,就认为大学学习计算机专业时,所设置的大部分都是偏重理论知识的讲解。对于我自己来说,我比较希望更多学习有关项目、编码这些直接关系以后工作的课程。但是,经历一个学期之后,尤其是上过一学期的软件工程课程之后,我的看法有一些改变。因为这门课程,不仅锻炼了我的代码能力,更锻炼了我的自学、合作能力。还记得第一次做个人项目的时候,因为好久没有认真写过代码,所以我清晰的记着那次项目我花了很多的时间自学,不断尝试,才总体上完成了这个项目。在之后的个人项目,以及双人多人项目,我对大学课程的设置的看法有了转变。因为在这一系列项目的完成过程中,我发现,我原本认为的那些枯燥的,单调的,亦或是看似没有用的课程,在实际接触项目的时候,这些课程学习的重要性都一点点的体现出来了。但是,总体上,我还是不太满意过去接触到的课程,我认为计算机还是要实际操作,真实接触代码项目为主。
3.你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗?经过一个学期,你的看法改变了么,为什么?
(注:不可以回答 "不是","是"。请把这当成以后工作时面试题,需要回答足够长度,提供足够信息,让对方了解你。比如,给出为什么。)
答:改变了。在学期刚开始回答这个问题的时候,我对自己的编码能力特别不自信,因为大学的课程以及考验的压力,让我自己亲手敲代码做项目的时间少之又少。所以我对我自己的代码能力很不自信。但是经历过一个学期软件工程课程的学习之后,我对自己的代码能力有了一定的自信。我之前可以说对代码有恐惧感,觉得自己落后的太多,差别人太多,就算努力也很难追上别人。但是现在我觉得我自信了很多,哪怕就从现在开始认真锻炼我自己的代码能力,也根本不会晚。同时在一学期的学习之后,我自己认为计算机是我最擅长的领域。
二、考取研究生,对照前人们走过的路和描述未来发展,现在的你自我感觉你已经具备的专业知识、技能、能力有哪些?
离成为一个合格的计算机学生,在专业知识、技能、能力上还差距哪些? 经过一个学期,你的看法改变了么,为什么?
答:没有。在整个学期的学习中,多次需要自己直接敲代码写程序。这个过程是最花费我时间的过程,简单来说就是我自己对代码还是不够熟练,代码的能力还是比较弱。尤其是我自己在做个人的第一二次项目的时候,代码学习的确花费我太多的时间精力,但是让我感到欣慰的是,不管花费多少精力,最后的结果还是好的。所以我对自己代码的学习能力有了自信。在之后的学习过程中,我还是会把主要精力放在提高我自己的代码变成能力上。
三、每天都是一个人生选择的十字路口,学术研究、工程项目、社会实践 (?) ,不同的选择有不同的努力方向。
1.对照以上你阅读的前人们的经历,你的选择是什么?经过一个学期,你的看法改变了么,为什么?
答:没有。对于我自己来说我还是坚定的选择工程项目。我一直对计算机都有着强烈的兴趣,我觉得选择计算机作为我以后的工作和职业对于我自己来说是幸运的。至少我选择了一个我一直都很感兴趣的行业。经历了一个学期,我对于选择工程项目这条路的决心更强了。
2.在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?经过一个学期,你的看法改变了么,为什么?
答:没有。我认为我的优势在于眼界比较开阔,自己折腾的了解的东西比较多。这是我最大的优势。缺点还是在于代码编程的能力,相对于一些优秀的同学我自己的确存在差距。
3.针对你的选择,你给自己的本学期的规划是什么?经过一个学期,你的看法改变了么,为什么?
答:没有。在学期之初,我的计划就是学习Python,在这一个学期中,我也一直在学习Python,总体来说是符合我的计划的。
四、你对这门课的期待是什么?
1.你打算平均每周拿出多少个小时用在这门课上?经过一个学期,你的看法改变了么,为什么?
答:没有,之前我打算每周拿出十个小时,这是一个在我看来比较合理的时间。
2.实测结果,每周平均用在本课程上多少小时?
答:十二个小时
回顾二:
1.
5个问题
作业要求 [https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/876] 中提到:
通读《构建之法》,发布随笔1篇,要求列出5个问题,可以是读后不理解的,或者读后反对的。要求有观点、有证据或分析。字数不是直接的考核标准,但是要求长到能把观点表述清楚。
请回顾这5个问题,自己回答一下。当初的困惑是否还在,你现在如何认为,是更深的困惑么?
(1)代码复审的形式有哪些?复审的目的又是什么?
答:代码复查在我刚开始的时候认为是有些多余的。但是在经历过多人合作项目之后,我的看法改变了。我认为同伴复审,团队复审的意义很重要。因为自己在编写代码的时候,往往自己的思维是固定的,自我复审的时候有时候很难发现错误。但是,让同伴或者团队来进行复查的时候,就能相对容易的发现代码的错误或者不合理的地方。所以,我现在认为代码复审的意义是很重要的。
(2)用户体验有哪些重要的要素,评价的标准又是什么?
答:在我经历过一个学期的软件工程课程的学习之后,我认为用户体验就像是书中所说的包括费茨法则(Fitts law)、Nielsen启发式评估十条原则以及(1) 尽快提供可感触的反馈系统状态 (2) 系统界面符合用户的现实惯例(Familiarity,Avoid Surprise) (3)用户有控制权 (4) 一致性和标准化 (5)适合各种类型的用户 (6)帮助用户识别、诊断并修复错误 (7)有必要的提示和帮助文档 。在我完成这学期的软件工程课程的时候,尤其是完成团队项目我们的爱阅app的时候,感觉用户体验确实是一个很重要的问题。不能单纯从自己的角度出发,要从用户的操作习惯,操作逻辑来考虑整个app的设计。对于用户来说,多操作一个步骤,就可能会导致用户不能有很好的体验效果,就可能会导致用户的流失。用户的控制权这点上我也是非常赞同的,用户需要从自己的使用习惯可以对app进行一定程度的定制,这样才能让用户体验变得更好。
(3)书中在敏捷流程中提到不要和管理层谈流程,他们只关心结果。因为我还没有工作经验,对于这个问题有些不解。如果和管理层完全不谈流程,如果在工作量巨大的情况之下,那么怎么才能保证结果按时完成?这时是否迫切的需要和管理层进行交流?
答:不要谈流程,实用敏捷流程进行开发可以解决这个问题。
(4)书中在msf敏捷开发模式中提到更强调与用户的交流,因为项目的商业价值要用户说的算。我非常同意这个看法,因为用户才是项目的最终目标。但是在实际情况中,经常会出现用户的想法和设计人员的想法相冲突的情况。在这种状况下,要怎么权衡自己和用户的感受。如果一味的坚持采用用户的想法,是不是会挡住创新的路?
答:在经过一个学期软件工程课程的学习之后,我认为更应该在项目之中强调和用户的交流。正如书中所说,项目的商业价值始终还是用户说了算。用户的实用感受与用户体验始终是这个项目的导向。不能再项目中加入个人情感。同时,不同的用户会有不同对自己项目的看法。不能盲目的采用用户的想法。要进行有效的过滤删减之后进行采纳。因为单一用户也不能代表整体用户。
(5)在进行测试的时候,提到微软的bug bash活动。我认为这个活动确实可以开阔思路,让测试更加完整。但在实际情况中,如同书中所说,容易遇到滥竽充数的情况。结合实际的成本问题,这种活动展开的意义是不是就变得很小?能否跳过这个阶段?
答:这个阶段还是不能跳过的。因为虽然会遇到滥竽充数的情况,但是这样做的确可能得到一些真实的有价值的来源于用户的真实体验。这样的测试意义就在于此。通过这些有价值的数据才能让项目不断充实,不断贴近用户的真实需求。
2.请根据本学期的学习、收获、困惑,再提出5个问题,可以是读后不理解的,或者读后反对的。有求有观点、有证据或分析。体验一下,这5个问题,是不是更有深度了 。
(1)书中提到渐进交付的流程。其中MVP这个方式让我很赞同。具体的做法就是:把产品最核心的功能用最小的成本实现出来,然后快速征求用户意见。这个我是很赞同的,因为如果等到所有功能都完成再让用户使用征求意见的话,一旦用户对核心功能提出质疑,修改的代价就太大了。所以在开发过程中,要不断和用户交流,了解用户的真实需求。用MVP的方法,直接让用户体验核心功能,得到真实的用户反馈,才能让之后的开发过程变得顺畅很多。
(2)在书中提到Spec的最大敌人是乏味。的确,在写Spec时都偶尔会感到乏味,更不说让用户来认真的阅读Spec。所以我觉得Spec不仅要写得严谨专业,同时也要生动形象,并且最好可以简单直接的描述,不能用大段的文字来说明功能。可以用图片等更生动形象的方法来直接进行说明。
(3)书中在讲到需求分析的时候,提到竞争性需求分析的框架,也就是NABCD模型。在软件工程课程中的团队项目,我们也是按照这个模型进行需求分析。我认为这个模型提的非常合理。NABCD中的每一个都是重点。缺一不可。因为我们小组选择是做一个电子书的安卓app。所以在竞争方面我也想了很多。发现电子书阅读器这个市场虽然特别大,但是存在的很多已有的app都有不同的优缺点。分析这些优缺点,可以选择一个自己app的定位。先发有优势也有劣势。
(4)书中在个人技术和流程中提到了psp。在软件工程课中,老师也要求我们每周进行制作psp表格。我认为这个真的是一个很好的方法。psp虽然只是数据,但是可以从这些数据中看到自己的工作效率,为什么没有完成工作,或者为什么能很好的完成工作。在以后我自己还会接着统计psp,提升自己的效率。
(5)书中提到创新时提到要成为领域的专家,才能创新吗?举了一个真实的例子说明不是这样的。有百分之七十的创新者说,他们最成功的创新,是在他们最拿手的领域之外发现的。这点我有点不解,如果不是领域内的专家,没有领先的技术那怎么才能创新呢?或者说为什么大部分创新者最成功的创新都是在自己最擅长的领域之外发现的呢。
3.回忆整个学期,你有什么话想对后来的学弟学妹们说。
答:马上这个学期就要结束了。其实刚开始还没有意识到这一点,直到看到自己的文章已经写到了第十二周的psp表格才发现。说实话一开始我在刚上这门课程的时候,内心多少是有一点排斥的。因为大学没有相似的课程,而且就算是相似的课程,老师也不会要求我们做很多东西。但是杨老师不一样,从第一节课上课的时候就给我们提出了很多要求,布置了很多的作业。而且这些作业在刚布置下来的时候,给我的感觉就是这是什么鬼,根本不知道怎么下手。但是正是有了这种压力,我才有了动力。就像刚开始前几周的个人作业,我最开始的确不想写,想混一混得了。但是想了想还是硬着头皮试一试。就开始着手编码。一开始真的遇到了各种问题,可能是因为大学期间敲得代码太少,也可能是很多知识点都忘记了,所以个人作业那几周真的是我最忙的几周。感觉自己啥都不会,就像没学过计算机一样。这样一来我就有了压力,有了压力也就有了动力。我开始上网查阅资料,翻看各种书,解决了一个又一个在我眼中的难题。虽然这些难题在大神眼中很简单,但是我却很知足也很有成就感。面对一个完全陌生的任务,完全没接触过的东西的时候,我不会再束手无策,而是一点一点学起,耐心的解决一个一个难题。我在最开始的时候知道自己的代码能力并不强,但又不知道怎么去提高。但在软件工程课中,我找到了方法,就是一点一点积累,不怕难题。在个人作业结束之后,我对杨老师,对软件工程这门课程有了巨大的态度转变。我觉得这是不可多得可以提高自己代码能力综合能力的研究生课程。在熬了很多夜,补了很多知识点之后,我对学习计算机又有了自信。其实很简单,就是踏踏实实的努力就好了。希望以后的学弟学妹们,不要单纯为了上课而上课,单纯为了过而完成作业。时间都是我们最珍贵的东西,这门课程真的能帮助我们提高很多,无论是代码方面,自学能力,面对困难的信心。认真学习这门课程,相信杨老师的教学方法,最后一定有很好的收获。
4.如果重新来过一次,你打算做哪些(技术上,而不是态度上的)改变--基于希望得到什么样的更好结果,你才希望这样改变的;更重要的是,你根据什么估计这些改变会有预期的结果。
答:如果重新来过一次在技术上我一定会坚持在个人和结对项目中选用python。在第一次作业中,因为自己比较熟悉c++不想做出太大的改变,就还是采用c++进行编写。没有大胆的尝试自己想学习的python而是选择了比较保守的自己比较熟悉的c++。我觉得虽然个人项目和结对项目只是软件工程课程中的一小部分,但是的确是提升自己最好的时机。因为在完成这些任务之后,我觉得自己对c++的掌握与认识又提升了一小段距离。如果能用大胆的采用python的话,自己对python的理解与实用应该会提升不少。
5.终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布及成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。
答:杨老师您好。说实话最开始我比较排斥这门课程,因为大学中基本上没有老师布置过这么多这么频繁的作业。所以一开始对于我自己来说,确实不想完成这些东西,只想做做自己事情。但是在我完成个人项目,之后对您对这门课程的态度有了很大转变。我意识到,您给我们的压力就是我们的动力。正是有了这些动力,才让我敢于面对自己之前没接触过的技术。您每次布置任务的时候,都只是引导我们完成,并不是一步一步教我们怎么做,更多的是让我自己研究,自己上网查资料掌握这些技术。这是很好的教学方式,因为自己掌握,和别人一步一步教会是完全两个概念。您教会我很多东西,很感谢您。
总结
一、代码总量,平均每周代码量。
代码总量:816
平均每周代码量:68
二、博客字数总量,平均每周字数。
博客字数总量:17061行
平均每周字数:1422字
三、根据PSP,平均每周在本课程中所用时间(是的,请再回答一次)多少小时。
平均每周:12.3小时
四、进度条总结: 遍历每周知识点,以周为单位做如下表格。
起止时间 | 提交PSP例行报告时总结的知识点 | 现在回顾该周收获的知识点 |
9月9日-9月10日 | 阅读构建之法 自我学习 制作图例 | PSP的制作过程 对构建之法这本书有了大致了解 |
9月15日-9月18日 | MAP容器 VECTOR 排序算法 流文件 | 主要利用MAP容器实现词频统计 利用VECTOR存储数据排序输出 |
9月22日-9月26日 | 重定向 效能分析 迭代器 | C++控制台参数操作 文件的重定向 效能分析工具的使用 |
10月5日-10月11日 | 中缀表达式、后缀表达式 python栈的使用 python命令行参数的实现 | 学会了用python实现栈 结合中缀后缀表达式实现四则运算 |
10月13日-10月18日 | 安卓开发 团队协作 视频剪辑 | 安装了Android studio 开始学习安卓开发的知识 学习制作视频特效剪辑视频 |
10月20日-10月25日 | Android Studio接口的使用 界面设计 | 实现爱阅背景图片的切换 设计爱阅界面 |
10月27日-11月1日 | 界面设计 视频剪辑 Android Studio接口的使用 | 接着上周的任务 并且学习了解更多的接口使用 |
11月5日-11月8日 | 安卓开发 xml文件配置 | 根据分配的任务完善爱阅的功能 |
11月10日-11月15日 | 安卓开发 | 爱阅主要功能已经实现 |
11月17日-11月22日 | 爱阅书城的实现 | |
11月24日-11月29日 | 爱阅对chm、epub、pdf格式的支持 | |
12月1日-12月6日 | 安卓开发 视频剪辑 | 制作最后一部视频 |
五、时间分配堆积柱状图