《软件工程实务》学习心得:从 “只会写代码” 到 “能做靠谱软件” 的蜕变

张开发
2026/5/14 17:16:17 15 分钟阅读

分享文章

《软件工程实务》学习心得:从 “只会写代码” 到 “能做靠谱软件” 的蜕变
摘要这学期学完《软件工程实务》我才明白写代码只是软件工程里很小的一环。从产品愿景到架构设计从敏捷协作到测试上线课程带我走完了软件项目从 0 到 1 的全流程也让我对 “做软件” 这件事有了颠覆性的认知。这篇心得会按课程单元梳理我的收获、实践踩坑和真实感悟附详细的图片建议和 CSDN 排版技巧帮你直接拿到高分关键字软件工程实务、敏捷开发、Scrum、微服务、DevOps、测试一、先搞懂这门课到底在教什么以前我以为 “软件工程” 就是 “写规范的代码”直到跟着课程案例 “能源管理系统” 走完全流程才发现它教的是一套 “把模糊想法变成用户能用、好用、能维护的软件产品” 的方法论 。下面我按课程单元结合自己的实践聊聊每个模块到底学了啥、能怎么用。二、按单元拆解我的学习收获与实践记录一项目启动别上来就写代码先搞清楚 “为什么做”1.1 产品愿景给项目找个 “指南针”以前写作业都是 “上来就敲代码”结果写到一半才发现 “和老师要的不是一个东西”。学了产品愿景才知道项目启动的第一步是回答清楚这 5 个问题我们的产品是什么目标用户是谁用户的核心痛点是什么产品能解决什么问题成功的标准是什么比如课程里的 “能源管理系统”如果只说 “做一个能源管理系统”没人知道要做啥但写成愿景“为工厂管理员打造一款能实时监控能耗、分析浪费、生成节能报表的系统帮企业降低 15% 的用电成本”一下子就清晰了。1.2 进度管理告别 “deadline 前熬夜爆肝”以前写作业都是 “先玩最后一周赶工”结果 bug 一堆还交不上。课程里的进度管理教我把大项目拆成可跟踪的小任务用甘特图划分阶段需求分析→功能设计→架构设计→开发→测试→上线用看板跟踪进度每个任务标清楚 “待办 / 进行中 / 待测试 / 已完成” 和截止时间比如我们小组的能源管理系统项目把 “完成用户场景分析” 定在第 2 周结束“完成功能清单设计” 定在第 4 周结束全程没再出现过手忙脚乱的情况。二需求阶段别用 “我以为” 代替 “用户说”2.1 产品定义及用户场景站在用户的角度写需求用户场景不是 “我要实现报表功能”而是 “用户在什么情况下用这个功能解决什么问题”。比如能源管理系统的场景工厂管理员王哥月底要给领导交能耗报表以前要从 5 个电表抄数据、算浪费花 3 天还容易算错用我们的系统点一下 “生成月度报表”1 分钟就能拿到带超标分析的报表直接发给领导。这样写出来的需求开发、测试、产品都不会跑偏。2.2 CodeupGit 入门终于和 “作业 1_真的最终版.py” 说再见以前写代码的版本控制是 “作业 1.py→作业 1_修改版.py→作业 1_真的最终版.py”学了 Git 之后才知道专业的团队开发都是这么做的用git add/commit/push提交代码用分支管理不同功能比如dev-report写报表dev-monitor写监控用pull解决团队协作的代码冲突第一次和同学在 Codeup 上协作开发我写报表功能、他写监控功能最后合并分支解决冲突终于明白 Git 为什么是开发必备技能了。2.3 用户故事用用户的话写需求再也不怕理解错用户故事的万能格式作为[用户角色]我想要[功能]以便[达成目标]比如作为工厂管理员我想要设置能耗预警阈值以便设备超标时能收到提醒作为企业领导我想要看年度能耗对比报表以便评估节能措施的效果用用户故事写需求既简单又无歧义再也不会出现 “你说的 A 和我理解的 A 不是一个 A” 的情况。三设计阶段把需求变成 “能落地的方案”3.1 软件功能设计 6.2 能源管理系统功能清单把用户故事拆成可实现的功能用户故事是用户视角功能设计就是把故事拆成具体的功能点。比如 “能耗预警” 用户故事拆成功能就是支持按设备设置能耗阈值上限 / 下限超标时自动推送短信 / 系统消息提醒支持查看历史预警记录统计月度预警次数课程里的 “能源管理系统功能清单模板” 帮了大忙它把功能分成了 “基础管理、设备监控、能耗分析、报表管理、系统设置”5 大类整理出来的清单既不缺漏也不混乱。3.2 软件架构基础 7.2 微服务架构原来软件不是 “一整个大程序”以前我写的代码都是 “一个文件写所有功能”学了架构才知道这种 “单体架构” 小项目还行一旦项目变大改一个地方全崩根本没法维护。微服务架构就是把软件拆成一个个独立的小服务比如能源管理系统可以拆成用户服务→设备监控服务→能耗分析服务→报表服务→预警服务每个服务自己跑自己的互不影响改报表功能的时候不会影响监控服务的运行。3.3 软件业务架构设计指南理清楚用户的业务流程业务架构就是从业务角度梳理用户的操作流程比如管理员从 “登录系统→查看实时监控→设置预警阈值→处理超标告警→生成月度报表”整个流程的顺序和逻辑是什么。以前我写代码从来没想过业务流程结果写出来的软件用户要绕 3 步才能完成一个操作学了业务架构之后我才知道要先把流程理清楚再写代码这样做出来的软件才好用。3.4 软件技术架构设计指南 9.2 数据字典参考把架构落地成技术方案业务架构是 “做什么”技术架构就是 “用什么技术做”。比如我们的能源管理系统技术架构可以这样定前端Vue.js后端Spring Boot微服务数据库MySQL业务数据 Redis缓存数据消息队列RabbitMQ处理预警消息监控Prometheus Grafana系统状态监控数据字典就是把数据库里的表、字段都定义清楚比如 “用户表” 里的role字段1管理员2运维人员3企业领导这样团队里的人都知道每个字段是什么意思不会乱改。四开发与协作用敏捷的方式高效做项目4.1 敏捷软件工程 10.2 产品积压项清单拥抱变化小步快跑以前我觉得 “软件项目就是需求定死从头到尾按计划做”但敏捷开发说 “需求是会变的我们要拥抱变化小步快跑不断迭代”。产品积压项清单就是把所有要做的需求、功能、bug 都列出来按优先级排序每次迭代只做高优先级的内容比如第一次迭代做 “设备监控基础功能”第二次迭代做 “能耗报表功能”这样每次迭代都能出一个能用的版本不会等到最后才发现和用户想的不一样。4.2 Scrum11.2 Scrum (2)终于搞懂团队开发怎么协作以前只听过 “Scrum” 这个词学了之后才知道它是靠这几个关键环节让团队高效协作的产品负责人PO整理需求排优先级Scrum Master帮团队扫清障碍保证流程顺畅迭代Sprint2-4 周一个迭代定一个明确目标每日站会每天 15 分钟说清 “昨天做了什么、今天要做什么、遇到了什么问题”迭代评审会给用户演示功能收集反馈迭代回顾会总结做得好和不好的地方下次改进我们小组模拟 Scrum 流程的时候一开始觉得每日站会很麻烦后来发现每天沟通很多问题当天就能解决不会拖到最后效率反而高了很多。五质量与安全做一个 “靠谱不崩” 的软件5.1 可靠编程 12.2 安全和隐私别让软件 “一用就崩”以前我写代码只要 “能跑就行”根本不管异常情况用户输入负数怎么办数据库连不上怎么办网络断了怎么办学了可靠编程之后我才知道要加异常处理、边界条件判断比如用户输入负数时系统要提示 “请输入正数”而不是直接崩溃。安全和隐私更是重中之重用户密码不能明文存数据库要加密要防止 SQL 注入、XSS 攻击不能随便泄露用户的操作数据。课程里的真实案例让我明白软件安全从来都不是小事。异常处理代码示例Java5.2 云计算 13.2 DevOps让软件轻松上线和维护以前我写的代码只能在自己电脑上跑不知道怎么部署到服务器上学了云计算和 DevOps 之后终于搞懂了云计算用阿里云 / 腾讯云服务器部署软件不用自己买硬件按需付费很方便DevOps把开发和运维结合起来用自动化流水线实现 “代码提交→自动测试→自动部署上线”不用手动操作又快又不容易出错六测试别让用户帮你找 bug第 14 单元以前我写代码的测试就是 “自己点两下没报错就交了”学了之后才知道测试是软件工程里非常重要的一环而且有科学的方法单元测试测试每个函数、每个模块的正确性集成测试测试模块之间的调用是否正常系统测试把整个软件当成整体测试功能是否符合需求回归测试改了代码之后再跑一遍旧测试确保没改出问题测试用例更是关键比如测试 “用户登录” 功能要覆盖所有情况正确用户名 密码登录成功错误用户名提示 “用户不存在”错误密码提示 “密码错误”空用户名 / 密码提示 “请输入用户名 / 密码”三、学完这门课我最大的 4 个改变从 “只看代码” 到 “看全流程”以前以为软件工程就是写代码现在才知道需求、设计、协作、测试、运维每一步都决定了软件的成败。从 “想到啥写啥” 到 “先设计再动手”以前上来就敲代码现在会先理需求、画流程图、搭架构返工率直接降了 80%。从 “单打独斗” 到 “团队协作”以前只会自己写作业现在会用 Git、Scrum 和同学协作开发终于懂了团队项目怎么跑起来。从 “能跑就行” 到 “追求靠谱”以前不管代码健壮性、安全性现在会考虑异常处理、数据加密、可维护性写出来的代码质量高了很多。四、最后想说的话以前我觉得软件工程是 “枯燥的规则”但学完这门课才发现它教的是一套 “解决问题的思维方式”。不管以后我做不做开发这些需求分析、团队协作、质量控制的方法都能用到其他地方。感谢这门课带我走进了真正的软件工程世界也希望这篇心得能帮到和我一样的小伙伴

更多文章