软件工程作业-随笔
技能树、技术偏好与自我评估
作为计科的大三生,这篇随笔想把"我目前现在会什么、不会什么、想学习什么"讲清楚,也算是对自己这两年多学习的一次盘点。
一、技能树梳理
1.1 已经具备的专业知识与能力
能力 A:编程语言基础
- C:用得最熟,指针、内存管理、结构体、文件操作都能写。课程设计和数据结构作业基本都用 C 或 C++ 完成。
- C++:掌握面向对象的基本写法,会 STL 里常用的容器(vector、map、queue 等),能写出结构比较清晰的类。
- Python:属于"能上手"的水平,读得懂别人的代码,能改能扩展。
能力 B:计算机基础知识
- 计算机组成原理:理解 CPU、存储层次、指令执行的大致过程,能看懂汇编里简单的代码;
- 计算机网络:TCP/IP 分层、三次握手四次挥手、HTTP 请求过程这部分能讲清楚;
- 数据结构与算法:链表、栈、队列、树、常见排序和查找都写过,能分析基本的时间复杂度;
- 操作系统:理解进程与线程、内存管理、文件系统的核心概念。
能力 C:基础工具与工程习惯
- Git 的基本命令,能完成本地提交;
- Linux 常用命令行,能在命令行环境下编译和运行程序;
- Markdown 写作。
1.2 感兴趣的技术方向
- 后端开发
- 大模型应用开发
- 计算机网络与运维
1.3 目前欠缺的能力
- 自主完成项目的能力:这是我最缺的一项。脱离教程和示例代码之后,需求不知道怎么拆,遇到报错也不知道从哪儿查起,只能凭感觉改。
- 工程化意识:几乎没写过单元测试,对代码规范没有概念;Git 只会 add 和 commit,没用过分支、PR、代码审查这些协作流程。
- 算法训练量不足:刷题很少,题目稍微复杂一点思路就容易卡住。
二、代码量统计与目标
- 截至目前的代码量:约2000行,主要来自课程作业、数据结构练习和本次实验,其中 C/C++ 占大头,Python 几百行 |
- 希望达到的代码量:本学期结束前 5000 行以上,其中至少 2000 行来自一个自己独立完成的完整项目
我不认为代码量本身能说明水平,两千行也可能全是复制粘贴。但我真实的问题是"没做过完整的东西",而代码量是这件事最直接的衡量方式:只有真的把需求、编码、调试、部署这条链路走完一遍,行数才会自然长上去。所以我给自己定的目标不是"多写",而是"写在一个完整的项目里"。
三、最期待学习的知识与期望的收获
最期待的四个方向
- 软件工程的完整流程。需求怎么分析、模块怎么划分、接口怎么定、测试怎么做、版本怎么维护,这些是我最缺也最想补的。
- 团队协作开发。Git 分支策略、任务拆解、代码审查,我想知道多人同时写一个项目时,是怎么不乱套的。
- 设计模式与后端框架。让代码从"能跑"变成"好改、别人看得懂",这是我目前和合格工程师之间最明显的差距。
- 调试与测试的方法。我想学会自己定位问题,而不是遇到 bug 就整段重写或者上网乱搜。
期望的收获
课程结束后,我希望自己能独立做出一个可以运行、可以演示、并且讲得清结构的小项目,而不是只会交一份能跑的作业。同时养成两个习惯:写文档、读文档。
另外我还想让 AI 工具在我这里的定位变一变。以前我把它当"作业代写",现在我更希望把它当成一个随时可以提问的伙伴——它帮我查资料、解释报错、review 代码,但方案和判断得由我自己做。
四、让 AI 生成一份软件工程课程学习指南
我使用的工具是 DeepSeek。我提的问题是:
我是一名计算机专业大三学生,学过 C/C++、Python 基础、计算机网络、计算机组成原理、数据结构等课程,代码量大约 2000 行,缺少独立完成项目的经验,未来打算毕业后直接就业做后端或大模型应用开发。请为我生成一份简要的软件工程课程学习指南,说明应该学什么、按什么顺序学、重点在哪里。
它给出的回答整理如下。
第一阶段:建立整体认知
先搞清楚软件工程到底管什么。重点理解软件生命周期(需求、设计、编码、测试、维护)和常见的过程模型(瀑布、敏捷、迭代),不必背概念,要能说清楚每个阶段产出什么。
第二阶段:需求与设计
学习需求分析的方法,练习写用户故事和用例;掌握结构化设计与面向对象设计的基本方法;理解模块化、高内聚低耦合、分层架构这些原则,并尝试用 UML 或简单的框图把设计画出来。
第三阶段:编码规范与版本控制
养成写规范代码的习惯,包括命名、注释和函数粒度;系统学习 Git,重点是分支模型、合并冲突处理、Pull Request 流程,最好用一个小项目实际演练一次多人协作。
第四阶段:测试与质量保证
学习单元测试、集成测试、系统测试的区别,动手写测试用例;了解边界值、等价类划分等基本测试方法;学习如何用日志和断点定位问题。
第五阶段:项目实践
选一个规模适中的题目,完整走一遍需求、设计、编码、测试、部署的流程。建议从命令行工具或 Web 小应用入手,避免一上来就做复杂系统。
第六阶段:工具与环境
熟悉版本控制、构建工具、包管理、代码检查工具;了解持续集成与持续部署的基本概念;学会阅读官方文档而不是只依赖教程。
第七阶段:团队与沟通
学习任务拆分与进度管理,了解敏捷开发中的站会、迭代、回顾;练习写清晰的技术文档和提交信息。
推荐的学习方式
以项目驱动为主,边做边学;每学一个概念就找一个小练习落地;用博客记录踩坑过程;遇到问题先看文档再搜索。
我对这份指南的分析
合理的地方
这份指南的结构是完整的,七个阶段基本覆盖了软件工程的主要内容,而且顺序安排得比较合理:先建立整体认知,再进需求设计,然后是编码规范、测试、项目实践,最后是工具和团队协作。它强调"项目驱动"和"看文档",这两点和我的实际短板是吻合的——我缺的正是把流程走一遍的经验,而不是再多背几个名词。它也提醒我测试是独立的一环,这一点我以前基本没重视过。所以我认为它对于我之后的学习是有一定程度的帮助的,至少明确了方向。
不够合理的地方
第一,它没有考虑时间问题。七个阶段如果每个都从零学一遍,一学期肯定学不完,指南里没有给出各阶段的权重和时间分配,照做容易变成"什么都学一点,什么都没学透"。
第二,它没有和课程的实际考核方式挂钩。我的学习时间要跟着课程作业和实验走,指南却像是给"有大把自由时间"的人写的,落地时容易冲突。
第三,内容偏抽象。像"掌握分层架构""了解持续集成"这种表述,没有说明学到什么程度算达标,也没有推荐具体的练习题目。
浙公网安备 33010602011771号