一、回望
(1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 学习了如何用工程的方法和逻辑对待软件开发;但是不够熟练,许多时候还是依靠课程中老师、助教发布的信息来明确目前的项目管理进程,没有把课程教的完全变成自己的东西。
- 有了团队项目开发的体验,对前后端分离开发有了更深的理解,当然也学到了不少新的后端开发知识,比如基于SpringBoot的项目后端开发;但是远远谈不上熟练,还需要更多的学习和实践积累。
(2)你在第一次作业的个人简历中描述了这门课程结束后,你预期你将增长的能力、技术、技能,并绘制了学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
- 对相对规范的、基于spring boot的Java项目后端开发有了一定程度的理解,但是在数据库、服务器方面的收获可以说非常有限。总的来说并没有达到当时的预期值。
(3)哪一次作业让你印象最深刻?为什么?
(4)在课程问卷中,我们统计了你在课程上花费的精力和提升;现在请你再次将这些数据罗列出来,作为个人的记录。包括以下内容:
- 统计一下,你在这门软件工程实践中,一共完成了多少行的代码;
3k+
- 软工实践的各次作业分别花了多少时间?(做一个列表)
作业 |
消耗时间 |
软工寒假作业1 |
5h |
软工寒假作业2 |
27h |
结对第一次—疫情统计可视化(原型设计) |
12h |
团队作业第一次—团队展示和项目展示 |
2h |
结对第二次作业——某次疫情统计可视化的实现 |
22h |
团队作业第二次——团队Github实战训练 |
5h |
团队作业第三次—项目需求分析 |
5h |
团队作业第四次—项目系统设计与数据库设计 |
6h |
个人作业——软件评测 |
5h |
团队作业第五次——站立式会议+alpha冲刺 |
49h |
团队作业第六次——beta冲刺+事后诸葛亮 |
21h |
个人作业——软件工程实践总结&个人技术博客 |
6h |
- 累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计约165h,按154天/22周算平均每周7.5小时左右
- 学习和使用的新软件;
Axure PR、XMind、GithubDestop等
- 学习和使用的新工具;
git、jprofier、postman等
- 学习和掌握的新语言、新平台;
markdown、github
- 学习和掌握的新方法;
项目原型制作、使用GitHub进行团队开发和版本控制
- 工程能力的提升;
项目设计、spring boot框架的使用、模块测试、文档编写
- 团队合作上的提升;
学会更好地和团队其他成员交流、合作、学习
- 其他方面的提升;
信息检索能力略有提高
二、团队总结
你是组员还是组长?你觉得你自己在哪些地方做得好?你觉得自己还有什么可以改进的地方,具体可以怎么改进?
- 我是组员;
- 我觉得我往往按时完成分配给我的任务,也不常因为自己的问题给团队其他成员造成影响,对项目有疑问地地方也会优先与团队成员沟通,避免团队开发中出现因沟通不充分造成的问题,实际开发中的问题则会通过检索信息来学习并解决;
- 万事开头难,而我尤其容易浮躁,其实很多问题只要开始着手解决就可以发现其实并不复杂;
- 可以考虑遇到复杂情况先设计一个解决方案,再按方案着手执行,减少不必要的时间消耗。
你觉得你的组长(组员们)在哪些地方做得好?你觉得ta(ta们)还有什么可以进一步提升的地方,有什么具体的建议吗?
- 组长在把控项目进度的方面做得很好,也会贴心地提供所需要的资料,显然独自做了相当多的工作;当然他为这个项目花费的时间和心血也是最多的。
- 组员们都能够积极参与团队讨论,氛围也很融洽,遇到问题或者有相关的修正也会在群里及时沟通,避免了很多可能会出现的问题。
《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 萌芽、磨合阶段都经历过,我觉得目前我们团队处于规范阶段。
从开发的角度,你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
- 我在团队中担任后端开发的角色;基本完成了后端开发的任务;我觉得我适合该角色。
三、人月神话
1、怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一。
- 研发出符合用户需求的软件——必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
已经发布并且在最后一次答辩中实际投入使用了,也顺利统计生成了需要的数据。
- 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件——有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
利用github做到了项目进程管理,每天都有对应的commit记录,没有出现临时赶工、一人带全队的情况。
- 并且通过数据展现软件是可以维护和继续发展的——而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
每个开发人员都可以运行该项目,文档也是实时更新的,重要的修改也会在开发群内通知。
2、写下属于你自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析,字数不限,开放命题,可以使用你自己喜欢的方式表达
- 团队作业中沟通交流非常重要,及时的沟通可以避免很多问题的产生,也可以使很多已经出现的问题得到迅速解决。当然有一些问题是在设计阶段没有考虑好导致的,这种情况就要不怕麻烦,不能想着拆东墙补西墙,该改就得改,避免坑越来越大。我们在开发编码阶段才发现接口设计的数据格式不尽合理,花了一段时间把错误修正,虽然麻烦但是避免了潜在的问题。
四、建议
对下一届同学的建议,或者对于开学初的你,对于大一的你,你有什么建议和想要告知的呢?请写下你对后来人的期许。
- 对于下一届同学,或者大一的同学,你想说:
这是一门投入越多收获越大的课程,希望能够认真对待。
- 对于自己今后,你有哪些建言?
保持清醒;缓解焦虑的最好办法是让自己保持前进。
- 对于助教工作,你有哪些建议?
整理出Q&A文档对我们非常有帮助。
- 对于软工实践课程,你有哪些建议?对于软工实践课程的上课形式和内容,你有什么具体的意见和建议?在哪儿需要强化或者剔除?
和个人作业、团队作业比起来,感觉结对作业的意义不是很大。
五、个人技术总结
@Transactional注解的使用以及try-catch捕获异常导致@Transactional注解失效的问题
概述:@Transactional是spring boot项目开发中常用的注解,加上该注解的方法中使用try-catch可能会发生返回结果不符合预期、事务回滚异常的问题。