How time flies!竟然已经已经大三了...
(正文如下)
一、个人技能梳理与自我评估
1.1 当前技能树
| 方向 | 当前情况 | 自我评价 |
|---|---|---|
| C/C++ | 掌握基本语法、数据结构与算法 | 较熟悉 |
| Java | 掌握基本语法及常见开发方式 | 较熟悉 |
| Spring Boot | 能够进行基础后端开发 | 掌握 |
| MyBatis | 能完成常规数据库访问 | 掌握 |
| MySQL | 掌握基本 SQL 和数据库操作 | 掌握 |
| Redis | 了解缓存及常见使用场景 | 基础 |
| JUC | 掌握基础并发编程知识 | 基础至中等 |
| Git | 能进行基本版本控制 | 掌握 |
| Kafka | 了解消息队列基本概念 | 入门 |
| Nginx | 了解基本配置及使用 | 入门 |
| 软件工程 | 正在建立系统知识体系 | 学习中 |
1.2 感兴趣的方向
目前我比较感兴趣的方向主要有:
Java 后端开发(主要是因为之前听说Java工作市场大,现在貌似也一般般了...)
希望进一步掌握:
- Spring Boot;
- Spring MVC;
- MyBatis;
- MySQL;
- Redis;
- JVM;
- JUC;
- 微服务;
- 分布式系统。
AI 应用开发(多少也算目前的风口..)
随着大模型和生成式 AI 的发展,我也希望进一步学习:
- LLM API;
- RAG;
- Agent;
- AI 应用工程;
- AI 与传统 Web 后端的结合。
相比单纯研究模型本身,我目前更感兴趣的是:
如何把 AI 能力真正集成进软件系统。
虽然已经接触了一些后端技术,但回顾自己的学习过程后,我发现自己仍然存在比较明显的短板。
2.1 软件工程知识不够系统
过去更多是通过项目和课程学习具体技术,对需求分析、软件设计、测试、维护等软件生命周期知识缺少系统理解。
2.2 工程化能力不足
会写代码并不意味着能够完成一个高质量项目。
在代码规范、单元测试、项目文档、CI/CD、Code Review 等方面仍然需要继续学习。
2.3 分布式系统实践不足
目前对于微服务、分布式事务、服务治理等内容更多停留在学习阶段,还缺少完整的项目实践。
2.4 团队协作经验需要提升
以前进行课程实验时比较习惯独立完成任务。
而真正的软件项目往往需要多人协作,因此 Git 分支管理、任务拆分、接口约定和 Code Review 等能力也需要进一步培养。
二、代码量与本学期目标
之前跟着网上的教程,用java基本复刻了一个餐饮系统,一个博客系统,
目前个人累计有效代码量约为:
8000 行左右
主要以 Java 后端代码为主。
本学期希望在完成软件工程课程项目的基础上,再增加约:
5000 行有效代码
不过相比单纯追求代码行数,我更希望自己能够改变“以代码数量衡量进步”的思路。
因为:
1000 行混乱的代码,并不一定比 500 行结构清晰、可维护的代码更有价值。
因此,本学期除了增加代码量,我还希望提高:
- 代码规范;
- 模块化设计;
- 测试意识;
- 文档能力;
- Git 使用能力;
- 团队协作能力。
三、本课程最期待学习什么?
我目前最希望通过软件工程课程补上的并不是某一个具体框架,而是工程化思维。
具体来说,我比较期待以下内容:
1. 软件生命周期
希望系统理解:
需求分析
↓
软件设计
↓
编码实现
↓
软件测试
↓
部署上线
↓
运行维护
而不是只停留在“编码”这个环节。
2. 需求分析
希望学习如何把用户一句比较模糊的需求,转化成清晰的功能需求和非功能需求。
3. 软件架构
希望进一步理解分层架构、模块化设计以及不同架构方案背后的取舍。
4. 软件测试
过去写项目时容易出现“自己运行成功,就认为没问题”的情况。
希望通过课程学习单元测试、集成测试等方法,建立更加完整的质量意识。
5. 团队协作
希望通过课程项目真正体验一次多人协作的软件开发流程。
四、AI 生成的软件工程学习指南
为了了解 AI 能否帮助自己制定学习计划,我使用 DeepSeek 生成了一份软件工程课程学习指南。
AI 给出的核心学习路线可以概括为:
软件工程基础
↓
软件生命周期
↓
需求分析
↓
软件设计
↓
编码规范
↓
软件测试
↓
项目管理
↓
团队协作
↓
项目实践
同时建议结合:
- Git;
- JUnit;
- Docker;
- Postman;
- UML;
- 设计模式;
- 软件测试;
- 敏捷开发;
等工具和方法进行学习。
我认为这份学习指南总体上是合理的。
合理之处
第一,知识体系比较完整
它没有把软件工程简单理解成“写代码”,而是覆盖了需求、设计、编码、测试、部署和维护。
这与我目前希望补足的能力比较吻合。
第二,理论和实践结合
AI 提到应该将学习到的理论知识应用到项目中。
这一点对我尤其重要。
因为我过去比较习惯“遇到什么学什么”,容易形成零散的技术知识。
软件工程课程恰好可以帮助我把这些知识串起来。
第三,强调工程质量
例如代码规范、测试、Git、Code Review 等内容,都是我之前容易忽略的部分。
虽然 AI 给出的学习路线比较完整,但它仍然存在一个比较明显的问题:
太“正确”,但不够“具体”。
例如:
学习软件测试。
这句话本身没有问题,但真正执行时还需要进一步回答:
- 学什么测试?
- 使用什么工具?
- 测试哪个项目?
- 写多少测试?
- 如何判断自己已经掌握?
因此,我认为 AI 更适合作为:
学习路线的第一版设计者
而不是最终的学习计划制定者。
最终仍然需要结合课程进度、自己的基础以及实际项目进行调整。
五、我对软件工程的一个新认识
完成这次作业之后,我对“软件工程”最大的认识变化是:
软件工程不是教我们如何写更多代码,而是教我们如何把软件做得更可靠、更容易维护、更适合协作。
以前我可能更关注:
“这个功能实现了吗?”
现在开始慢慢关注:
“这个功能为什么这样设计?”
进一步还应该考虑:
“如果需求改变怎么办?”
“如果用户量增加怎么办?”
“如果队友接手怎么办?”
“如果代码出现问题,怎么定位?”
“如何证明这个软件是可靠的?”
这些问题,才真正让我开始从“程序设计”走向“软件工程”。
Always on the way:)
浙公网安备 33010602011771号