软件工程第一周作业

第一周作业:介绍自己、现状与计划

项目 内容
这个作业属于哪个课程 软件工程
这个作业要求在哪里 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) 为何要来上课并且认真参与?

我的判断基于三点自身观察:

  1. 专注力是可训练能力。玩游戏可保持数小时专注,上课二十分钟即走神。两者差异不在兴趣,而在训练积累:游戏场景提供即时反馈与连续刺激,课堂场景依赖自我维持。若持续选择前者,专注力会进一步退化;课堂是现阶段成本最低的训练场景。
  2. 长文本阅读与听课耐受度直接相关。软件工程的需求文档、设计文档均为长文本;当前短视频与碎片化内容已拉低自身长文耐受度,若不刻意训练,期末将集中暴露。
  3. 课程价值难以单门判定。课程体系由教学者基于整体设计设置,以单一学期、单一学生的视角判断"有用无用"缺少依据。

本课程我的安排:上课时手机置于视线之外,先完整跟完一节课;走神后拉回,不苛责;未听懂的内容当堂记录,课后当天处理。

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 分钟,再求助,求助只问思路,不取答案。
  • 作者读研后的调整可执行:看书时概括"作者在说什么",判断表述是否合理,勤于反思(引自该章)。
  • 结语第三条:不会的知识、懒于想通的东西,会在必要的时候提醒你、惩罚你;差距主因是自我控制力(引自该章)。对应行动:每天记录一个未懂点,一周内问清;完成后用自己的话复述。

五、结束语

本学期目标不是完成一门课程,而是完成一至两个可演示的产物,并确认自身适合计算机方向。执行方式:固定时间写代码、每周博客复盘、遇到问题即时提问。基础薄弱可弥补,停滞不前才是问题。

附:提交项与参考引用

posted @ 2026-09-05 14:26  FY_C  阅读(18)  评论(0)    收藏  举报