一、学期回顾

1.1 回顾你对于软件工程课程的想象

在学习软件工程课程之前,我期待这门课能够系统性地讲解如何将理论知识转化为实际可用的软件产品,并希望通过团队协作,亲身经历从需求分析到产品上线的完整流程。

达到了期待与目标的方面

  • 系统性的工程化思维训练
    课程从软件生命周期、需求分析、设计模式到测试维护,逐步构建了一个完整的知识框架。通过理论学习,我认识到软件开发不仅是“写代码”,更是一个需要系统规划、团队协作和持续迭代的工程过程。这完全符合我最初对课程“体系化”的期待。
  • 实践与理论紧密结合
    课程中的项目实践环节让我真正体验了敏捷开发、版本控制(Git)等工程实践。例如,通过小组项目,我掌握了如何使用Git进行协作、如何编写规范的文档、如何设计可扩展的架构。这些动手经验对我理解工程化开发至关重要。
  • 团队协作与沟通能力的提升
    在团队项目中,我经历了需求讨论、任务分配、代码评审和冲突协调等真实工作场景。这让我意识到沟通与协作在工程项目中的重要性,也锻炼了我的项目管理能力——这是我在课程前特别希望获得的软技能。
  • 对软件质量的重视
    通过单元测试、集成测试的学习与实践,我养成了在开发中持续考虑代码可靠性、可维护性的习惯。课程中强调的“质量内建”理念,让我对软件工程的专业性有了更深的理解。

仍感不足的方面

  • 有时感觉个人在某一技术领域的深入钻研时间被压缩。例如,为了完成项目进度,可能选择熟悉但非最优的技术方案,而缺乏对技术选型的深度思考和比较。同时过于复杂的技术难以实现,在有限时间内难以兼顾每个学生的技术深度发展。

1.2 回顾你在这门课程中的投入与产出

  • 代码量约4000行。
  • 在团队项目中参与了后端的设计与开发,学习并利用go语言完成了后端历史存储的功能、实现sse流式对话、openAI-API兼容和调试。
  • 软工实践的各次作业每名成员分别花费的时间:
作业 花费时间 主要任务
第一次团队作业 10h markdown语言学习和git操作
第二次团队作业 12h 实现sse流式对话与openAI-API兼容
第一次团队项目作业 15h go语言的学习和ppt制作润色
第二次团队项目作业 30h SSE流式对话、OpenAI兼容
第三次团队项目作业 35h 实现历史记录存储功能
第四次团队项目作业 15h 汇报ppt制作
  • 在软件工程课程上花费的时间
累计时间 实际周均时间 预计周均时间
117(h) 11.7(h) 8(h)

1.3 令你印象最深刻的是哪一次作业或哪一场答辩?为什么这次作业或这场答辩令你印象深刻?

在软件工程课程的所有实践环节中,令我印象最为深刻的是期末项目最终答辩。那不仅仅是一次作业展示,更成为我们团队整个学期努力与成长的高光时刻,至今回忆起来依然心潮澎湃。
答辩当天,当我们团队走上讲台,面对评委与全年级同学展示我们历时一个学期协作完成的成果时,我内心充满激动与感慨。从最初模糊的需求构思、一次次激烈的技术讨论,到中期攻坚时的相互支持、最后冲刺阶段的熬夜调试——整个过程的点滴努力,在这一刻凝聚为台上流畅而生动的演示。我尤其记得我们为项目专门制作的开场动画:它以简洁有趣的视觉语言,将我们的产品理念、技术架构和用户价值清晰呈现出来,不仅活跃了现场气氛,也让复杂系统的逻辑变得直观易懂。那一刻,我看到台下许多同学哈哈大笑,也频频点头,这让我们备受鼓舞。
更令人振奋的是答辩结束后的颁奖环节。当听到我们项目同时荣获“一等奖”与“最佳UI设计奖”时,整个团队瞬间欢呼起来。这份荣誉不仅是对我们产品完成度的认可,更是对我们持续打磨用户体验、追求界面美观与交互流畅的专门肯定。我为我们团队感到无比自豪——自豪的不仅是最终奖项,更是每个人在整个过程中展现的责任感、创造力与协作精神。我们曾为某个技术方案争论不休,也曾互相帮助调试至深夜;有人专精前端交互,有人深耕后端逻辑,有人默默完善文档与测试。正是这些不同角色之间的信任与配合,让我们最终交出了一份完整、扎实且富有创意的作品。
这场答辩之所以令我铭记至今,是因为它让我真切体会到:软件工程不仅是代码与技术的叠加,更是关于人、关于协作、关于共同创造价值的旅程。它将课程中抽象的方法论转化为具象的团队记忆,也让我深刻理解到——优秀的软件产品背后,一定有一个能够有效沟通、彼此支撑的团队。这份经历,无疑是我课程学习中最为珍贵的一课。

二、总结收获

2.1 展开说说你的软工实践故事

我的软工实践故事:从零到一的团队之旅
在软件工程课程的团队实践中,我从一个对工程协作仅有模糊概念的初学者,逐渐成长为能在具体任务中承担职责、并与团队共同交付完整产品的参与者。这段经历不仅锻炼了我的技术能力,更让我深刻理解了软件工程中沟通、迭代与协作的真实含义。
第一次作业:拥抱陌生,在协作中定位角色
在首次团队任务中,我的主要任务是学习Go语言并参与PPT润色,总计投入约15小时。作为一个之前未接触过Go的成员,我起初有些焦虑:如何在短时间内理解一门新语言并为团队做出实质贡献?我通过西二工作室的go语言教程快速上手。同时,在PPT协作中,我意识到清晰表达技术架构与项目愿景同样重要。这次经历让我明白,在软工实践中,快速学习与有效沟通是并行的重要能力。团队通过共享文档、即时反馈完成了首次协作,这也为我们建立了最初的协作节奏和信任基础。
第二次作业:深入技术集成,体会“流”与“兼容”的挑战
第二次作业我投入了约30小时,负责实现SSE流式对话与OpenAI兼容接口。这是项目中第一个涉及复杂集成的功能点。开始时,我对SSE长连接的管理和错误重试机制考虑不足,导致初期版本在高并发测试中表现不稳。通过与后端同学结对调试,我们逐步加入了心跳机制、超时控制和连接池管理,最终使消息流稳定可靠。同时,实现OpenAI兼容接口时,我深刻体会到设计良好接口的重要性——它不仅降低了前后端的耦合,也为后续接入其他模型提供了可能。这次任务让我认识到,工程实现不能只关注“功能完成”,必须同时考虑稳定性、扩展性和团队协作边界。
第三次作业:面对数据持久化,在复杂中寻找简洁
第三次作业我负责历史记录存储功能,投入时间约35小时,是四次任务中最长的一次。起初我低估了该功能的复杂性,以为简单的数据库存取即可完成。实际设计时,却需要综合考虑数据结构设计、存储效率、用户隐私安全以及与其他模块的交互。我尝试编写了一个过度抽象的历史服务层,。在肖垲同学的建议下,我重构为更直接清晰的模块,并通过详细的接口文档和示例代码帮助前后端顺利对接。这个过程让我真切体会到:软件工程中的“优雅设计”不等于“复杂抽象”,适用于团队协作、易于维护的简洁方案往往更有生命力。
第四次作业:回归表达,让技术被看见与被理解
最后一次作业我主要参与汇报PPT制作,用时约15小时。此时的我不再局限于局部功能,而是需要站在整个项目的高度,思考如何将团队一学期的努力清晰、生动地呈现出来。我与负责UI、后端、测试的同学反复沟通,提取各模块亮点,并用流程图、架构图和动画演示串联成有说服力的叙事。这次经验让我意识到,软件工程的终点不仅是可运行的代码,更是可被理解、可被认可的价值呈现。良好的呈现能力,能让技术努力获得应有的回响。
总结:在团队中成长,在工程中淬炼
回看这段软工实践之旅,我不仅贡献了代码,更在每次任务中学习了如何更好地与团队共同工作:从适应技术栈、攻克集成难点,到设计可维护的数据模块,最终学会为项目整体发声。这些经历让我明白,软件工程从来不是孤独的编程,而是一群人围绕一个共同目标,不断沟通、调整、突破的过程。而每一次时间的投入,最终都沉淀为对工程思维更深刻的理解,也化为最终展示时那份坚实的自豪感。

2.2 介绍学习到的新技术或生产力工具以及它们给你带来了哪方面的帮助?

  1. Go语言与Gin框架
    作为本次项目的主要后端语言,Go的简洁语法、原生并发支持(goroutine)和高效编译特性,帮助我快速构建高并发服务。配合Gin框架,我学会了如何设计RESTful API、管理路由中间件和处理请求上下文。这让我对现代服务端开发有了更直观的理解,尤其在实现流式对话接口时,Go的轻量级协程机制显著降低了开发复杂度。
  2. Git与GitHub团队协作流程
    通过实际项目,我系统掌握了Git的分支管理策略(如Git Flow)、Pull Request审核机制以及冲突解决方法。我们团队约定使用feat/、fix/、docs/等分支前缀,配合PR模板和代码审查,使协作过程清晰可控。这让我真正体会到版本控制不仅是代码备份工具,更是团队协作的核心基础设施。
  3. Server-Sent Events(SSE)流式技术
    在实现AI对话流式返回过程中,我深入学习了SSE协议的设计与实现。通过对比WebSocket,我理解了SSE在单向实时通信场景中的优势。实践中,我结合Go的context包实现了连接生命周期管理、客户端重连机制和错误恢复,这加深了我对网络协议、异步编程和资源管理的认识。
  4. OpenAI API兼容接口设计
    为支持多模型灵活切换,我设计了一套适配OpenAI接口规范的请求/响应结构。这个过程让我学会了如何通过抽象接口降低系统耦合度,同时通过中间件统一处理认证、限流和日志。这强化了我对API设计“兼容性”与“扩展性”的重视。
  5. 团队协作与文档工具链
    我们通过飞书集成GitHub动态,实现了开发进度透明化。这些实践让我认识到:高效协作不仅依赖技术工具,更需要合理的流程设计和信息同步机制。

2.3 技术之外,这门课程还给你带来了哪些方面的提升?

  1. 系统性思维与工程视角的建立
    课程让我认识到,软件不是功能的简单堆砌,而是一个需要统筹规划、权衡取舍的系统工程。例如在决定是否要为历史记录功能引入缓存时,我们需综合评估用户规模、数据一致性要求与开发成本。这种从“实现单一功能”到“思考系统影响”的转变,使我学会在技术决策中同时考虑扩展性、维护性与业务价值的平衡。
  2. 团队协作与沟通能力的实质进步
    真实的团队项目暴露并锻炼了我多层次的协作能力:
    有效沟通:从早期因术语不一致导致的误解,到后期能主动用可视化原型、接口文档对齐认知;
    冲突管理:在技术方案争论中,我学会了通过列出优劣对比表、寻求导师建议的方式推进决策;
    责任意识:当我的模块延期可能影响整体进度时,我学会了提前预警并主动提出补救方案。
  3. 项目管理与自我管理能力的提升
    在同时应对多门课程与项目开发的压力下,我逐步形成了自己的效率管理方法:
    任务拆解:将“实现历史记录”这样的大需求拆解为数据库设计、API开发、前端对接等可验证的子任务;
    时间评估:从最初严重低估工时,到后期能结合缓冲时间给出更现实的排期;
    优先级判断:学会区分“必要功能”与“优化项”,并在团队中推动共识。
  4. 将抽象需求转化为具体方案的产品思维
    课程中反复强调的“以用户为中心”不再是一句口号。在设计功能时,我开始主动思考:用户会在什么场景下使用?最可能遇到的操作障碍是什么?例如在优化历史记录查询时,我们放弃了技术层面更“优雅”的全量加载方案,改为分页懒加载,正是基于对真实用户使用耐心的考量。
  5. 展示与表达能力的锻炼
    最终答辩的准备过程,本质上是一次“如何向他人清晰传达技术价值”的高强度训练。我学会了:
    叙事构建:如何将技术细节(如采用SSE协议)转化为用户可感知的优势(“消息实时到达,体验更流畅”);
    视觉化表达:用架构图取代纯文字描述,让复杂设计一目了然;
    重点提炼:在有限时间内突出项目最具创新性与实用性的亮点。

2.4 如果还有什么想记录的或者想说的,就写在这儿吧!

这门课像一枚棱镜,让我对前路看得更清晰。我曾以为技术深度是唯一的路径,但现在我看到了另一种强大的可能性:成为那个能理解技术、协调团队、并定义问题的人。最大的遗憾能和团队里的“技术大神”多结对编程几次。
想对未来的学弟学妹们说:勇敢地去承担一个看起来超出你能力的任务,真诚地去拥抱和你技术栈不同的伙伴。

三、致谢

感谢肖垲同学在后端工作上和代码debug上给了我极大帮助、彭志成同学给了我极大鼓励、郑隆熙组长的统筹规划、苏西同学对前端设计的孜孜不倦以及对ppt项目功能解读的帮助,感谢哈基米的每一个成员以及我们一起奋斗的每一个日夜!

 posted on 2025-12-28 17:53  asbflabslfab  阅读(0)  评论(0)    收藏  举报