个人作业——软件工程实践总结&个人技术博客
一、总览和相关链接
这个作业属于哪个课程 | 2020春|W班 |
---|---|
这个作业要求在哪里 | 个人总结作业要求 |
这个作业的目标 | 对本课程进行回顾和总结,并提出建议 |
作业正文 | 银沙湾的个人总结 |
其他参考文献 | 无 |
二、回望
对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强软件工程专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
我当初的期待
- 锻炼严谨的逻辑思维
- 制作精美网页和游戏
- 能够开发和维护软件
- 朝阳行业,就业良好
一点一点来讲
- 锻炼严谨的逻辑思维:软件开发人员不应该以体力劳动为主,而应把大部分时间花在思考和设计上。课程开启前我都是边编码边修补,思考过程少的可怜,更别谈设计了,更是一塌糊涂。自寒假第二次热身作业后,跟随着助教的指引,我开始注重正式编码前的思考和设计工作,并开始比较不同设计模式的优缺点,挑选合适的设计模式完成项目的开发。
- 制作精美网页和游戏:我负责团队项目一部分的原型设计,选用了Ant Design设计了一个一站式通知和备忘的页面。虽然算不上精美上乘,但是也是比较简约和舒适的。游戏开发的话到现在也还只是想一想,还未接触过相关技术。
- 能够开发和维护软件:本课程的团队作业模拟了一个团队开发一个项目从调研、设计、开发到收尾的整个流程。经历过团队开发的训练,掌握了软件开发流程,也能够使用Git等工具进行维护。
- 朝阳行业,就业良好:我选择了考研而非就业,因此对于当下就业形式也仅仅是有一个粗浅的理解。现在计算机互联网行业内卷严重,我希望通过考研提升自己的竞争力,在就业市场能获得更好的工作。
你在第一次作业的个人简历中制定的“这门课程结束后,你预期你将增长的能力、技术、技能”和你针对你的目标绘制的学习路线图。对比当前你的所学所得,你达到了当时的预期值吗?
工程能力:具备一定的开发能力,能够解决一些实际问题;提高编程代码组织和维护能力。
技术、技能:掌握Spring Framework的使用,能够开发出比较完整的Web项目。
毫无疑问,经过本课程的训练,我的开发能力有了较大的提高。疫情统计着眼于当下实际问题,完成任务获得了较大的满足感和成就感。而关于代码组织和维护能力,从寒假第二次作业开始就在不断的训练和提升,现在我能够合理的组织代码,按照代码规范进行开发和维护。
团队项目后端使用的技术为SpringBoot+Mybatis+MySQL+SpringCloud,属于一个比较完整的Web项目,在团队开发的过程中,自己的所学用于到了实践,加深了对框架技术的理解和应用,可以说现在的我可以使用Spring开发出一个比较完善的Web项目。
学习技术路线图,对于Spring精通程度模块的要求,比如消息和JMX管理我还仅仅停留在了解阶段,没有进行过实际的开发。其它Spring的知识模块仅限于会使用但是还不够熟练,而且Spring的内部原理理解的也不是很深,想要吃透还是需要花费更多的功夫。
总结这门课程的实践总结和给你带来的提升
一共完成了多少行的代码
约8000行
软工实践的各次作业分别花了多少时间?
作业标题 | 所用时间 |
---|---|
准备篇 | 3h |
热身篇——疫情统计 | 36h |
结对第一次—某次疫情统计可视化(原型设计) | 14h |
团队作业第一次——种子队伍选拔和团队展示 | 4h |
结对第二次作业——某次疫情统计可视化的实现 | 40h |
团队作业第二次—团队Github实战训练 | 9h |
团队作业第三次—项目需求分析 | 14h |
团队作业第四次—项目系统设计与数据库设计 | 23h |
个人作业——软件评测 | 10h |
团队作业第五次——站立式会议+alpha冲刺 | 68h |
团队作业第六次——beta冲刺+事后诸葛亮 | 28h |
个人作业——软件工程实践总结&个人技术博客 | 4h |
哪一次作业让你印象最深刻?为什么?
当属团队Github实战训练。早上刚起来被通知:一天之内做一个程序出来!时间的仓促和团队开发经验的缺失以及由于疫情原因沟通成本的提高,对于我们来说都是不小的挑战。好在团队成员很快调整,明确任务分工后实现思路清晰了很多,我到中午两点就已基本完成开发,之后都是为了整合进行了小修改。
累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计花了253小时在软工实践上,平均每周花16个小时。
学习和使用的新软件
GitHub Desktop、Typora、BootStrap Studio、XMind、Postman、墨刀、Axure RP 9、ScreenToGif(录制gif的绿色强大软件)
学习和使用的新工具
阿里巴巴规范检查插件、WakaTime代码时长统计插件、ProcessOn网页绘图工具、Leangoo看板
学习和掌握的新语言、新平台
GitHub、Redis
学习和掌握的新方法
软件开发的体系结构和设计模式
工程能力的提升
代码复审能力、分析问题的能力
团队合作上的提升
沟通协作能力、前后端对接
其他方面的提升
任务规划和管理能力(PSP表格)
三、团队总结
你在团队中担任了什么角色?你是否完成了该角色的任务?现在你觉得你适合该角色吗?
我担任了后端开发的角色。我完成了该角色的任务。现在我觉得我非常适合该角色,日后也准备深耕于后端开发领域。
如果你是组员,你觉得你的组长分工安排是否合理?你对组长的选举有什么建议?
比较合理。组长会根据每个人的技术水平和方向分配不同的任务,并在产生冲突时能够协调好。我认为组长应该由小组成员投票选举,票数最多者认可度比较高,一般来说相比其他小组成员有过人之处。
你这学期经历过换组吗?你对换组有哪些看法?谈谈你在这个过程中的感受。
未经历换组。我认为换组是开发过程中可能发生的跳槽情况,有必要进行换组来训练和积累经验。
软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我们团队仍处于磨合阶段。从完成度上来说都基本实现了对应的功能,但远未达到完善的程度,难以给客户意料之外的惊喜。离“创造”阶段还有不小的距离。
四、人月神话
怎样证明你学会了软件工程?以下要求你们的团队达到了哪几个?
1)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
使用看板进行项目管理
项目GitHub仓库
2)通过数据展现软件是可以维护和继续发展
项目接口设计详细
代码注释规范
数据流图一览无余
属于我自己的星月神话
讲一讲第二次结对疫情统计的实现吧。
在原型设计结束后,助教给我们的作业留了一条评论:“原型设计的不错,期待你们的实现”。看到实现两个字,我人傻了,我的搭档也懵了。我当时的表情是这样的:
我们认为疫情统计的Web应用涉及到了前后端协作、地图与图表、数据库、数据源获取(爬取或自行处理)等诸多技术,对于没有Web开发经验的我俩来说是一个不小的挑战。作业要求下来后,又看到部署在服务器又是个加分项,一开始看到作业要求的我们毫无头绪,十分迷茫不知道从哪儿开始。
第一天晚上,我俩连麦先互相吐槽了一下,并做好了最坏的打算:将就本地跑一个自己编的数据的极简Web应用,能跑起来就行~。因为假期学习路线是Web后端,因此我选择了后端分工,搭档自然就负责前端的开发。
不得不说,有了最坏的打算的心理准备后,心里静下来许多,开发也就逐渐走上了正轨,我俩开始一个一个击破难题。首先,先得设计数据库,没数据谈何数据处理和数据展示?那么问题又来了,去哪儿拿数据?爬取咱又不会,但是俺会日志文件处理,寒假第二次作业刚练了。一开始自己爆肝编写了五天的日志数据,也只是能用的程度。好巧不巧,后面我又学习云服务部署知识,看到了阿里云的日志云服务,点进去一看:全球新冠肺炎统计云日志。数据非常详细和完整,而且提供日志文件下载。随后我就把所有天数的日志文件全部下载。编写了一个日志处理程序,并将数据写入到了数据库。
就这样不断尝试和探索,问题一个一个的得到了解决,最终将成品部署到了数据库,大功告成!从未有过此等问题解决经历的我当时就积极的进行了总结,首先对待问题的心态是一方面,不能因为问题较多而打乱思绪,需要稳扎稳打一步步来。此外查阅资料要集百家之所想,融百家之所思。别人分享的可能有特定的适用性,未必适合自己的开发,要多从资料和教程中总结方法,再将其用到自己的开发过程中。
五、建议
对下一届同学的建议
本课程所训练的能力都是成为合格的软件工程师必不可少的素质。少一点抱怨,多一份努力,能够完成本课程的所有任务你将收获颇丰,这可能会是你踏上软件开发的第一站。
对于软工实践课程,你有哪些建议?
希望能多一些指导和教程,分析当前企业软件开发的形式,并根据职位要求提出发展方向建议。
对于助教工作,你有哪些建议?
我对于助教的工作非常满意,希望下一届的助教也能像今年一样优秀!
对于自己今后,你有哪些建言?
既然决定深耕于后端开发领域,就要不断强化自己的后端技术积累、不断提高自己的开发能力。今后要多多参与项目的开发,将所学技术应用到实际,希望自己能成为一名出色的软件开发工程师
六、个人技术总结
在第一次作业“准备篇”中你为自己制定了学习路线,现在学习了怎么样了?你在团队开发中是否担任了开发角色,你在开发中解决了哪些技术问题?获得了哪些技术进展?
Spring的精通程度模块的知识掌握的还不是很好,而且也没有运用相关知识进行开发,只是跟着教程做了小demo。其它Spring的知识模块仅限于会使用但是还不够熟练,而且Spring的内部原理理解的也不是很深,想要吃透还是需要花费更多的功夫。
技术总结博客
SpringBoot的文件上传与下载
概述:文件上传是Web应用常用的功能,SpringBoot作为Web开发主流框架,也有对应的功能,主要分为:单文件上传、多文件上传以及文件下载三大方面。