软件工程第一周作业
第一周作业:介绍自己、现状与计划
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 软件工程 |
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15710 |
| 这个作业的目标 | 建立技术博客并学会用 Markdown 排版;认清自己与合格 IT 学生的差距;为自己定一份贴着实际水准的学期计划,并用 WOOP 方法做风险防范;通过读《构建之法》和前人的经历,学会提问和独立思考 |
| 我的 GitHub 地址 | https://github.com/gitfirehappy |
一、介绍自己,建博客
我是广东工业大学计算机学院计算机科学与技术专业 2024 级的学生。这是我在博客园的第一篇博文,后续用它记录课程学习与踩坑过程。
写博客之前,我认为它费时间:从草稿到排版、配图、改错,一篇要一两个小时。后来我搭建了一个个人博客(Hexo),为调整主题样式,连续几个晚上修改布局与配色。这个过程中我发现,很多内容"以为会了,写出来才讲不清楚"。因此我认可写博客的首要价值是自我沉淀,而非阅读量。写作本身是整理思维的过程。
我的闪光点:
二、现状、经验和计划
(1)专业选择与差距
为什么选择计算机专业? 兴趣
与合格 IT 毕业生的差距:
- 基础不牢:C++ 语言
- 工具不熟:Git、命令行、调试器使用生疏,遇到问题依赖肉眼查找。
- 工程习惯缺失:缺乏规范编码习惯,稳定工作流
- 无实习经历
技能调查表(0-9 分;5 = 能通过面试,9 = 世界一流;目前水平按真实情况修改):
| 技能项 | ① 目前水平 | ② 目标水平 | ③ 提升手段 |
|---|---|---|---|
| C++ 语言编程 | 【2】 | 【5】 | 完成课程实验,每周补 2 道题,代码提交 GitHub |
| 数据结构与算法 | 【1】 | 【5】 | 按教程补课,配合刷题,疑问记录后向老师提问 |
| Git/GitHub 版本控制 | 【1】 | 【4】 | 每次练习走 git 提交,学习分支与 PR 流程 |
| 前端网页开发(HTML/CSS/JS) | 【3】 | 【6】 | 持续改造个人博客,将想法做成小 demo |
| 调试排错 | 【1】 | 【4】 | 学习断点调试,将排查过的 bug 写入笔记 |
| 英语阅读(技术文档) | 【2】 | 【5】 | 每日 20 分钟英文文档,生词查证后记录 |
| 写作与表达 | 【2】 | 【5】 | 每周一篇博客,练习清晰表达 |
(2)阅读博客的心得
a) 为何要来上课并且认真参与?
我的判断基于三点自身观察:
- 专注力是可训练能力。玩游戏可保持数小时专注,上课二十分钟即走神。两者差异不在兴趣,而在训练积累:游戏场景提供即时反馈与连续刺激,课堂场景依赖自我维持。若持续选择前者,专注力会进一步退化;课堂是现阶段成本最低的训练场景。
- 长文本阅读与听课耐受度直接相关。软件工程的需求文档、设计文档均为长文本;当前短视频与碎片化内容已拉低自身长文耐受度,若不刻意训练,期末将集中暴露。
- 课程价值难以单门判定。课程体系由教学者基于整体设计设置,以单一学期、单一学生的视角判断"有用无用"缺少依据。
本课程我的安排:上课时手机置于视线之外,先完整跟完一节课;走神后拉回,不苛责;未听懂的内容当堂记录,课后当天处理。
b) 师生关系与面对困难的作业
此前体验过的师生关系多为"老师布置、学生交差、下课即散"的路人模式。对这门课,我期望的关系是"健身教练/健身学员":教练不替代学员训练,但监督动作与进度并纠正错误。对应到教学,即老师引导、学生主动实践。
作业有难度时的选择:C:向老师和同学请教,花更多时间,把作业全部完成。 依据是:回避难题会形成惯性,第一次回避后会产生第二次,最终导致整门课程放弃。作业的作用是暴露薄弱点,难度高说明该处需要补充。
c) 引用文献与抄袭、剽窃的区别
- 引用/参考:在他人成果基础上产出增量,并诚实标注来源(作者、出处、链接),成果归属仍为本人。
- 抄袭/剽窃:不标注来源,直接使用他人文字、代码、观点,或仅做措辞调整后当作原创提交。
判定标准有两条:是否标注来源,是否有自身贡献。代码复用还需遵守开源许可证(MIT、GPL、Apache 等)要求。我会在课程开始后向老师确认引用、转载与代码复用的具体规范,并了解学校对学术不端的处理规定。
(3)对将来的准备
方向:游戏开发客户端/全栈:享受"提出想法并实现"的过程
- 优势:能长期投入单项工作;使用新工具的意愿强。
- 劣势:基础薄弱,代码量少,无大型与团队项目经验;高估自身能力、低估工作量。
本学期规划:跟进课程进度,按时完成作业;每周固定时间写代码;坚持博客输出;将某个想法实现为可演示的小项目;代码托管至 GitHub。
(4)本课程计划
课程期待:经历需求 → 设计 → 实现 → 测试 → 交付的完整流程,学习团队协作。打算:课前预习概念,课中认真跟进,课后当周完成作业,每周输出一篇博客总结,保持提问与反馈。
想当助教吗? 不想
代码量现状:C/C++ 1000行,C# 5000行
关于"一流公司所需代码量":无统一标准。一流软件/互联网/AI 公司校招普遍要求上万行乃至几万行有效代码积累与完整项目经验;高校教学科研更重理论深度与论文,代码量为必要条件之一。该指标用于明确自身与门槛的距离,而非相互比较。
每周时间投入:平均每周8小时(含上课时间),选择 C:比以前的课稍多一些。理由是:短期投入不具持续性,长期执行依赖固定时间;若进度落后,调整策略为增加时间,而非降低目标。
计划目标:课程结束新增代码约【2000–3000】行(约每周【150–250】行),完成一个可演示的小项目并编写文档。
WOOP 计划:
- Wish(愿望):课程结束时独立完成一个小项目(如个人博客增加暗色模式切换与移动端适配),代码托管 GitHub,编写清晰 README。
- Outcome(结果):能演示完成的项目并说明设计依据;熟练使用 Git 与 Markdown;简历出现首个作品;确认自身适合计算机方向。
- Obstacles(障碍):外部为多门课程叠加与娱乐时间挤占;内部为拖延、遇难题倾向抄 AI 或放弃、短视频延误、作息不规律。最可能失败的因素:某周作业卡住后产生能力质疑,转而逃避娱乐,该周中断;单次中断即可导致计划连锁失效。
- Plan(If-Then):
- 若晚间想刷手机而不写代码:手机放客厅充电,设置 25 分钟番茄钟,完成当日代码任务后再休息。
- 若问题或 bug 卡住超过一小时:停止硬试,记录问题,先完成其他子任务,在课间或答疑时间向老师、助教请教,不因难度跳过提交。
- 若周末早晨未能起床:前一晚将电脑置于书桌,闹钟响后先写 20 分钟再进食早餐。
- 若课程内容未听懂:当天补基础课程视频,并提醒自己选择该专业的原因。
- 若遇难题倾向直接使用 AI 代码:仅让 AI 讲解思路与报错,代码自行编写并验证;AI 定位为辅助而非代写。
三、提有质量的问题,给认真的反馈
学习反馈选择:D:经常提问题,平时主动向老师与助教反馈。 反馈用于同步教学进度与个人理解状态;提问与反馈越具体,个人问题越早得到解决。
以下为通读《构建之法》后提出的 5 个问题(含章节、原文引用与个人困惑):
问题 1(第 2 章 个人技术和流程,PSP 个人软件过程)
书中介绍 PSP:记录时间日志与缺陷日志,用数据识别薄弱环节并改进流程。问题:对代码量小、作业以小型练习为主的学生,PSP 式记录的投入产出比如何?
查证:自监控行为本身可改善执行(如时间记录提高自我约束),但持续记录成本高,易形式化;部分资深工程师并未严格全程记录。困惑:PSP 的价值被低估,还是对学习期小型开发过于正式?若有效,最小可行方案是什么(如每任务仅记录预计时间、实际时间、缺陷三项)?
问题 2(第 4 章 两人合作,4.5 代码复审核查表)
书中核查表含"修改的部分符合代码标准和风格么""有没有足够的注释"等条目(引自该书)。问题:风格、注释、未使用变量等条目现可由 linter 与 CI 自动拦截,是否仍应保留在人工复核清单?
经验:课程项目中格式问题多由工具拦截,人工意见集中在接口设计与边界条件。倾向:工具可判定的内容退出人工复核,避免时间消耗在低层次问题上。顾虑:清单精简后,新手可能失去检查框架。问题:核查表应面向人工重写(聚焦设计、边界、可维护性),还是保留完整版作为教学模板?
问题 3(第 7 章 需求分析,NABCD 模型)
书中以 NABCD(Need、Approach、Benefit、Competition、Delivery)组织需求分析,前提为存在真实用户与市场。问题:课程作业需求由老师给定、无真实用户,如何避免需求分析成为虚拟构建?
经验:为个人博客开发功能时存在真实需求(自用、同学查看),分析过程自然;面对虚拟需求时只能推测用户场景,产出偏虚。困惑:NABCD 强调的真实用户研究能否落地为个人真实小需求?是否应鼓励课程项目选择身边真实需求,而非为分析而分析?
问题 4(第 8 章 计划和估计)
书中指出估计应参考历史数据,并为变化预留缓冲。实际问题是缺乏历史数据,首轮估计依赖直觉(WOOP 中已承认)。问题:无历史数据且任务较新时,除记录实际值、积累经验外,是否有方法使估计值更接近实际?
设想:通过任务拆分提高估算精度——先估 4 小时任务,再估 2 天任务。困惑:拆分粒度何时可估算?拆分越细,计划成本越高,平衡点如何确定?
问题 5(第 16 章 IT 行业的创新,16.1.2 迷思之二)
书中引 Jim Gray 邮件:"The B-tree paper was rejected at first"(B 树论文最初被拒),用于说明审稿体系排斥创新(引自该书)。问题:以"后来成功的论文当初被拒"论证审稿体系不公,是否构成幸存者偏差?
查证:名单内均为最终发表且被证明重要的工作;同类被拒且未发表的论文不在名单内。自身经历:作业想法被否时判断为老师未理解,回看实为自身表达不清。困惑:创新与未完成在初期表现一致,学生课程项目中应如何区分"真创新"与"未完成而归因环境"?创新成立的判断标准是什么?
四、前车之鉴
按作业要求阅读《我是一只 IT 小小鸟》两章,记录如下。
1. 辜新星:《时刻调整方向 找到人生的蓝海》(链接)
- 骑单车喻:车轮印弯曲,是因为必须时刻调整方向才能前进。计划需要定期校准,不能一次定死。
- ABCD 分类(A 紧迫且重要、B 重要不紧迫、C 紧迫不重要、D 不重要不紧迫):每件事安排专属时间专注完成。我的问题:B 类(预习、补基础、写博客)投入不足,时间被 C 类事务占满。
- 追赶差距的方法:大部头书读完;代码一行行亲手敲并编译通过("看着书上的代码觉得容易懂时往往懒于动手");提前储备基础;主动联系前辈请教。
- 侯捷建议:踏踏实实打好基础,不要被新技术遮蔽视线(引自该章)。我当前倾向优先接触新工具,基础科目时间不足;本学期调整为基础科目按课程进度推进,工具类内容只做补充。
- 求职部分:目标明确、针对性准备、面试后复盘(回去想没答上的题)。对应课堂:主动提问与反馈,不把问题带过。
2. 刘帅:《在失望中寻找希望》(链接)
- 作者本科成绩前列,但自述"我是科班——却没学懂计算机":作业沿老师给的固定模式稍作变换,不主动思考。分数评价掩盖了掌握程度的判断。我当前的状态属于同类:课程能过,独立实现有困难。
- 两处教训:一是不懂随时可问老师同学,不必等到第二年;二是备考时"每看到一个题目,总是会先看答案",作者评价"短期内的确会取得很大的成果,但却贻害无穷"(引自该章)。
- 我刷题看答案、作业参考 AI 的做法与作者同构。本学期调整:先独立完成 30 分钟,再求助,求助只问思路,不取答案。
- 作者读研后的调整可执行:看书时概括"作者在说什么",判断表述是否合理,勤于反思(引自该章)。
- 结语第三条:不会的知识、懒于想通的东西,会在必要的时候提醒你、惩罚你;差距主因是自我控制力(引自该章)。对应行动:每天记录一个未懂点,一周内问清;完成后用自己的话复述。
五、结束语
本学期目标不是完成一门课程,而是完成一至两个可演示的产物,并确认自身适合计算机方向。执行方式:固定时间写代码、每周博客复盘、遇到问题即时提问。基础薄弱可弥补,停滞不前才是问题。
附:提交项与参考引用
-
我的 GitHub:https://github.com/gitfirehappy
![PixPin_2026-09-05_14-15-02]()
-
参考与引用:
- 邹欣:《构建之法:现代软件工程》,人民邮电出版社(本课程指定教材,问题 1–5 引文出处)。
- 《我是一只 IT 小小鸟》章节(作业页指定"前车之鉴"材料):
- 辜新星:《时刻调整方向 找到人生的蓝海》:https://book.douban.com/subject/4006425/discussion/22803733/
- 刘帅:《在失望中寻找希望》:https://book.douban.com/subject/4006425/discussion/22803961/


浙公网安备 33010602011771号