earendilzhu

[I.3] 个人作业:结课总结

[I.3] 个人作业:结课总结

项目 内容
这个作业属于哪个课程 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2025_LR
这个作业的要求在哪里 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2025_LR/homework/13465
我在这个课程的目标是 通过实际的工程实践,进一步体会现代软件工程构建的方法论,在这个过程中不断完善个人技术栈
这个作业在哪个具体方面帮助我实现目标 整体总结本学期的工程实践经历,从中提取学习领悟到的方法论

博客链接

https://www.cnblogs.com/earendilzhu/p/18750548

问题回答

1.在AI时代,“技能的反面”还仍然是“解决问题”吗?

通过本学期的学习,我认为我当时的看法是部分正确的。如今的人工智能代码助手工具已经能够帮助开发人员快速上手简单代码。比如在WebAssembly的部分以及后端开发WebSocket的部分等等,我都利用了人工智能工具辅助我进行代码开发。有一些公司在面试时也允许面试者使用AI工具。但是如今的人工智能工具还没有发展到用户不需要了解低层次问题就能完全上手的程度,人工智能也会犯错,有时候会误导开发者,导致付出更多代价。在开发者已经了解相关知识的情况下,使用AI工具提升产能是很好的选择。

不过未来人工智能的发展是难以预料的。如果AI成长得足够强大,“技能的反面”或许就真的不是“解决问题”了。

2.探索阶段中为什么不适合结对编程?

我认为我的看法是正确的。在面对一个陌生的场景时,一个开发者从头了解的效率明显不如结对编程。在课设结对编程部分中,我对WebAssembly不熟悉,而我的队友有比较丰富的经验。在他的指导下我们的编程效率明显更高。在团队编程中聚在一起开发也有好处,能够督促自己不要偷懒,而且前后端之间可以直接对接,提出的问题可以迅速讨论解决。当然对于规模比较大的团队,这种方法大概率不太适合,会造成管理混乱。

3.对于实际工程开发情景,RASCI 模型是否过于简单理想化?

我认为的确过于理想化。对于我们的团队开发项目来说,工期紧任务重,而且人手比较少,基本每个人都需要起到R的职责,这就会与其它的职责分配产生重合。可能根本不存在S与C的角色,项目的辅助工作大部分通过自己在网络上搜索资料或者利用大模型来完成。对于比较大规模的工程可能需要RASCI模型来做参考,但是很难完全按照这一模型来实施。

4.可以牺牲质量去追求用户体验吗?

在课程项目开发的应用场景中没有出现产品质量与用户体验之间的取舍,因此只能进行思想上的探究。这两者一般会在资源受限的条件下产生冲突,而如何取舍跟产品的性质有关。对于任何种类的产品有一些不能牺牲的质量,如软件稳定性,安全性,数据的一致性和正确性等。在此基础上,如果希望尽快抢占市场,或者为了进行产品验证,可以适当地牺牲质量以换取用户体验,在后续的开发过程中可以逐步提升质量。此外在项目的初期阶段可以不必过于在意项目的整体质量,但核心功能的质量必须保证,在这个前提下去权衡用户体验与产品质量。

5.大众对一个新产品是否接受是否真的在于那“一小步”?

我认为我当时的看法基本正确。领先得早不如领先得对。成功并不仅仅在于最早进入市场,而是在于要选对时机并满足用户真实需求。真实生活中许多创业失败的原因在于当时市场的不成熟,用户还没有准备好,并且宣传成本过高。这更加体现出开发者正确把握市场节奏的重要性,而并非只是尽早发布。原文的论述具有较强局限性。

6. NABCD模型对于学生来说是否适用?

通过实践我发现NABCD对于学生群体来说很难适用。在最开始的选题确认阶段,组内成员提出要做一个计算机专业的具有私密性的实时对话系统,我对这一选题不太满意,表示不具有创新性;在几天后我提出了一个选题:是有关北航食堂菜品的推荐系统,并且向族内成员充分论述了这个新选题的优势,比如易于实现,受众人群广,目前没有同类竞争产品,开发成本低等等。然而大多数组员都只是懒得换选题,并没有考虑客户的需求,产品的亮点等等,我的新选题因此被抛弃,但其实并没有有效反驳该选题为什么不可行。

我认为对于特定群体来说NABCD模型的确是可行且有用的,但不太可能是学生群体。学生群体惰性较强,不太会好好考虑分析其它意见。

学习到的知识点

需求

学会用NABCD模型提出一个靠谱的软件项目建议

设计

掌握了基本的系统架构设计。项目分为前端和后端,并且结合用户需求设计数据库中的表项与关系

实现

学会springboot框架下的基本后端操作方式

测试

学会使用Apifox工具进行前后端API对接,并进行初步调试

发布

学习了CI/CD的基础思想,提高了上限的可靠性

维护

意识到良好的文档对后期维护工作的重要性

心得体会

​ 从软件工程课的实践中我亲自体验了软件开发的全流程,从中体会到很多从书本上体会不到的知识。

​ 在课程中我第一次听说并体验了结对编程。在知识方面接触到了软件运行环境的前沿技术WebAssembly,并亲自动手实践。更重要的是体会到了结对编程的特点:重视人员写作,沟通顺畅,问题反馈高效,开发效率高。两个人一组可以同时看代码,更早发现潜在问题,降低后续维护成本,在这个过程中队友也向我分享了它的知识库,帮助我进一步提升。结对编程为我打开了一种软件开发的新思路,这种思路在后续也会为我所用。

​ 主要的收获来自团队项目,让我体验熟悉了软件开发的流程,完善了自身后端开发技术栈。之前的项目中我只接触过前端开发,这次挑战自己进行后端开发,学习并利用springboot框架,maven,redis等技术,部署了WebSocket技术,在实践中提升自己对这些技术的应用与理解。除此之外体会到了团队合作的重要性,以及团队合作中会遇到的困难。开发过程中总会有队友进度落后,导致拖慢整体开发进度;也不一定自己所有的想法都会被团队采纳且接受,需要通过有效协商解决。前端与后端需要尽早明确整体架构和api格式等,这样才能提升代码的开发效率。我认为这学期的拖累我们组软件开发的主要要素就是组内成员的沟通太少,没有及时交换彼此的意见。

​ 未来无论是进入企业实习,还是走科研道路,我都会更加注重与他人协同,持续拓展自己的技术栈与工程经验。软件工程不仅是一门课,更是我今后技术成长道路上的一块基石。感谢软件工程课程老师与助教在这一学期内为我们做出的付出。

posted on 2025-06-20 19:01  earendilzhu  阅读(26)  评论(0)    收藏  举报

导航