SE:Stay-up-late Engineering

SE:Stay-up-late Engineering

2024 秋软工实践个人总结

一、学期回顾

1.1 初始对于软件工程课程的想象🧐

在最初接触软件工程这门课程时,我一直以为它会是一门以学习具体软件开发技术为主(比如springboot,springmvc等软件开发工具)的课程,是让我精准化地学习软件开发的具体技术和掌握偏向片面的编程技术,然后在实践课程中明确地应用这些技术。

经过这一学期的学习和实践,我发现这个课程并非如此,就像这次考试中SE的定义,“将工程化方法应用于软件开发的过程中”一样,在教学过程或者自学过程以及在软工实践的作业中,我更多地 是吸纳从需求分析、设计、编码到测试这些完整流程的工程化方法论和工程化过程这些“抽象”层次,而不是更具体的主流技术。

这让我想起来 “依赖倒置原则DIP”(学习或者依赖于抽象层次,才能具有更好的扩展性或者在技术变更时做出更简单的调整,避免在技术过时后因为和具体技术的过度耦合而被淘汰。)

当然,尽管是学习软件的工程化为主,但是既然是有明确目标的实践过程,那就必然会涉及和学习到除了方法论以外的实践技术,在实践过程中,通过团队项目,我不仅深刻体会到了软件开发从需求分析、设计、编码到测试的完整流程,还学会了如何使用各种工具进行项目管理和版本控制如 Git ,熟悉了简易uni-app框架的开发和后端云服务的应用,进一步熟练了aigc的智能编程,这些工具的熟练使用大大提高了我的工作效率和团队协作的流畅性。

1.2 回顾投入与产出

在软工实践课程当中我编写了约4000kloc代码。包括个人作业和团队作业以及其中代码的删删改改

在团队项目中我参与了 福小旅 的设计与开发,我在其中承担的模块是个人中心模块的前后端以及用户社区数据的同步。

软工实践的各次作业分别花费的时间:

作业 花费时间
第一次个人作业 3.5h
第二次个人作业 24h
第一次结对作业 1d
第二次结对作业 5d
第一次团队作业 30h
第二次团队作业 20h
现场编程作业 4h
团队作业 beta 冲刺 10d

在软件工程课程上花费的时间:

累计时间 实际周均时间 预计周均时间
193.5h 15小时 14.3小时

1.3印象最深刻的一次作业

是第二次结对作业,没错,就是那次因为国庆节贪玩 所以急着回家,但是电脑忘记带了,然后一到家手机打开博客园发现布置的作业deadline是恰好覆盖国庆节假期另加俩天 的那次。为什么这次作业让我印象深刻呢?
一是因为发现作业时间刚好是假期加上2天时间,但是国庆节放假没带电脑做不了作业
二是 一联想到我以后工作也要花着自己的放假的时间push公司的项目进度就感觉晚上睡觉盖个刚好盖到脸的破草席————这被子也就这样,到头了

二、总结收获

2.1 软工实践故事

  • 在个人编程作业中,我认为我收获了一个最关键的经验(更准确来说应该是教训),开发像“羊了个羊”这种体量不大,但是又要用到专门的库和一些不常见的逻辑代码比如“鼠标点击,多层图形,多层图形错位,图层点击优先队列”的小应用(学习成本高,实现的东西却不大),应该要做到能 c+c/v 先 c+c/v ,能实现先实现,先实现后学习。不然就像我第一次作业一样,百分85的时间全用来查阅学习包括pygame库里的方法和框架逻辑,尽管学到的70%全都没有用到。(主要原因还是当时对软件工程的认识还错误地停留在“以学习具体技术为核心”的范围,所以傻傻地以为这次作业目的就是学习这个库的应用)

  • 在结对编程作业中,我和我的搭档木合塔拉提配合,共同完成了一个小程序的开发。第一次结对作业我们共同使用墨刀进行原型设计和应用需求分析,而在第二次结对作业由于对框架的不熟悉和当时国庆在家无电脑的缘故,导致我的参与程度不高,项目结构中大多数js、wxss、wtml由我的好搭档木合塔拉提使用ai辅助编码完成。而这次作业也时刻提醒着我,回家带电脑!回家带电脑!回家带电脑!🤡🤡🤡

  • 在团队项目实践中,吸取的最主要的教训是,团队内如果没办法保持社交联系上的一致性或者说团队内的紧密联系,会对整个项目的敏捷程度和完成进度产生较大影响,最起码要求在团队内完成同一模块的小分组成员间的交流要做到自然。比如这次团队实践中,我们团队由六个互相熟悉的女生和四个原先互不相识的男生组成,在项目过程中,包括在四个男生之间前期的项目分工,以及在整个项目过程中男生女生之间的不同模块进度交流以及同模块内的技术问题交流,都出现过由于互不相熟和交流不自然,无法在交流上保持自然高效,而导致的项目进度受阻和无法及时调整技术方向的敏捷度下降这些情况。(ps:印象里小组的组长讲过最多的一句话就是“你们男生有不会的直接来问我们,或者直接在群里说出来,不要一直一声不吭闷声干事啊”。)

    上图为编写的用户数据云同步的部分逻辑

2.2 学习到的新技术或生产力工具

  • chatgpt:无需多言,一句话,我爱openai团队。😙😙

  • 前端框架 Vue.js:在团队项目中,我们使用 Vue.js 进行前端界面的开发。这种把一个页面的模板逻辑和样式都写到一个文件里的架构方式非常方便,深得我心。

  • Github:Github 是团队项目过程中的重要工具,虽然不算什么新技术但是在我们项目中的版本控制,贡献记录和项目其他小分组模块在小组内的共享等方面起了很大作用

  • 阿里云云服务(云数据库 RDS 和云函数 FC):两者结合大大提升了项目的开发效率和稳定性,减少了服务器运维的负担,让我们能更专注于业务功能的实现,加速项目的推进与迭代。

2.3 技术之外的提升?

  • 团队协作能力:通过团队项目的实践,我学会了在团队中明确自己的角色和职责,相互协作、相互支持,共同完成项目目标。

  • 时间管理能力:软工实践课程的作业和项目任务通常都有明确的时间节点,在这个过程中,我学会了如何分配时间,如何在有限的时间内高效地完成任务,以及如何应对突发情况对计划的影响。通过不断地实践和调整,我的时间管理能力得到了很大的提升。

  • ai应用能力:帮助我在新技术学习,程序编码,文档编写,资料收集等等多个方面都有一个量级的的速度和质量提升

2.4 其他想说的

我这一学分有0.35算在chatgpt头上,有0.15算在豆包头上

三、致谢

感谢老爹老妈把我生的这么能熬夜还这么会抗压😎😎

posted @ 2024-12-30 01:39  朱艾伦  阅读(27)  评论(0)    收藏  举报