个人作业——软件工程实践总结&个人技术博客
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2020SpringW |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10836 |
这个作业的目标 | 给这段时间的学习和实践所得做一个总结 |
作业正文 | https://www.cnblogs.com/sillyby/p/13132072.html |
其他参考文献 |
一、回望
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
达成的目标:
- 提高团队协作的能力
- 入门spring boot开发,能够有所产出,可以独立负责一个模块的开发工作
- 提高软件设计能力
- 提升文档的撰写和表达能力
- 掌握一些软件测试方法
不足之处:
- 没有领略Spring Boot的全部魅力,一些已学知识没有投入到实际开发运用中,实际团队开发中止步于CRUD和一些集成工具、注解的使用
- 到开发中后期没有很好把控个人情绪和合理安排时间,偶尔会影响开发工作。
- 除结对作业外,没有在团队中发挥特别核心的作用,虽然我的代码产出量可观,但是工作的可替代性高。
你在第一次作业的个人简历中制定的这门课程结束后,你预期你将增长的能力、技术、技能;
和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
以下是根据第一次作业定的学习路线更新的学习进度,打勾的是已经学习并掌握的知识点,扇形表示大致的学习程度,未被标记的是尚未接触过的知识点
可见我并没有达到学习预期,还有很多知识只是浅尝辄止甚至没有接触,主要是我低估了学习spring boot的深度和广度,越学越发现其中大有门道,想要深究还需要付出许多额外的精力。
请总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
统计一下,你在这门软件工程实践中,一共完成了多少行的代码
9000行左右
-
软工实践的各次作业分别花了多少时间?(做一个列表)
作业 大约花费时间(小时) 准备篇 3 热身篇——疫情统计 40 结对第一次—某次疫情统计可视化(原型设计) 11 团队作业第一次——种子队伍选拔和团队展示 10 结对第二次作业——某次疫情统计可视化的实现 45 团队作业第二次—团队Github实战训练 12 团队作业第三次—项目需求分析 16 团队作业第四次—项目系统设计与数据库设计 20 个人作业——软件评测 10 团队作业第五次——站立式会议+alpha冲刺 60 团队作业第六次——beta冲刺+事后诸葛亮 55 个人作业——软件工程实践总结&个人技术博客 6 -
哪一次作业让你印象最深刻?为什么?
团队Github实战训练,这是我遇到的ddl最吃紧的编程作业了,我们团队几乎在任务发布后的同时就开始了紧张的需求分析设计,并在午饭前进入了编码阶段,并利用下午时间完成了开发,傍晚完成测试工作,在晚上完成博客并提交作业,全程大家都保持在线状态,随时可以交流,一整天都在和时间赛跑,现在回想起来还是后劲十足。
-
累计花了多少个小时在软工实践上?平均每周花多少个小时?
-
写博客写文档+敲代码+沟通交流+思考和神游 ≈ 260小时
-
平均每周 260 /(本学期16周+寒假4周)=13小时
-
-
学习和使用的新软件、新工具
- Jprofiler
- Android Studio(换组后所学,搭建环境和调试)
- Postman(学习了进阶功能的使用,如全局变量和使用JavaScript测试响应报文)
- leangoo
- mybatis generator(这应该算是工具吧?)
- wakatime(代码时长统计插件,支持各种主流编辑器)
-
学习和掌握的新语言、新平台
- 换组后粗浅了解了一下Android的开发平台和大致结构
-
学习和掌握的新方法
- 运用Jprofiler进行性能测试
- 学习了一些设计模式的思想,并在开发过程中部分应用(如策略模式、责任链模式、MVC 模式、工厂模式)
- 使用leangoo进行项目进度跟踪和管理
-
工程能力的提升
- 能够运用一些设计模式的思想,提升了代码质量
- 对一些工具的使用熟练度提升,提高了编码效率
- 通过代码规范优化了自己的代码风格
-
团队合作上的提升;
- 阅读他人代码的能力,能够从中发掘出值得学习之处并在自己的开发过程中运用
- 队友沟通协调的能力
- 新开发环境的适应能力
-
其他方面的提升;
- 抗压能力算是提升了一些吧
二、团队总结
你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
在旧团队中我负责一个完整后端模块的代码编写,由于使用的是我较为熟悉的技术,自认为任务完成的还不错,过程也挺充实的。
如果你是组员,你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
-
大致按照大家的技术特长进行分工,挺合理的,大家都能各司其职并有条不紊的完成工作。
-
我觉得组长在确定项目选题之后再由提出选题的同学担当比较合适,因为他会是最了解整个项目的人,责任感也是最强的。
你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
- 我被换到了一个水平相对较低的小组,感觉还是蛮有心理落差的,而且不得不面对一个从零开始的适应过程,不过换组也是一种考验和机会,能让我接触到不同的开发模式,积累更多的经验。
分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建之法》第17章 人、绩效和职业道德)
旧团队给我的感觉很有干劲,大家很快度过了磨合期就进入状态了,我想在alpha冲刺前就已经达到了“创造”阶段。换组后来到的新团队,虽然经过了alpha冲刺,但感觉大家刚刚开始进入规范阶段,在我试图融入这个团队的时候,他们一些成文或不成文的规则逐步建立起来,个人感觉到了beta冲刺的后期,大家才进入了“创造”阶段。
三、人月神话
怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?请在随笔中用数据证明上述内容或侧重选择之一。
-
在旧团队(截止alpha冲刺)
作业提出的几点条件基本上都达到了
通过leangoo看板管理项目进度:https://www.leangoo.com/kanban/board/go/3400636
项目仓库:https://github.com/YBN-JUAN/ANOP
项目commit记录:https://github.com/YBN-JUAN/ANOP/commits/
项目管理记录:https://www.cnblogs.com/kuailejiudui/p/12768887.html
在我离开后团队将后端迁移到了微服务上,项目得到了一次进化
-
在新团队(beta冲刺)
通过leangoo看板管理项目进度:https://www.leangoo.com/kanban/board/go/3519260
项目仓库:https://github.com/pb-xxxx/XXY
写下属于你自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析,文字部分字数要求在100字以上
- 在开始实现任何业务前必须规定好大的开发方向(要达到什么样的效果),参与者应该解决所有关于项目方向上的疑惑,在这方面存在理解上的分歧有时候是很致命的,尤其是在合作开发过程中。
- 在设计构思阶段不应该陷入技术实现的细节中,在确保可行性(能够实现或者经过学习可以实现)的前提下,尽量由想法去引导技术,而不是由技术去引导想法,这有利于开发者的成长。
- 规范很重要,合作开发一定要有成文的规范可以遵循,无论是代码风格还是接口设计。没有良好规范的团队是在群魔乱舞,我在换组后进入了一个新的团队,他们的规范过于模糊,这对高效的开发很不利,经过我和组长的沟通后,组长进行了一些改进,比如规定每人每天去看板更新自己的进度,小问题私下解决,大问题再一起解决等。
四、建议
对下一届同学的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?请写下你对后来人的期许。
以下每一个建议都基于我付出的惨痛代价而提出:
- 如果你刚刚接触这个专业,一定要在学好基础的情况下多多了解当下流行的技术和方向,这些在大学课堂是很难学到的,然后乘早从中确定你的学习目标并为之奋斗。
- 不管是考研还是就业,越早决定越好。决定做迟了也不要焦虑,种一棵树最好的时机是十年前,其次是现在。
- 心急吃不了热豆腐,每个行业的水都很深,想一探究竟还是得从学好基础开始,不然你会发现你能达到的深度十分有限。
- 年轻人少熬夜多运动,劳逸结合,不要用无用的努力麻痹自己。
对于软工实践课程,你有哪些建议?
- 希望老师和助教能够多多注意那些态度不端正的划水人员。
对于助教工作,你有哪些建议?
- 助教很棒很负责,原谅我这方面本来就不如别人,没啥建设性意见~
对于自己今后,你有哪些建言?
- 基础啊基础很重要啊别忽略了!以后的学习和工作中也要保持对基础的巩固啊!
- 定下一个目标就往前冲吧,别再半途而废了。
- 做到自己能做到的最好就没什么可遗憾的。
- 别吝啬于表达自己的想法。
个人技术博客
这个技术能使spring boot项目具备发送邮件的功能,这个技术我是作为技术储备来学习的,没想到在学习后没多久就能够有用武之地。该项技术总体难度不大,硬要说难的地方就在于整合模板引擎发送模板邮件,因为还要同时了解一些模板引擎的知识,不过如果有JSP相关知识会容易应付得多。