随笔

进入大三,专业课学习逐渐从 “编程实现” 向 “软件工程方法论” 深入。在此之前,我的学习更多集中在代码编写与技术框架的应用上,对完整的软件研发流程、标准化的工程方法缺乏系统认知。借由本次软件工程课程的开端,我梳理了自身当前的技能树,明确了能力短板与成长目标,也借助 AI 工具梳理了课程学习路径,形成本篇随笔。
一、当前技能树梳理与自我评估

  1. 已具备的专业知识与能力
    能力 A:Java 后端业务开发能力
    熟练掌握 Java 核心语法与面向对象设计思想,能够基于 Spring Boot、Spring Cloud、MyBatis-Plus 等框架完成业务功能开发,具备从需求拆解、代码实现到接口联调的完整开发能力,能够遵循规范完成 CRUD 到复杂业务逻辑的落地。
    能力 B:分布式基础工程能力
    掌握 MySQL 数据库设计与基础优化、Redis 缓存的常见应用场景、Nacos 服务注册与配置管理、RabbitMQ 消息队列异步解耦,能够独立完成常见分布式场景的方案落地,解决基础的分布式一致性问题。
    能力 C:工程化与运维基础能力
    熟悉 Git 版本控制、Maven 项目管理、Docker 容器化部署,具备 Linux 环境下的项目部署与基础问题排查能力,能够遵循开发规范完成项目从本地开发到测试环境上线的基础流程。
    能力 D:AI 工程化实践能力
    具备大模型 API 对接经验,能够基于 DeepSeek 等大模型开发简单 AI Agent 应用,理解多轮对话管理、工具调用的基本逻辑,有探索大模型与业务场景结合的实践基础。
  2. 感兴趣的技术方向
    分布式系统架构:高并发场景下的系统设计、数据一致性方案、服务治理与性能优化
    AI 工程化落地:RAG 检索增强、Agent 框架设计、大模型与业务系统的深度结合
    云原生技术:Kubernetes 容器编排、微服务可观测性、云原生架构下的运维体系
  3. 仍欠缺的能力
    短板 A:底层原理深度不足
    对 JVM 调优、操作系统底层机制、计算机网络核心协议的理解停留在应用层,缺乏深入的原理拆解与调优实践,面对深层性能问题时排查能力有限。
    短板 B:算法与数据结构薄弱
    算法刷题量不足,对中等及以上难度的算法题掌握不扎实,缺少系统的算法训练,在笔试与复杂逻辑设计中容易受限。
    短板 C:大型架构设计经验缺失
    仅参与过中小规模项目的模块开发,缺乏从 0 到 1 的全链路架构设计经验,对高可用、高容灾的架构方案理解较浅,无法独立完成复杂系统的架构设计。
    短板 D:软件工程流程不规范
    对完整的软件需求分析、UML 建模、测试驱动开发、项目管理流程的掌握不系统,文档编写能力薄弱,缺乏标准化的软件工程实践。
    二、代码量现状与学期目标
    截至目前,个人累计有效代码量约 3 万行:其中课程作业与基础实验约 5000 行,个人项目(hmall 电商系统、AI 助手等)约 1.8 万行,实习业务开发约 7000 行。
    本学期软件工程课程结束后,希望累计有效代码量达到 5 万行。新增的 2 万行中,约 8000 行来自软件工程课程项目(含项目代码、单元测试、示例工程),约 7000 行来自实习业务迭代,约 5000 行来自算法练习、基础技术 demo 与技术复现。
    三、本课程最期待学习的知识与收获预期
    最期待学习的知识
    软件需求分析与建模方法,包括需求获取、需求规格说明书编写、UML 用例图 / 类图 / 时序图的规范绘制
    软件设计原则与设计模式的工程化应用,掌握 SOLID 原则与常用设计模式的真实业务落地场景
    软件测试与质量保障体系,包括单元测试、集成测试的设计方法,测试用例的规范编写
    软件项目管理与团队协作流程,了解敏捷开发模式,掌握团队项目的进度管理、风险管理与协作方法
    希望获得的收获
    建立完整的软件工程知识体系,掌握从需求分析、设计、开发、测试到部署的全流程标准化方法,弥补自身 “重代码、轻流程” 的短板
    通过课程项目提升团队协作与项目管理能力,体验真实的团队开发模式,提升沟通与协作能力
    养成规范的开发习惯,写出更具可维护性、可扩展性的代码,提升文档编写能力
    为后续的实习与校招打下方法论基础,能够以更专业的视角参与企业项目开发
    四、AI 生成软件工程课程学习指南及分析
    本次选用 DeepSeek 生成软件工程课程学习指南,一方面是自身有对接 DeepSeek API 的实践经验,对其输出质量较为认可;另一方面其对工科课程的理解更贴合国内高校教学大纲。
    DeepSeek 生成的《软件工程课程学习指南》
    plaintext

软件工程课程学习指南

一、课程核心目标

建立软件工程全流程思维,掌握从需求分析、设计、开发、测试到部署维护的标准化方法,具备团队协作完成中型软件项目的能力,形成规范的软件研发素养。

二、核心知识模块学习路径

1. 软件工程基础概念

  • 重点内容:软件生命周期、瀑布模型/敏捷开发等主流开发模型、软件工程七大原则
  • 学习方法:结合教材梳理知识框架,对比不同开发模型的适用场景与优缺点
  • 验收标准:能够独立分析不同项目场景适配的开发模型,说出选型理由

2. 需求分析与建模

  • 重点内容:需求获取方法、用例图、数据流图、需求规格说明书编写规范
  • 学习方法:以课程项目为载体,全程跟进需求调研到文档输出的完整流程
  • 验收标准:独立输出一份符合行业规范的软件需求规格说明书

3. 软件设计

  • 重点内容:面向对象设计原则(SOLID)、常用设计模式、UML类图/时序图、分层架构设计
  • 学习方法:结合代码案例理解设计模式,在项目中刻意应用设计原则优化代码
  • 验收标准:能够针对业务场景输出技术设计方案与对应UML图

4. 软件测试与质量保障

  • 重点内容:黑盒/白盒测试、单元测试、集成测试、测试用例设计、缺陷管理
  • 学习方法:为自己的项目模块编写单元测试,针对核心功能设计完整测试用例
  • 验收标准:能够为业务模块编写全覆盖的单元测试,设计覆盖核心场景的测试用例

5. 软件项目管理

  • 重点内容:项目计划制定、进度管理、风险管理、团队协作与沟通方法
  • 学习方法:在课程项目中轮换不同角色,使用项目管理工具跟进进度
  • 验收标准:能够输出完整项目计划书,有效管控项目进度与风险

三、实践落地建议

  1. 以课程项目为主线:全程将每个知识点落地到项目对应阶段,避免理论与实践脱节
  2. 模拟真实开发场景:采用敏捷开发模式,固定迭代周期,使用 Git 进行团队协作
  3. 文档与代码并重:重视需求文档、设计文档、测试文档的编写,养成文档先行的习惯
  4. 阶段复盘总结:每个项目阶段结束后进行复盘,总结问题与优化点

四、学习资源推荐

  • 书籍:《软件工程导论》(张海藩)、《代码整洁之道》、《设计模式:可复用面向对象软件的基础》
  • 工具:StarUML(UML建模)、JUnit(单元测试)、Git/Gitee(版本控制)、Teambition(项目管理)
    合理性与个人帮助分析
    合理性分析
    知识结构符合教学逻辑:指南按照软件生命周期的顺序展开,从基础概念到需求、设计、测试、管理,递进关系清晰,和国内高校软件工程课程的教学大纲匹配度高,学习节奏符合从入门到掌握的认知规律。
    理论与实践强绑定:每个知识模块都配套了具体的学习方法和可量化的验收标准,不是纯理论灌输,而是强调落地实践,符合工科课程 “做中学” 的学习规律。
    贴合课程考核要求:指南覆盖的需求文档、UML 建模、项目管理、团队项目等内容,基本对应课程的平时作业与期末项目考核,能够直接对标课程要求。
    对个人的帮助
    补齐知识体系短板:我之前的学习更偏向代码实现,对需求分析、文档编写、测试等环节重视不足,这份指南能够帮我系统梳理全流程知识,明确每个环节的学习标准,弥补软件工程流程上的能力缺口。
    指导课程项目实践:指南 “以项目为主线” 的学习建议,刚好可以对应本学期的软件工程课程项目,我可以直接用它来规划项目各阶段的任务,拆分每个成员的工作,提升项目完成质量。
    明确自我检验标准:每个模块的验收标准能够帮我避免知识点停留在 “看过、听过” 的层面,确保每个知识点都能落地应用,真正掌握对应能力。
    拓展学习方向:推荐的书籍和工具可以作为课程之外的深化方向,帮助我在课程基础上进一步提升工程素养。
    当然这份指南也有可以补充的地方:它没有结合具体技术栈(比如 Java 后端)做针对性的实践设计,也没有提到 CI/CD、代码规范等现代工程化内容,后续我会结合自身的技术方向,在学习中补充这部分内容。
    整体而言,本次梳理让我更清晰地认识了自身的能力边界,也明确了软件工程课程的学习方向。后续我会以课程项目为核心,将理论知识落地到实践中,在提升代码能力的同时,补齐软件工程全流程的能力短板,逐步向合格的软件工程师靠拢。
posted @ 2026-09-10 12:03  高一鹏  阅读(6)  评论(0)    收藏  举报