软件工程 · 开学随笔:技能树梳理、自我评估与学习期待
软件工程 · 开学随笔:技能树梳理、自我评估与学习期待
| 这个作业属于哪个课程 | 福州大学 2026-01 软件工程与软件工程实践 |
|---|---|
| 这个作业要求在哪里 | 作业要求链接 |
| 这个作业的目标 | ① 梳理自身技能树与技术偏好,完成"已具备 / 感兴趣 / 欠缺"三层面的自我评估;② 量化截至目前的代码量并设定学期末目标;③ 说明本课程最期待学习的知识与期望收获;④ 体验使用 AI 工具(DeepSeek)生成软件工程课程学习指南,并分析其合理性与可用性;⑤ 熟悉博客园 Markdown 随笔的编写与发布规范;⑥ 汇总此前任务①(HuggingFace API 调用)与任务②(GitHub 个人主页)的作业要求与完成情况 |
| 学号 | 102402150 |
本随笔涉及的三项作业任务
按老师布置的顺序,本次博客随笔需要覆盖以下三项任务。任务①、②此前已独立完成交付,此处收录其作业要求原文并汇报完成情况;任务③(技能树自评随笔)即本文正文部分。
| 任务 | 内容概要 | 状态 |
|---|---|---|
| ① | HuggingFace API 调用 · 用 flux-RealismLora 生成写实图并做前端交互 | ✅ 已完成(见 1.1) |
| ② | GitHub 个人主页搭建 | ✅ 已完成(见 1.2) |
| ③ | 本随笔:技能树梳理、自我评估、代码量、课程期待与 AI 学习指南分析 | 📝 本文 |
1.1 任务①:HuggingFace API 调用
作业要求(原文摘录):
在 HuggingFace 官网注册个人账号并获取 API,调用 Flux 模型生成一张最贴近真实世界的图像(模型:
XLabs-AI/flux-RealismLora)。要求在调用模型的代码基础上结合前端接口,实现交互生成。请在作业中展示 API 调用成功的记录以及前端页面最终生成图像的截图,并说明提示词设计思路和修改过程。请配合代码、截图与文字记录 API 调用的操作步骤,最后总结 API 调用时的体验和心得。
完成情况: 完整工程位于本地 E:\workbuddy\hf-flux-demo\(Flask 后端 + 原生前端交互页)。技术要点:HuggingFace Inference API 多 Provider(fal / Replicate / WaveSpeed)× 多策略自动降级共 9 组合,命中即成功;实测 HF 免费额度仅够 2~3 张 FLUX 图,后续调用返回 402,最终以免费可无限调用的 Gradio Space API 兜底完成。
- 前端交互页最终生成的写实图像(
outputs/final_web.png):

- API 调用成功的运行记录(前端页实时日志面板,
docs/page_logs.png):

- 提示词设计思路与修改过程(原文要求项):采用"五层结构"提示词 —— ①主体(一位皮肤有岁月痕迹的中国老人)→ ②光照(黄昏侧逆光)→ ③器材与成像(85mm / f/1.4 / 浅景深)→ ④微观材质细节(毛孔 / 发丝 / 织物纹理,LoRA 触发词)→ ⑤画质增强词。迭代中把初版过于泛化的描述改为具体可感的物理细节,才触发 LoRA 的写实质感;并固定 seed=42 做对比实验。
- 完整代码、分步操作记录(含踩坑:旧 serverless 端点下线 410、provider 标识拼写、免费额度 402)、更多过程截图与调用心得,见工程内《实验报告.md》,此处不再展开。
1.2 任务②:GitHub 个人主页搭建
作业要求(原文摘录):
在 GitHub 上完成个人主页建设,可从以下两种方案中任选其一:① 创建个人资料自述文件——新建一个名称与 GitHub ID 相同的仓库,在仓库根目录的 README 中撰写个人介绍,并将相关截图放入博客;② 借助 GitHub Pages 搭建个人主页,制作内容较为充实的展示页面。个人主页需包含:介绍自己(兴趣爱好、想与他人分享的经历,可使用照片);展示个人成果、技能及与专业相关的实践经历,并完成自我评估(已掌握哪些专业知识和能力、对哪些技术方向感兴趣、最希望学习哪些知识);对未来三年作出发展规划(考研 / 保研 / 就业 / 考公均可,说明目标及其理由)。
完成情况: 两种方案都做了,一套内容、两处呈现:
- 同名仓库 README 自述:https://github.com/zzq1419/zzq1419 —— 仓库根目录 README 含自我介绍、三项真实上线项目成果(附 SVG 预览图)、技能栈、自我评估与三年考研规划;
- GitHub Pages 展示页:https://zzq1419.github.io/zzq1419/ —— 内容更充实的单页站点(技能雷达、项目卡片、实践时间轴、三阶段规划),点击即开:

说明:任务③即本文正文(技能树梳理与自我评估等),任务①、②的完成内容本身就是任务③"自我评估"部分的事实依据。
2026 秋 · 数据科学与大数据技术专业 · 软件工程课程第一次作业
这篇随笔既是交给课程的作业,也是一次诚实的自我盘点——知道自己会什么、不会什么、想去哪里,比盲目刷进度重要得多。
一、我是谁
一名数据科学与大数据技术专业的本科在读生。相比"分析一份数据",我更享受"做一个能跑起来的东西"——过去一年我用业余时间独立完成了多个上线项目:HuggingFace 写实图生成交互页、盲打练习网站、结合实时天气的豆瓣电影推荐页、德州扑克模拟器、GitHub 个人主页,大部分部署在 GitHub Pages,点开即用。
写下这篇随笔时,我的学习状态可以概括为一句话:有工程直觉,缺工程方法。能独立把一个个小产品从想法做到上线,但对软件工程这门"如何系统化地做软件"的学问,还停留在野路子的层面。这门课对我而言,是把自己从"会写代码的人"校准为"懂工程的人"的机会。
二、技能树梳理与自我评估
A. 已具备的专业知识与能力
按熟练度从高到低,我把自己已有的能力分成六块:
| 能力 | 具体内容 | 证据 |
|---|---|---|
| A1. Python 数据处理与分析 | Pandas / NumPy 数据清洗、转换、聚合;Matplotlib / ECharts 可视化 | 完成豆瓣 Top250 全量数据清洗与分析(250 部电影 + 短评) |
| A2. 前端工程与产品化 | HTML / CSS / 原生 JS 独立开发;组件化、状态管理、响应式、无障碍适配 | TouchType Lab 盲打练习站(纯前端零依赖,可离线) |
| A3. AI 应用工程(新) | HuggingFace Inference API 调用、多 Provider 降级容错、Gradio Space 兜底、提示词工程 | flux-RealismLora 写实图生成交互页(Flask + 前端) |
| A4. 关系数据库与建模 | MySQL 建库建模、索引原理、事务与范式理解、查询优化 | 数据库课程设计 + 多个项目的数据落地 |
| A5. 数据采集与清洗 | Python 爬虫编写、应对基础反爬、脏数据处理、字段规范化 | 豆瓣 Top250 爬虫(含 cookie 管理与缺失补抓流程) |
| A6. 算法与数据结构基础 | 链表 / 树 / 图 / 排序手写实现;复杂度分析习惯 | 数据结构课程 + 平时练习 |
| A7. 工程协作工具链 | Git 全流程(分支 / 冲突 / 回滚)、Markdown 技术写作、GitHub Pages / 云部署 | 多个公开仓库 + 个人主页的完整迭代历史 |
另外,自学驱动能力算是我比较强的一项:上述项目大多不是课程要求,全是"自己想用就做",从需求定义到上线独立完成。
B. 感兴趣的技术方向
- Web 全栈开发——想把前端的手感延伸到后端,做出真正有用户体系、有数据存储的完整产品;
- AI / 机器学习(侧重应用层)——大模型应用(RAG、Agent)、AI 绘画等生成式应用落地,以及传统 ML 在数据任务上的应用;
- 数据工程与后端——ETL pipeline、分布式计算(Hadoop / Spark / Flink),这是本专业最有纵深、我也最向往的方向。
三个方向的交集,其实都指向同一个缺口:后端与系统性能力——而这也正是我对软件工程课期待很高的原因。
C. 欠缺与待补齐的能力(诚实版)
- 机器学习 / 深度学习理论基础薄弱:能用 scikit-learn、PyTorch 调通流程、能调用 HF 等平台的现成模型 API,但对模型背后的数学原理(梯度推导、损失函数设计、泛化理论)停留在"似懂非懂"。这是"会调 API、会调库、不懂原理"的典型状态。
- 后端工程能力不足:Spring Boot 刚入门、写过单机小服务,但对高并发、缓存、消息队列、分布式一致性等没有实践;写过的接口谈不上规范设计。
- 软件工程方法论空白:没有系统地学过需求分析、UML 建模、设计模式、测试驱动开发、CI/CD;没有参与过多人协作的代码库。当前代码基本是"一个人一把梭",工程化程度低。← 这门课要补的主缺口
- 数学功底在算法推导上的应用不够:高数 / 线代 / 概率论会做题,但把数学翻译成机器学习直觉的能力弱。
- 工程化代码习惯:能写出能跑的程序,但代码评审、重构、单元测试、规范文档这些"让代码活得更久"的习惯还没有内化。
小结(教师与助教关注的部分):我会的是"从数据到界面、从模型 API 到可用产品"的完整小产品闭环(Python + SQL + 前端 + Git + AI API 集成);我不会的是系统化的软件工程方法、扎实的后端能力和机器学习理论。前者的下一步是后者,方向是清楚的。
三、代码量现状与学期目标
现状(截至 2026 年 9 月初,按行统计)
我对本地主要产出做了逐行统计(不含第三方依赖与自动生成物):
| 项目 | 内容 | 约行数 |
|---|---|---|
| theme-switch | 天气电影推荐页 + 豆瓣爬虫 + 250 条电影数据集 | 5,300 |
| blackhole-overlay | 黑洞桌面特效(C# 覆层 + HTML 粒子页) | 2,300 |
| typing-practice | 盲打练习站(多模块 JS + CSS) | 2,000 |
| qq-value 系列 | QQ 账号估值工具页面 | 2,300 |
| hf-flux-demo | HF 写实图生成工程(Flask + 多策略客户端 + 前端) | ~600 |
| 其余(poker / 黑洞 / quicksort / 爬虫脚本 / 学习 demo 等) | — | 3,600 |
| 合计 | 含数据集约 | ~16,100 行 |
其中约 3,000 行是电影数据集(JSON)等数据文件,手写的有效代码约 1.3 万行,以 Python、JavaScript、HTML/CSS 为主,另有少量 C/C++/Java(课程实验)。
学期末目标
- 量化目标:有效代码量继续增长,目标达到 30,000 行以上;其中包含软件工程课程的小组项目贡献 5,000–8,000 行;
- 质化目标(我认为更重要):这 3 万行里,有相当一部分应当是结构良好、可测试、有文档、经得起别人 review 的代码,而不是把现有行数再堆一倍;
- 具体来说,希望学期末能用一门语言(Java 或 Python)按工程规范独立完成后端 + 前端 + 数据库的完整应用,并能讲清自己每个模块"为什么这么设计"。
一句话:现在能写 1.3 万行"自己看得懂"的代码,希望学期末能写 3 万行"别人也看得懂、能一起维护"的代码。
四、本课程最期待学习的知识与期望收获
最期待学习的知识
- 软件生命周期与过程模型:需求 → 设计 → 实现 → 测试 → 维护,各阶段到底在做什么、为什么不能跳步;
- 需求分析与 UML 建模:如何把一个模糊想法变成结构化需求,用用例图 / 类图 / 时序图把设计"画"清楚——这正好补我"想到就写、没有设计"的短板;
- 设计模式与架构思维:什么时候该用什么模式,怎么避免把代码写成一坨"可以运行但无法演进"的泥球;
- 团队协作与版本管理的最佳实践:多人同一代码库的分工、评审、合并策略——我从未有过这种体验;
- 测试与质量保障:单元测试、集成测试、如何让代码可测试。
期望获得的收获
- 最重要的收获:完整参与一次"规范流程的小组软件开发",体验从需求文档到交付的全过程,把"能跑"升级为"工程化";
- 学会在写代码前先想清楚设计,并用文档和图表表达设计;
- 了解行业里真实的开发协作方式(敏捷迭代、Code Review、CI/CD),缩短学校与职场的距离;
- 顺带把 Git 协作能力练到"能在团队里不添乱"的水平。
五、AI 生成的学习指南及分析
5.1 说明
根据作业要求,我选择 DeepSeek(DeepSeek-V4-Flash 对话模型)生成一份软件工程课程学习指南。以下指南为 AI 原样生成的输出,我随后附上自己的合理性分析。我在提示词中要求它:面向国内高校软件工程课程、结合课程考核与小组项目、给出可执行的分阶段建议。
5.2 指南正文(DeepSeek 生成,未修改)
软件工程课程学习指南(面向国内高校本科生)
一、课程定位
软件工程 ≠ 写代码。它是研究"如何用工程化方法组织软件生产"的学科:在预算、时间、人力约束下交付高质量软件。课程通常由理论 + UML 建模 + 小组项目 + 文档四部分构成。二、核心知识模块与优先级
- 软件过程模型(瀑布 / 迭代 / 敏捷)——理解各种模型的适用场景;
- 需求工程:需求获取、分析、规格说明(SRS 文档);
- 软件设计:UML 图(用例 / 类 / 时序 / 活动)、模块化、高内聚低耦合;
- 设计模式:创建型 / 结构型 / 行为型,重点掌握单例、工厂、观察者、策略、模板方法;
- 测试:单元测试、集成测试、系统测试;测试用例设计(等价类、边界值);
- 项目管理:进度估算、WBS 分解、风险管理、Git 协作;
- 软件质量与配置管理:Code Review、CI/CD、版本控制规范。
三、分阶段学习路线(参考 16 周)
- 第 1–4 周:吃透软件过程模型与需求工程。小组尽快确定项目选题,撰写需求规格说明(SRS),用用例图表达功能;
- 第 5–8 周:主攻 UML 设计。画出类图、时序图、状态图;开始编码前先冻结架构;同步学习设计模式并尝试在项目中应用 2–3 个;
- 第 9–12 周:进入编码与测试阶段。遵守"小步提交、频繁集成",为关键模块编写单元测试;组织一次小组 Code Review;
- 第 13–16 周:集成、系统测试与文档收尾。编写用户手册、测试报告,做项目演示与答辩准备。
四、课程考核高分策略
- 项目选题宁可小、要做完整:宁可做一个 5 人规模、需求明确、能稳定运行的系统,也不要画一个无法收尾的大饼;
- 文档与代码同步更新,严禁"先写代码后补文档";
- 答辩前准备"架构图 + 关键技术点 + 遇到的问题及解决",这是加分关键;
- 理论考试重点:名词解释类(过程模型、内聚耦合、设计模式)、场景分析题(给定需求画 UML)、简答题(为什么需要需求分析)。
五、推荐的辅助资源
- 教材:《软件工程:实践者的研究方法》(Pressman)
- 扩展阅读:《代码大全》《人月神话》(了解工程管理的经典思想)
- 在线:中国大学 MOOC《软件工程》(哈尔滨工业大学等)、Coursera Software Engineering
- 工具:Git + GitHub、draw.io / StarUML(建模)、JUnit / pytest(测试)
六、常见误区提醒
- "写代码快 = 工程能力强"——恰恰相反,工程能力体现在约束下的可持续交付;
- 小组项目沦为"各自写一块,最后拼装"——要提前约定接口与数据结构;
- 忽视测试——测试不是收尾工作,而是设计的一部分;
- 用 AI 代写文档——AI 可以辅助,但必须能解释自己文档里的每一句话。
5.3 合理性分析
总体判断:合理,且对"我"有针对性帮助,但约 30% 的内容需要结合自身情况裁剪。 逐条说明:
合理、可直接采用的部分(约 70%):
- "软件工程 ≠ 写代码"的定位准确。这恰恰戳中我的问题——我有产品化直觉,但都是靠个人经验堆出来的,缺少方法论支撑。指南把它定义为一门"组织软件生产"的学问,帮我校准了学习预期;
- 阶段路线与国内课程考核高度吻合。"第 1–4 周定需求、5–8 周 UML 设计、9–12 周编码测试、13–16 周文档答辩"的节奏,基本就是我校软件工程课的实际推进方式,可直接照做;
- 高分策略中的"文档与代码同步更新""答辩准备架构图 + 技术难点"很实在,是我这种第一次做小组项目的人容易踩的坑(先写代码后补文档确实是我的坏习惯);
- 误区提醒有价值:我此前多个项目全部是单兵作战,指南提醒的"小组各自写一块最后拼装"问题,正是我第一次团队协作最可能犯的错;
- 资源推荐克制且经典(Pressman 教材 + MOOC + StarUML/JUnit),没有堆砌不切实际的清单。
需要结合自身调整的部分(约 30%):
- 未针对"有前端项目经验的学生"做差异化。我已能独立完成前端全流程,指南里"每周推进"的编码节奏对我的边际收益有限——我需要把省下来的时间投向自己的短板(后端 + 测试),例如要求小组项目由我承担服务端与数据库设计,而不是平均用力;
- 团队协作的"软问题"着墨不足。真实小组项目里,最难的不是 UML,而是任务划分、接口约定、进度不同步、谁给谁 review。指南只提了一句"约定接口",我期望课程中能有更多关于协作分工的实操指导;
- 没有考虑个人的并行任务。我同时在准备考研,16 周路线对"全职学习软件工程"的同学合理,对我需要压缩到每周固定的若干时间块——指南应配套"时间盒(time-boxing)"策略,比如每周固定 8 小时小组项目时间;
- 资源以英文经典为主。《人月神话》《代码大全》对初学者翻译腔重、容易劝退,我会优先用国内教材 + MOOC 视频入门,英文经典作为扩展而非必读;
- 测试部分偏薄。指南推荐了 JUnit/pytest,但没有给出"如何让已有代码可测试"的方法(依赖注入、接口抽象)——这恰恰是我最缺的一环,会主动找补充材料。
结论:这份指南对我是否有帮助?
有,而且不小。 它的最大价值不在于告诉我"学什么"(这些课程大纲里都有),而在于给我一个可执行的项目推进节奏和考核应对策略,把我从"凭感觉做项目"拉进"按阶段交付"的轨道。同时,AI 生成内容(包括这份指南)的共性是结构漂亮但缺少个性化——它不知道我已有 1.3 万行前端与 AI 应用代码、不知道我同时在考研、不知道我小组里的角色还没定。所以正确的用法是:把指南当"地图"而不是"导游",地图负责框架,路线怎么走要结合自己的实际情况。这也算是我在 AI 时代学到的一课:AI 适合铺开知识的全景,而判断"哪条路适合我",最终还得靠自己的反思。
六、附:博客园 Markdown 编辑器设置与后台截图
作业要求使用 Markdown 编写并附后台编辑页截图。本文正文即用 Markdown 编写(本博文在发布时已切换为博客园 Markdown 编辑器,切换位置:博客园写随笔页面右上角/工具栏的编辑器模式切换,或 博客园管理后台 → 设置 → 随笔默认编辑器 选 Markdown)。
后台博文编辑页面截图如下(证明正文确为 Markdown 模式编辑):

写在最后
开学第一周的这篇随笔,我把它当成一个坐标原点:1.3 万行代码、七个能力项、三个短板、三项已完成的任务。学期末再回看这篇,希望坐标已经移动——向"3 万行、工程化、团队协作过"的方向移动。
如果你也在上软件工程课,或者对我的项目感兴趣,欢迎交流。
浙公网安备 33010602011771号