回首过去
问题1:对软件工程概念理解模糊
- 现状:之前对软件工程的理解停留在"写代码"层面,缺乏系统性认知
- 反思:没有认识到软件工程是一个包含需求、设计、开发、测试、维护全生命周期的工程学科
- 改进:通过系统学习,明确了软件工程的核心是"工程化方法"而非单纯的编程技术
问题2:缺乏项目管理和团队协作经验
- 现状:以往学习多关注技术实现,忽视项目管理和团队协作
- 反思:软件工程强调团队合作,需要沟通、计划、风险管理等软技能
- 改进:制定学习计划时特别关注Scrum、看板等敏捷方法,以及挣值分析等项目管理工具
问题3:测试意识薄弱
- 现状:习惯"写完代码就完事",缺乏系统性的测试思维
- 反思:测试是保证软件质量的关键环节,需要从单元测试到系统测试的完整策略
- 改进:将测试驱动开发(TDD)和自动化测试纳入学习重点,目标达到70%以上代码覆盖率
立足当下
当前学习状态
- 理论学习:初步了解软件工程概念,逐步投入学习
- 实践能力:有一定的c++,java项目开发经验
- 工具掌握:有一定的Git协同能力,会用vscode,obsidian笔记软件,AI工具
本学期学习重点
- 需求工程实践:完成一个完整的"需求→设计→测试"微项目
- 敏捷开发体验:通过2次Scrum迭代,掌握看板管理和燃尽图使用
- 工程化建设:建立CI/CD流水线,实现自动化测试和代码评审
- 质量度量:学习SPI/CPI等项目管理指标,建立质量看板
当前挑战
- 时间管理:需要平衡理论学习与实践项目的时间分配
- 技术深度:在有限时间内既要掌握广度,又要保证关键技能的深度
- 实践机会:缺乏真实项目环境,需要通过模拟项目积累经验
展望未来
短期目标(本学期)
- 技能目标:掌握软件工程全流程,能够独立完成小型项目的需求分析到测试交付
- 能力目标:具备团队协作能力,能够使用敏捷方法进行项目管理
- 成果目标:产出完整的项目文档、测试报告和复盘总结
中期目标(毕业前)
- 技术栈:精通1门主语言+1门脚本语言,掌握现代开发工具链
- 工程能力:具备架构设计能力,能够进行技术选型和风险评估
长期目标(职业发展)
- 持续学习:关注行业趋势,如AI辅助开发、云原生、DevSecOps等新兴技术
思维导图和学习路线
思维导图结构
基于软件工程核心知识体系,构建了包含以下六大模块的思维导图:
学习资源(精选)
- 经典教材:Pressman、Somerville等权威著作
- 网络资源:IEEE、ThoughtWorks技术雷达等前沿资讯
- 实用工具:从需求分析到测试部署的完整工具链
方向与分支
- 软件过程与方法:瀑布、敏捷、统一过程等
- 需求工程:获取、细化、协商、规格说明等
- 设计与架构:数据设计、架构风格、设计模式等
- 质量与测试:测试策略、自动化测试等
- 项目与风险:计划估算、风险管理等
- 工程实践:版本控制、CI/CD、DevOps等
三阶标准
- 入门(4-6周):概念理解、基础建模
- 掌握(6-10周):项目实践、工程化
- 精通(10-16周):架构设计、质量体系
4个月学习路线
第1月:入门与建模
- 学习内容:需求工程、过程框架、UML基础
- 实践项目:完成1个"需求→设计→测试"微项目
- 交付成果:SRS文档、用例/活动/类图各1套
第2月:敏捷与测试
- 学习内容:Scrum方法、测试策略、TDD
- 实践项目:2次为期一周的迭代开发
- 交付成果:测试用例集、覆盖率报告、冒烟脚本
第3月:架构与工程化
- 学习内容:架构风格、重构、代码评审、CI/CD
- 实践项目:对比两种架构风格,撰写选型说明
- 交付成果:架构说明书、CI流水线、评审记录
第4月:度量与复盘
- 学习内容:挣值分析、风险管理、可观测性
- 实践项目:项目度量、风险清单、复盘总结
- 交付成果:度量看板、风险清单、学期博客
学习策略
- 理论与实践并重:每周安排理论学习与实践项目时间
- 迭代式学习:每月设置里程碑,及时调整学习计划
- 输出驱动:通过博客、分享等方式巩固学习成果
- 持续改进:建立学习反馈机制,不断优化学习方法
期望在本学期结束时,能够具备软件工程师的核心能力,为未来的职业发展打下坚实基础。