往者不谏,来者可追——2024秋软工实践个人总结博客
前言:
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2024 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315 |
这个作业的目标 | 总结自己在软件工程实践的经验收获 |
学号 | 052206123 |
一、学期回顾
1.1 对软件工程实践的预想与现实
在还未进行软件工程实践时,我个人只学习了程序编码的相关知识,缺少完整开发一个软件的经验,所以我期待能够通过软件工程实践,了解一个软件开发的完整过程,并能够完成一次完整的软件开发。而在这三个月的软件工程实践里,我实现了许多最初设定的目标,但也留下了不少的遗憾。
在这次实践中,个人编程和结对编程让我了解了软件开发中编码的方式与工作量,而团队编程更是让我学习和体验了软件开发的各个阶段,同时也加强了我的沟通能力和与他人协作的能力,这达到了我对软件工程实践的预期目标。
但这次实践的最终结果也不是十全十美的,最大的遗憾便是我个人开发能力并没有得到提升。软工实践并不教授具体的开发技能,而是直接发布开发任务。本来因为个人原因,本学期我用于软工实践的时间已经比较紧张,再加上软工实践开发任务较重(个人认为),导致我每次只有较短的时间来完成开发任务,这就要求我具有快速开发的能力。但我对软工实践目标就是为了提高我的开发能力,我自身的开发能力其实比较一般,所以我每次开发任务的完成情况都十分粗糙。
以团队编程的任务为例,我个人具有一定的qt开发基础,所以选择用qt开发来完成任务,但由于对qt开发不够熟练,所以最终开发的软件并没有完成需要的功能。在团队编程中,我们选用了html+javascript+css搭建前端(有模板且容易学习)。在AI的帮助下,我能够在本地上实现软件的预期功能,但是,当部署在服务器上时,却出现了许多错误,且这些错误涉及的情况较多,对后端了解不足的我无法排查出这些错误,这也跟我没有充足的时间学习新的知识有关。总的来说,在本次实践中,我对其他新技术的学习都只是浮于表面,对自己掌握的技术又没有得到提升,这就是最大的不足。
1.2 对软件工程实践的投入与产出
·在本次实践中,我编写了3k行代码
·在团队项目中我参与了“卷卷福”的涉及与开发,我是AI模块的开发者之一。
·在本次实践中,我各次作业的花费的时间为:
作业 | 花费时间(h) |
---|---|
第一次个人作业 | 3 |
第二次个人作业 | 22 |
第一次结对作业 | 14 |
第二次结对作业 | 65.5 |
第一次团队作业 | 5.5 |
第二次团队作业 | 8 |
现场编程作业 | 4 |
团队作业Beta冲刺 | 40 |
·在软件工程课程上花费的时间
累计时间(h) | 实际周均时间(h) | 预期周均时间(h) |
---|---|---|
162 | 18 | 12 |
1.3 令我印象深刻的一次作业
在本次实践中,我印象最深刻的就是团队编程,因为这次作业任务量最大————开个玩笑。团队编程令我印象深刻的原因是它涉及到了一次软件开发各个方面的内容,包括需求分析、文档编写、小组会议与协作开发等,这些都是我想要在实践中了解的内容。除此之外,小组成员之间的协作编程也让我增长了许多经验,这有利于我将来工作时与他人的协作。例如,在团队编程中,我与另一名同学负责AI模块的编写,其中我负责接入AI大模型,而他负责页面设计,我们两个在不断沟通交流中,总会想到许多新的点子,并进行实践,这次合作会成为我的一次美好的回忆。
二、总结收获
2.1 我的软件工程故事
在我的结对编程中就有一件故事————应该是事故,在我们敲定了开发的框架之后,国庆回家就先各自学习再进行任务分配。由于我和队友都不是很擅长沟通,导致我们不知道对方的学习进度如何,也没有主动问,都是先自己学习。等到国庆快结束时,一次偶然的聊天才发现我们双方都没有学界面设计,这就导致了我们开发的软件界面都十分简陋,且没有设计样式的经验。之后紧急分工了一下,一人负责前端设计,一人负责后端,虽然最后开发完成了,但十分简陋。
这个事故发生的主要原因就是我们的沟通不积极,无法获知对方的开发进度,这又进一步影响了我们的任务分配,导致我们的开发效率低下。在此之后,我主动沟通的次数就增加了(苦笑)。
2.2 新的生产力工具对我的帮助
·Cursor:这是一个AI编码辅助工具。在我没有充足的时间学习新的开发技术时,Cursor能够很好地辅助我快速学习,让我总是能够完成开发任务(虽然都很简陋)。
·Craiyon:这是一个文生图工具。我第一次个人作业的素材就是来自Crayon,它在一定程度上解决了我的个人开发缺乏图片素材的问题。
·plantUML:这是一个能够根据代码生成相应的UML图的工具。在我们团队开发中,plantUML能够辅助生成时序图、活动图等,为我们带来很大的方便。
除了这些工具,我也学习了新的开发技术:python的游戏设计、qt开发、web开发。但除了qt以外其他技术的学习都是浅尝即止,而qt作为我之后重点掌握的技术,我在结对作业中收获了许多qt开发的经验,我现在以及可以开发一些简单的个人桌面应用。
2.3 技术之外的提升
·软件工程学习:在实践之前,我对软件工程没有什么具体的概念,只知道这与软件开发相关。学习了理论课后,我对软件工程的内容,例如需求分析、体系结构设计、测试等有所了解,但对于真正的软件开发过程还是朦朦胧胧,直到实践之后,需求分析与建模、敏捷开发、小组会议等更加具体的内容才让我能够比较清楚地理解软件开发这一词背后的内容。
·沟通能力:虽然反复强调,但对于i人来说,沟通能力真的是一个非常重要的部分。在设计到多人开发的作业中,我经常因为难开口导致了开发进度停滞不前,又或者开发结果割裂,没有达到预期的结果等。但每次作业我的沟通能力也得到了不同程度的提升:结对编程的一对一沟通,团队编程的小组沟通、任务的对接沟通、表达自己的想法与需求等等,现在我的沟通能力已经明显强于实践之前。
·积极学习新的知识:先进的生产力对开发的助力是十分巨大的。如果说,在实践之前,我只是学习了计算机专业相关知识的大学生,那实践之后才算是一个真正的计算机科学与技术的大学生。互联网技术日新月异,变化迅速,将来要从事互联网行业的工作,就必须积极适应这种变化,不断学习更加先进的框架、技术,了解新的知识与工具,提升自己的能力。在这次开发中,我学习了新的技术————web程序开发,这不是一个很新的技术,但对于我这个之前只学习了c/c++的学生,它的快速开发能够适应软工实践的任务要求,那么这便是值得我学习的新技术。除此之外,新的生产力工具也至关重要,Cursor、Craiyon等AI工具都辅助了我完成开发任务。
2.4 杂谈
关于我的软工实践故事在上面已经基本讲完了,现在讲讲我的感受,也给学弟学妹们传授点经验吧。
首先是关于开发技术的。因为软工本身是不讲授开发语言的,所以熟练的掌握一门开发语言是十分重要的。例如我自己有基础的qt开发,还有软工很多同学都用的web开发等。当然,你在实践过程中学习也是可以的,只是这就带来了一定的学习成本,如果说像我一样在本学期有其他规划与任务时,压力就会非常的大。像我自身国庆时期就天天在家学习qt界面设计,相当于是换了个地方写代码,这也让我时常后悔没有在之前的暑假多花点时间学习开发技术。
其次,应该多安排一些线下的会议与编码。在线下,大家的专注力与积极性都会比较高,在线上容易懈怠与逃避。
最后,组队时最好能够找具有相同开发语言的同学组队,这样开发效率会更高(不过我感觉好像每个小组都选择了web开发)。
三、致谢
在本次实践中,我首先想感谢的是我们先天软工圣体团队的组长陈言泷。在团队编程里,组长统筹整个项目,兼顾了我们每个组员的情况,给我们每个人都分配了合理的任务。我自身开发经验不足,组长便让我负责AI接口,并与另一名组员协作开发,让我不用涉及前后端的对接。我能够在团队项目中有所发挥,组长对我的帮助很大。
其次想感谢的是结对编程的队友童潇剑同学。童潇剑完成任务的积极性高,也调动了我的积极性。我们一起协作开发,相互学习,每个人都努力地完成项目的开发。在结对编程中,我在童潇剑同学身上学到了许多。
最后也感谢张栋、吴越钟老师的指导以及助教们对我作业的评改,你们的批评指正是我不断改进的动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了