软工 · 最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 通过软工实践,了解了一个产品规范的开发流程,以及细节上的把控,学习到了“规范”的含义。不足之处在于代码量少,编程能力没有明显提升,最终产品没有完成是个遗憾。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 统计一下,你在这门软件工程实践中,完成了多少行的代码
- 共1351行代码。
- 软工实践的各次作业分别花了多少时间?(做一个列表)
作业 | 耗时(h) |
---|---|
作业一 | 1 |
作业二 | 4 |
作业三 | 2 |
作业四 | |
作业五 | 3 |
作业六 | |
作业七 | |
作业八 | |
作业九 | |
作业十 | |
作业十一+Alpha冲刺 | 7 |
作业十二+Beta冲刺 | 8 |
- 哪一次作业让你印象最深刻?为什么?
- 现场编程那次作业,紧张刺激,现场的气氛很棒,大家真真正正地在一起编程,第一次感受到团队的氛围。
- 累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
- 包括学习时间应该在60-70个小时左右,平均每周5个小时
针对上述问题,你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上,以达成你的期待以及你的目标?
- 我期待能够和队友共同完成一个满意的作品,友情学习双丰收!具体多少个小时说不准欸,看自己的悟性和学习能力啦。
- 学习和使用的新软件;学习和使用的新工具;学习和掌握的新语言、新平台;学习和掌握的新方法;
- 新软件和新工具有:Axure8、Android Studio、Eclipse、Visual Paradigm、Mockplus
- 学习的新语言:java、html\css\js
- 新平台:Android Studio、Eclipse、JetBrains WebStorm
- 学习的新方法:单元测试、封装DLL、增量设计开发
- 其他方面的提升
- 与人交往的艺术
- 更加自信
写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 学会沟通、进度透明。团队项目开发的时候大家各干各的事情,导致后期工作没办法对接,只能打回去重做,费时费力。布置的任务只是说“差不多差不多”,其实差的还很多,进度的不透明也是项目失败的很大原因。
对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
- 你有什么想建议、告知和期许想要告诉他们呢?
- 多少付出多少收获,对于真正想学东西的人,软工不会让你失望
- 特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
- 是一个很好的想法,整个实践课奉行的就是敏捷开发,换队员可以让大家适应变化,利大于弊。同时在不同的团队中担任不同的角色,学到的东西也更加全面,++就是作业评分机制要好好考量一下,有大学问++
- 身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
- 8个人应该是一个毕竟刚好的人数,多一个人管理的难度就上番了。团队展现也不会很好
- 个人/结对/团队作业应该控制在怎样的规模?
- 2:4:4
- 这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
- 最感谢的人是蔡子阳了,在个人和结对作业的时候就已经在帮助我了,团队项目更是中央空调,很辛苦。
- 想说的话:你永远是爸爸的好儿子!
分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 我觉得我们团队处于磨合阶段。团队成员基本相识,能够讨论协作规范细则但没有形成规范文档。集体荣誉感和个人的能力都不足。
怎样证明你学会了软件工程?
工程师能力自我评价表
类别 | 具体技能和面试问题 | 现在的回答(大三) |
---|---|---|
语言 | 最拿手的计算机语言之一,代码量多少? | C++,7000行 |
最拿手的计算机语言之二,代码量多少? | html,3000行 | |
软件实现 | 你有没有在别人代码的基础上改进 | 有 |
你是怎么读懂别人的代码的 | 看注释看注释看注释 | |
你采取了什么方法来保证新功能不会影响原来的功能 | 规范封装、集成测试 | |
你在开发中遇到的最复杂的bug是什么,你是如何解决的?这个bug出现的原因是什么,你在将来应该怎么避免bug再出现? | 版本的不匹配问题导致无法整合,打回去重做,在做之前写好规范 | |
软件测试 | 你如何测试自己写的代码 | 使用VS自带的测试工具 |
你如何测试别人写的代码 | ||
你掌握了多少种测试工具和方法 | 一种 | |
你写过测试工具吗 | 没有 | |
你如何对一个网站进行压力测试和效能测试 | 未接触过 | |
你如何测试一个软件的人机界面(UX/UI) | 在使用过程中测试 | |
效能分析 | 你写过的最复杂的代码是什么 | 没写过什么很复杂的代码。。。 |
你是如何测量和改进它的效能的,用了什么工具,如何分析的 | 用VS的分析工具,分析程序各部分程序的耗时情况,再优化 | |
需求分析 | 你做过多少个有实际用户的项目,用户最多有多少,你的项目有什么创新的地方 | 无 |
行业洞察力 | 你最感兴趣的领域是什么 | 人工智能 |
这个领域过去十年经历了哪些创新 | 无人驾驶、医疗机器人 | |
你分析过这个领域前十的产品吗?请分析一下它们的优劣 | 没分析过 | |
你要进入这个领域应该如何创新 | 广泛调查人民需求 | |
项目管理 | 你参与过项目管理吗 | 没参与过 |
软件设计 | 你做过构架设计,模块化设计,接口设计吗? | |
质量意识 | 你是怎么做代码复审的 | 规范格式、规范接口、规范模块 |
工具/社区 | 你在各种开发平台都使用过什么开发工具 | VS,eclipse,JetBrains WebStorm |
自己写过什么工具来改进工作效率 | ||
给社区贡献过什么工具和代码,github有分享代码吗 | ||
你的技术博客坚持了多久,读者最多的是哪一篇 | 留下了没有技术的眼泪 | |
团队协作 | 请描述你在项目中如何说服同伴采用你提出的更好的解决方案,或者你如何听取了别人的一件,改进了自己的方案 | 现场分析讨论 |
你如何说服懒惰的同伴赶紧工作,实现团队目标 | 破口大骂 | |
理论素养 | 你上过什么数学,计算机或其他理论课 | 高等数学,离散数学,概率论,数值分析,数据结构与算法,编译原理等 |
请举出具体的例子,说明你学到的理论知识如何帮助你解决实际问题 | 数据结构与算法的搜索算法解决了路径问题 | |
自我管理 | 全年级你专业排名多少? | 36 |
你刚入学带现在的排名有变化吗? | 退步了很多 | |
如何解释你的排名的变化 | 变得随意了 |