第一周作业

软件工程课程第一次作业随笔

表格
这个作业属于哪个课程 软件工程
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class56-Grade2024-CS/homework/15692
这个作业的目标 完成 GitHub、博客园账号搭建;梳理大三计算机科学与技术专业自身现状、能力短板,制定可落地学习与代码规划;学会高质量读书提问;研读前人 IT 成长案例吸取经验,建立工程化学习思维
本人:计算机科学与技术专业,大三学生

一、准备工作

GitHub 账号:已完成注册,完善昵称、头像等个人信息。新建和自己 GitHub ID 同名的仓库,仓库 README 撰写个人简单介绍,后续用来存放课程作业、代码、学习笔记。
博客园账号:注册个人技术博客,修改博客名称、头像,将编辑器切换为 Markdown;加入课程博客班级,熟悉随笔发布、截图上传、Markdown 排版。后续博客会作为课程作业输出与个人技术记录阵地。

二、介绍自己,建博客

我是计算机科学与技术专业大三学生。到大三,已经学完计算机组成原理、操作系统、计算机网络、数据结构等核心基础课,但动手工程实践偏少。
我的闪光点:我阅读理解、信息检索能力较强,遇到陌生技术问题愿意花时间查阅文档、看博客、找教程;做事情可以长期坚持,一旦确定目标可以持续投入;课余喜欢阅读技术类文章,乐于复盘自己踩过的坑。这份能力不是天生的,从大一开始,我坚持遇到问题先自己查资料而不是直接问别人,两年多不断练习,慢慢养成查阅资料、筛选有效信息的习惯。虽然编程项目经验不多,但我愿意花时间补齐实践短板。
写博客这件事确实会占用额外时间,但输出倒逼输入,把模糊的想法整理成文字,才能真正发现自己哪里没弄懂。博客不只是交作业的工具,更是自己的成长档案。即便有些知识点写得浅显,长期坚持下来,回看就能看到自己的进步。
课程学习要有底线:作业拒绝抄袭剽窃。代码、随笔、思考尽量做到独立完成;参考网络资料、别人代码时做好来源标注;完不成可以花更多时间或者求助,但不能直接复制粘贴冒充自己的成果。

三、现状、经验和计划

(1)专业选择、技能差距与提升手段
我选择计算机科学与技术专业,一方面对计算机底层原理、程序逻辑抱有兴趣;另一方面看好信息技术行业的发展,希望未来可以从事软件开发相关工作。
步入大三,理论课程基本上完,但距离合格 IT 毕业生还有明显差距:项目实战少、工程意识薄弱、代码规范差、不熟悉团队协作开发流程。
选取 7 项对我最重要的技能(0 完全不会,5 可以通过面试,9 世界一流)
表格
技能 目前水平 课程结束目标水平 提升手段
C/C++ 程序开发 4 6 1. 完成课程编程作业;2. 刷算法题,每周固定刷题量;3. 阅读开源小项目源码;4. 规范代码书写习惯;5. 主动复现课堂示例,独立调试排错
数据结构与算法 4 7 1. 坚持刷题,整理错题本;2. 理解算法背后原理而不是死记模板;3. 分析 LeetCode 题解对比不同思路;4. 做模拟面试训练;5. 定期复盘高频考点
Git/GitHub 工程使用 2 6 1. 把课程代码全部托管到 GitHub;2. 学习分支、提交、合并等常用操作;3. 阅读官方文档;4. 模仿优秀仓库 README 写法;5. 练习提交 PR、看懂简单开源项目
软件工程思想与流程 3 7 1. 完整读完《构建之法》;2. 每章输出随笔笔记;3. 学习需求分析、测试、版本管理流程;4. 结合课程项目体会团队开发;5. 对比真实互联网项目案例
程序调试排错能力 3 6 1. 遇到报错优先独立分析日志;2. 记录每一次 bug 原因与解决方案;3. 学习调试工具使用;4. 看别人排错案例;5. 写完代码主动做自测
技术文档写作 3 6 1. 博客持续输出 Markdown 随笔;2. 学习技术文档排版规范;3. 给自己写的代码写注释与说明文档;4. 参考优秀开源项目文档;5. 写完之后回看修改逻辑
团队协作开发 2 6 1. 认真对待课程小组项目;2. 练习分工沟通、任务拆解;3. 学习代码评审思维;4. 多和同学交流技术;5. 复盘小组合作出现的问题
阅读心得

a) 为什么要认真上这门课

大学是一生中难得可以全职学习的阶段。很多计算机学生大三理论学了一堆,但不会做项目、不懂工程实践。软件工程这门课补齐从 “会写代码片段” 到 “做软件产品” 的缺口。如果只是混学分,等到求职的时候会暴露大量短板。所以我愿意认真参与课程,抓住课堂、作业、项目机会补齐工程能力。

b) 师生关系与作业困难如何处理

我现在感受到的大学师生关系:老师讲课提供知识框架,更多学习任务要靠学生自学,课后交流时间有限。
我希望这门课是教练式师生关系:老师给出任务、指出问题方向,提供资源,学生主动思考提问,双向反馈。
如果作业对我来说比较难,我选择 C:向老师和同学请教,花更多时间,把作业全部完成。
困难的作业恰恰是 “必要困难”,是能力提升的机会,逃避只会缺口越来越大。

c) 引用参考和抄袭剽窃的区别

参考别人资料、借鉴思路、查阅文档是正常开发学习行为,但要分清边界:
合理引用:借鉴思路、学习方法,自己重新实现,注明资料来源,核心是自己有独立思考与改造。
抄袭剽窃:直接复制别人代码、文字,不加修改、不标注来源,冒充自己的原创成果,属于学术不端。
学校对于抄袭会有成绩作废等处理。本课程作业中,参考任何代码、博客、文章都要尽可能标注来源,绝不直接复制充当自己作业。
几年后的发展选择,优势劣势,本学期规划
我的选择:毕业后希望直接就业,从事后端软件开发岗位。
对比其他同学:
优势:已经修完大部分计算机专业基础课,底层知识有一定储备;愿意花时间补实践短板;检索学习能力尚可。
劣势:实战项目数量少,工程经验不足;缺少完整项目开发经历;代码量积累不够;对工程流程、测试、版本控制接触不多。
本学期规划:
读完《构建之法》,完成课程全部随笔、作业;
主动增加代码实践,做小型项目练习;
熟练掌握 Git、GitHub 工具链;
坚持写博客复盘学习过程;
同时兼顾算法刷题,为求职做准备。
本课程计划、代码量、时间投入、WOOP
对课程期待:希望课程不只讲理论,更多结合真实项目案例,体会软件完整开发流程,学会团队协作、版本管理、测试。我打算认真听课,按时完成每一次作业,积极思考提问,愿意尝试助教相关工作。
当前代码量:C/C++ 约 2300 行,Python 约 1100 行。
一流互联网软件公司入职:通常需要上万行有效实践代码;高校科研教学方向除代码实践外,更看重理论研究、论文能力,代码重在实验与原型实现。
课程结束目标代码量:累计新增 4500 行有效代码。
每周需要完成:350 行左右新增有效代码。
每周投入本课程时间(含上课):11 小时。
之前两年存在时间浪费、实践投入不足,现在要追赶,选择 D:比以前课要多很多,直到达到目标为止。

WOOP

Wish 愿望:课程结束,掌握软件工程基本流程,熟练 Git/GitHub,完成 4500 行新增代码,建立工程思维,课程作业高质量完成。
Outcome 结果:能够独立完成小型软件项目开发,看得懂简单开源项目,博客有一系列完整学习记录,为秋招项目经历打下基础。
Obstacles 障碍
内部障碍:容易拖延,写代码遇到难 bug 容易心态摆烂;多门课程挤压时间,容易把软件工程作业往后拖;有时候追求看懂而不动手敲代码。
外部障碍:其他专业课、刷题任务挤占时间;遇到问题缺少快速可参考的案例。
最可能失败因素:遇到难题产生畏难情绪,拖延,完不成每周代码任务。
Plan(If‑Then)风险预案
如果出现拖延不想写代码,那么就强制先写 20 行代码,不追求完整功能,先启动任务;
如果被其他课程挤占时间,就用任务优先级划分,保证本课程每周最低学习时长不低于 7 小时;
如果遇到 bug 长时间调不通,先记录问题,限定自己独立调试 40 分钟,40 分钟仍无进展就整理问题向同学、老师求助,不无限死磕也不直接放弃;
如果只是看书看懂但是不动手,那么看完一小节立刻动手敲示例代码。
课程反馈选择:D:经常提问题,平时就经常给老师和助教提反馈。教学是双向的,有困惑、有建议就及时反馈。
四、提有质量的问题(阅读《构建之法》5 个问题,标注章节)
参考《构建之法》第三版

问题 1 第 1 章 概论,什么是软件工程

书中观点:软件工程是把软件作为工业产品看待,不只关心代码,还要关注成本、时间、质量、用户需求。
我的问题:很多学生课程作业只追求功能跑通,忽略成本、维护、用户体验。学生课程项目规模很小,是否有必要在课程作业阶段就完整套用工业软件工程全套流程?
我的困惑:工业项目需要完整需求、设计、测试、版本管理,但课程作业体量很小,全部照搬会消耗大量时间。那学生练习时,哪些工程环节是必须做,哪些可以适当简化?

问题 2 第 4 章 软件工程师的成长,技能与经验

书中提到工程师要从 “做出来” 进化到 “做得好”,通过大量实践与复盘成长。
我的问题:对于大三学生,刷题、做课程项目、看开源项目,三者如何分配比例,才能最高效提升工程师能力?
我的困惑:刷题可以提升算法,做项目锻炼工程能力,读开源项目学习别人的写法,但时间有限,我不清楚三者之间合理的权重。

问题 3 第 7 章 软件工程中的团队和流程

书中介绍多种团队模式:明星团队、交响乐团、爵士乐团队等。
我的问题:课程小组作业大多是学生临时组队,成员技术水平差距很大,现实中很难达到书中理想团队模式。这种情况下学生小组应该优先选择哪种团队模式?
我的困惑:现实学生小组经常出现有人做很多、有人划水,书上的团队模型看起来很美好,但落地到学生项目要怎么调整?

问题 4 第 11 章 软件测试

书中说测试不是找 bug 这么简单,包含单元测试、回归测试等多种类型。
我的问题:学生写小型课程项目,代码量不大,是否也需要写单元测试?很多同学写完直接手动运行一遍就算测试。
我的困惑:小型项目手动点点好像也够用,写单元测试会增加工作量,学生项目中测试的边界在哪里?

问题 5 第 16 章 创新

书中区分了创新、改良、模仿,提到很多项目是在现有基础上改良。
我的问题:学生做课程大作业,大多是模仿现有系统做简化版本,如何区分 “合理模仿改良” 和 “抄袭”?
我的困惑:学生参考网上项目思路实现自己的版本,改动到什么程度才算自己的创新,而不是抄袭?

五、前车之鉴(阅读 2‑3 篇参考文章写感想)

阅读文章 1:https://book.douban.com/subject/4006425/discussion/22803733/
文章主题:把事情分为 ABCD 四类:A 紧迫重要,B 重要不紧迫,C 紧迫不重要,D 不重要不紧迫。
感想:我之前做事经常优先处理 A 类紧迫重要的事情,但是忽略 B 类重要但不紧迫的事,例如写博客、练习代码、阅读专业书籍。软件工程学习、代码积累属于典型 B 类任务,短期内不做不会立刻挂科,但长期决定专业实力。很多大三同学的困境就是长期忽略 B 类任务,等到求职临近才慌忙补救。我打算把 ABCD 分类方法用在自己的学习计划,保证 B 类任务每周占有固定时间,不要只被截止日期推着走。
阅读文章 2:https://book.douban.com/subject/4006425/discussion/22803961/
文章主题:科班出身,但感觉自己没学懂计算机。
感想:作为大三计算机科班学生,我也经常有这种感受:考试可以及格,课本知识点好像都看过,但真正动手做项目就无从下手。文章里说到课堂学习偏向理论,缺少工程实践,这和我的现状高度吻合。科班不等于能力强,学历专业只是基础,真正拉开差距的是课外实践、代码量、独立解决问题的训练。不能因为自己是科班就产生优越感,要主动补齐实践短板,不能只停留在看懂课本。
阅读文章 3:https://www.cnblogs.com/xiaozhi_5638/p/4485805.html
文章主题:偏科生自学摸索的道路,实习对应届生的意义。
感想:文章让我意识到实习、项目经验对于应届生非常关键。大三正是积累项目经验的窗口期。不一定马上出去实习,但课程项目、个人小项目都可以当作自己的作品集。就算基础不如别人,持续实践也可以弥补差距。我也要重视每一次课程项目,认真对待,把它变成自己简历上可以写的内容,而不是应付交差。

六、附加说明

博客后台 Markdown 编辑器截图、GitHub 同名仓库截图、GitHub 仓库地址已经插入博客随笔中。
全文使用 Markdown 排版,遵守中文文案排版规范。

posted @ 2026-09-06 17:30  依木拉木  阅读(5)  评论(0)    收藏  举报