一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
回想第一次作业时对软工实践的期待,想必大多数人和我一样都是抱着“参与第一”的态度,也会跃跃欲试,但也不奢求会做出怎么样了不起的软件,总体来说软工实践基本符合开学初本人对其的期待------一次接近业界真实流程的开发体验。在这其中,有守得云开见月明的欣喜,也有挥散不去的怨声载道,我想这恰恰是这个实践最真实的意义。
- 满意的方面:在本次软工实践方面,本人被分配在了算法组,负责识别算法的神经网络部分。之前虽然有一些在这方面的基础,但是并没有亲自参与设计和调试模型,所以在这次的任务对我来说也是一次全新而艰巨的任务。识别模型到最后顺利地完成了,也做到了自己满意的正确度。通过这次的经历,最大的收获是对模型的认识更加宏观,能够以更高的角度来看待问题。
- 不足的方面:,虽然在这其中由于硬件条件不足的客观原因,最后的结果和最初的设想存在偏差,最直接具体的表现就是原本打算使用的近九十万张图的关于3755个字的训练集在实际训练过程中由于本机性能不够只能不断简略,最后只能选择生活中使用频率最高的500个字。最初时忽略了硬件条件的限制,是一大疏忽,也是一大收获,对以后的相关的开发提前上了一课。再则是对服务器的架设,由于对服务器的不了解和神经网络本身对环境极严格的特点,导致到最后把原来在本机训练好的模型架设在服务器上时遇到困难重重,这是在实际开发过程中的一大教训-------要充分了解开发平台和架设平台的异同和软件的兼容性。
2)总结这门课程的实践总结和给你带来的提升:
- 1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
千行左右,这并不多,也和我的部分的特点有关,主要的调参和训练要花去大部分时间。
- 2、软工实践的各次作业分别花了多少时间
作业 | 时长 |
---|---|
软件工程实践2017第一次作业 | 3 |
软件工程实践2017第二次作业 | 4 |
结队项目——第一次作业 | 7 |
团队第一次作业——团队展示 | 0.05 |
结对项目——第二次作业 | 15 |
团队作业—选题报告 | 2 |
个人技术博客(α) | 4 |
团队作业—需求规格说明书 | 3 |
团队作业—预则立&&他山之石 | 1 |
团队作业——系统设计 | 4.5 |
团队作业——UML设计 | 3 |
团队作业——随堂小测(同学录) | 8 |
个人作业——软件产品案例分析 | 7 |
团队项目课堂展示 | 0.5 |
团队项目测试报告与用户反馈 | 1 |
团队Alpha博客链接目录 | 0.05 |
团队事后诸葛亮博客 | 2 |
Beta冲刺博客集合贴 | 3 |
个人作业——软件工程实践总结作业 | 4 |
Alpha和beta阶段代码 | 100 |
-
3、哪一次作业让你印象最深刻?为什么?
最深刻的要数α冲刺,感受到被deadline支配的恐惧和无能为力,每天在课业和deadline之间徘徊往回,当然还有和团队队友的交流协作。
-
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
这个我觉得真的很难说出一个准确的数字,冲刺的时候废寝忘食相信是大多数同学的常态,平均每周花35个小时。 -
5、学习和使用的新软件;
openCV,tessract,墨刀
- 6、学习和使用的新工具;
python相关包如tensorflow ,keras,theano
github,墨刀
- 7、学习和掌握的新语言、新平台;
都是在之前学习的基础上(python , IDE:spyder),没有新语言和平台
- 8、学习和掌握的新方法;
阅读论文来提升模型的性能;在stackflow上寻找解决方案。
- 9、其他方面的提升。
心理素质提升了好多,心理耐受力强了不是一点点
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
经验总结:最大的经验就是一定要在项目开始前就对项目的各方各面尽力做最全面最细节的分析和安排,修正错误的成本随着项目进度的推进不断提高,与其在后期花大量时间弥补初始的疏忽,不如在最初做最好的安排,但变更也是无法避免,从容应对也是必修课
比如在团队项目最初的设想中,我们并没有打算设立服务器,打算将模型直接嵌套进安卓中,一时的想当然导致了这样荒谬的错误,现在想来直觉得不可思议,在后期安卓和算法组结合时才发现行不通,大大滞后了项目的进度,不得不在本就紧张的安排中,花费时间和人力去架设服务器,对整个团队造成巨大的不良影响。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
如果你没时间或者目标研究生甚至出国,不要选实践;如果你不想从事开发相关的职业,不要选实践;如果你想高绩点,不要选实践。最后,必修让上面这些话毫无意义。
但是认真地说,软工实践给予了同学们一个全新的机会去看待自己正在学习的学科,我的建议是去尝试,只要经历了才知道适合和不适合,才能了解这个行业最核心的人员------程序员是什么样的工作节奏。这门课是好是坏,也许见仁见智,但是鼓励的是一定要去尝试。
对于中途换队员这种事,还是不要换的好,虽然可以理解老师想让我们体验职场的不测风云,但是一个初步成型的团队这样的变动无疑是巨大的,对学生来说只会徒增对项目的负担,更甚是对课的抵触。退一步来说,这样的体验对以后的职场生活并无益处,试想,一个刚入职场的程序员,是否会因为有这样的一个经历而能更好地应对突如其来的变故?面对这样的事,还能想起之前软工实践中的小小的体会?再退一步,这样的变化和实际上变故一比,实在是小巫见大巫,不值一提。综上所述,我觉得中途换队员的好处和带来的负面影响相比,实在得不偿失。。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?
构建之法中提到的团队发展有4个阶段,分别是萌芽阶段,磨合阶段,规范阶段和创造阶段。我觉得最后我们的团队到达了“创造阶段”。从最开始的组队,到初步的协作讨论,再到熟悉磨合,到现在,存在了几个问题:
- 对时间的分配不够精确,导致到最后赶工现象严重
- 对于代码的规范没能够一直坚持下去,导致交接时理解出现问题
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
在Alpha阶段的时候,我们已经把我们的软件推荐给我们班的人使用了,并积极收集bug反馈和建议