软件工程 · 开学随笔:技能树梳理、自我评估与学习期待

软件工程 · 开学随笔:技能树梳理、自我评估与学习期待

这个作业属于哪个课程 福州大学 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):

final_web

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

page_logs

  • 提示词设计思路与修改过程(原文要求项):采用"五层结构"提示词 —— ①主体(一位皮肤有岁月痕迹的中国老人)→ ②光照(黄昏侧逆光)→ ③器材与成像(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/ —— 内容更充实的单页站点(技能雷达、项目卡片、实践时间轴、三阶段规划),点击即开:

GitHub readme

说明:任务③即本文正文(技能树梳理与自我评估等),任务①、②的完成内容本身就是任务③"自我评估"部分的事实依据。


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. 感兴趣的技术方向

  1. Web 全栈开发——想把前端的手感延伸到后端,做出真正有用户体系、有数据存储的完整产品;
  2. AI / 机器学习(侧重应用层)——大模型应用(RAG、Agent)、AI 绘画等生成式应用落地,以及传统 ML 在数据任务上的应用;
  3. 数据工程与后端——ETL pipeline、分布式计算(Hadoop / Spark / Flink),这是本专业最有纵深、我也最向往的方向。

三个方向的交集,其实都指向同一个缺口:后端与系统性能力——而这也正是我对软件工程课期待很高的原因。

C. 欠缺与待补齐的能力(诚实版)

  1. 机器学习 / 深度学习理论基础薄弱:能用 scikit-learn、PyTorch 调通流程、能调用 HF 等平台的现成模型 API,但对模型背后的数学原理(梯度推导、损失函数设计、泛化理论)停留在"似懂非懂"。这是"会调 API、会调库、不懂原理"的典型状态。
  2. 后端工程能力不足:Spring Boot 刚入门、写过单机小服务,但对高并发、缓存、消息队列、分布式一致性等没有实践;写过的接口谈不上规范设计。
  3. 软件工程方法论空白:没有系统地学过需求分析、UML 建模、设计模式、测试驱动开发、CI/CD;没有参与过多人协作的代码库。当前代码基本是"一个人一把梭",工程化程度低。← 这门课要补的主缺口
  4. 数学功底在算法推导上的应用不够:高数 / 线代 / 概率论会做题,但把数学翻译成机器学习直觉的能力弱。
  5. 工程化代码习惯:能写出能跑的程序,但代码评审、重构、单元测试、规范文档这些"让代码活得更久"的习惯还没有内化。

小结(教师与助教关注的部分):我的是"从数据到界面、从模型 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 万行"别人也看得懂、能一起维护"的代码。


四、本课程最期待学习的知识与期望收获

最期待学习的知识

  1. 软件生命周期与过程模型:需求 → 设计 → 实现 → 测试 → 维护,各阶段到底在做什么、为什么不能跳步;
  2. 需求分析与 UML 建模:如何把一个模糊想法变成结构化需求,用用例图 / 类图 / 时序图把设计"画"清楚——这正好补我"想到就写、没有设计"的短板;
  3. 设计模式与架构思维:什么时候该用什么模式,怎么避免把代码写成一坨"可以运行但无法演进"的泥球;
  4. 团队协作与版本管理的最佳实践:多人同一代码库的分工、评审、合并策略——我从未有过这种体验;
  5. 测试与质量保障:单元测试、集成测试、如何让代码可测试。

期望获得的收获

  • 最重要的收获:完整参与一次"规范流程的小组软件开发",体验从需求文档到交付的全过程,把"能跑"升级为"工程化";
  • 学会在写代码前先想清楚设计,并用文档和图表表达设计
  • 了解行业里真实的开发协作方式(敏捷迭代、Code Review、CI/CD),缩短学校与职场的距离;
  • 顺带把 Git 协作能力练到"能在团队里不添乱"的水平。

五、AI 生成的学习指南及分析

5.1 说明

根据作业要求,我选择 DeepSeek(DeepSeek-V4-Flash 对话模型)生成一份软件工程课程学习指南。以下指南为 AI 原样生成的输出,我随后附上自己的合理性分析。我在提示词中要求它:面向国内高校软件工程课程、结合课程考核与小组项目、给出可执行的分阶段建议。

5.2 指南正文(DeepSeek 生成,未修改)

软件工程课程学习指南(面向国内高校本科生)

一、课程定位
软件工程 ≠ 写代码。它是研究"如何用工程化方法组织软件生产"的学科:在预算、时间、人力约束下交付高质量软件。课程通常由理论 + UML 建模 + 小组项目 + 文档四部分构成。

二、核心知识模块与优先级

  1. 软件过程模型(瀑布 / 迭代 / 敏捷)——理解各种模型的适用场景;
  2. 需求工程:需求获取、分析、规格说明(SRS 文档);
  3. 软件设计:UML 图(用例 / 类 / 时序 / 活动)、模块化、高内聚低耦合;
  4. 设计模式:创建型 / 结构型 / 行为型,重点掌握单例、工厂、观察者、策略、模板方法;
  5. 测试:单元测试、集成测试、系统测试;测试用例设计(等价类、边界值);
  6. 项目管理:进度估算、WBS 分解、风险管理、Git 协作;
  7. 软件质量与配置管理:Code Review、CI/CD、版本控制规范。

三、分阶段学习路线(参考 16 周)

  • 第 1–4 周:吃透软件过程模型与需求工程。小组尽快确定项目选题,撰写需求规格说明(SRS),用用例图表达功能;
  • 第 5–8 周:主攻 UML 设计。画出类图、时序图、状态图;开始编码前先冻结架构;同步学习设计模式并尝试在项目中应用 2–3 个;
  • 第 9–12 周:进入编码与测试阶段。遵守"小步提交、频繁集成",为关键模块编写单元测试;组织一次小组 Code Review;
  • 第 13–16 周:集成、系统测试与文档收尾。编写用户手册、测试报告,做项目演示与答辩准备。

四、课程考核高分策略

  1. 项目选题宁可小、要做完整:宁可做一个 5 人规模、需求明确、能稳定运行的系统,也不要画一个无法收尾的大饼;
  2. 文档与代码同步更新,严禁"先写代码后补文档";
  3. 答辩前准备"架构图 + 关键技术点 + 遇到的问题及解决",这是加分关键;
  4. 理论考试重点:名词解释类(过程模型、内聚耦合、设计模式)、场景分析题(给定需求画 UML)、简答题(为什么需要需求分析)。

五、推荐的辅助资源

  • 教材:《软件工程:实践者的研究方法》(Pressman)
  • 扩展阅读:《代码大全》《人月神话》(了解工程管理的经典思想)
  • 在线:中国大学 MOOC《软件工程》(哈尔滨工业大学等)、Coursera Software Engineering
  • 工具:Git + GitHub、draw.io / StarUML(建模)、JUnit / pytest(测试)

六、常见误区提醒

  1. "写代码快 = 工程能力强"——恰恰相反,工程能力体现在约束下的可持续交付;
  2. 小组项目沦为"各自写一块,最后拼装"——要提前约定接口与数据结构;
  3. 忽视测试——测试不是收尾工作,而是设计的一部分;
  4. 用 AI 代写文档——AI 可以辅助,但必须能解释自己文档里的每一句话。

5.3 合理性分析

总体判断:合理,且对"我"有针对性帮助,但约 30% 的内容需要结合自身情况裁剪。 逐条说明:

合理、可直接采用的部分(约 70%):

  1. "软件工程 ≠ 写代码"的定位准确。这恰恰戳中我的问题——我有产品化直觉,但都是靠个人经验堆出来的,缺少方法论支撑。指南把它定义为一门"组织软件生产"的学问,帮我校准了学习预期;
  2. 阶段路线与国内课程考核高度吻合。"第 1–4 周定需求、5–8 周 UML 设计、9–12 周编码测试、13–16 周文档答辩"的节奏,基本就是我校软件工程课的实际推进方式,可直接照做;
  3. 高分策略中的"文档与代码同步更新""答辩准备架构图 + 技术难点"很实在,是我这种第一次做小组项目的人容易踩的坑(先写代码后补文档确实是我的坏习惯);
  4. 误区提醒有价值:我此前多个项目全部是单兵作战,指南提醒的"小组各自写一块最后拼装"问题,正是我第一次团队协作最可能犯的错;
  5. 资源推荐克制且经典(Pressman 教材 + MOOC + StarUML/JUnit),没有堆砌不切实际的清单。

需要结合自身调整的部分(约 30%):

  1. 未针对"有前端项目经验的学生"做差异化。我已能独立完成前端全流程,指南里"每周推进"的编码节奏对我的边际收益有限——我需要把省下来的时间投向自己的短板(后端 + 测试),例如要求小组项目由我承担服务端与数据库设计,而不是平均用力;
  2. 团队协作的"软问题"着墨不足。真实小组项目里,最难的不是 UML,而是任务划分、接口约定、进度不同步、谁给谁 review。指南只提了一句"约定接口",我期望课程中能有更多关于协作分工的实操指导;
  3. 没有考虑个人的并行任务。我同时在准备考研,16 周路线对"全职学习软件工程"的同学合理,对我需要压缩到每周固定的若干时间块——指南应配套"时间盒(time-boxing)"策略,比如每周固定 8 小时小组项目时间;
  4. 资源以英文经典为主。《人月神话》《代码大全》对初学者翻译腔重、容易劝退,我会优先用国内教材 + MOOC 视频入门,英文经典作为扩展而非必读;
  5. 测试部分偏薄。指南推荐了 JUnit/pytest,但没有给出"如何让已有代码可测试"的方法(依赖注入、接口抽象)——这恰恰是我最缺的一环,会主动找补充材料。

结论:这份指南对我是否有帮助?

有,而且不小。 它的最大价值不在于告诉我"学什么"(这些课程大纲里都有),而在于给我一个可执行的项目推进节奏和考核应对策略,把我从"凭感觉做项目"拉进"按阶段交付"的轨道。同时,AI 生成内容(包括这份指南)的共性是结构漂亮但缺少个性化——它不知道我已有 1.3 万行前端与 AI 应用代码、不知道我同时在考研、不知道我小组里的角色还没定。所以正确的用法是:把指南当"地图"而不是"导游",地图负责框架,路线怎么走要结合自己的实际情况。这也算是我在 AI 时代学到的一课:AI 适合铺开知识的全景,而判断"哪条路适合我",最终还得靠自己的反思。


六、附:博客园 Markdown 编辑器设置与后台截图

作业要求使用 Markdown 编写并附后台编辑页截图。本文正文即用 Markdown 编写(本博文在发布时已切换为博客园 Markdown 编辑器,切换位置:博客园写随笔页面右上角/工具栏的编辑器模式切换,或 博客园管理后台 → 设置 → 随笔默认编辑器 选 Markdown)。

后台博文编辑页面截图如下(证明正文确为 Markdown 模式编辑):

博客园后台截图

写在最后

开学第一周的这篇随笔,我把它当成一个坐标原点:1.3 万行代码、七个能力项、三个短板、三项已完成的任务。学期末再回看这篇,希望坐标已经移动——向"3 万行、工程化、团队协作过"的方向移动。

如果你也在上软件工程课,或者对我的项目感兴趣,欢迎交流。

posted on 2026-09-04 22:47  Tables  阅读(28)  评论(0)    收藏  举报