软件工程第一次作业

第一次作业

这个作业属于哪个课程 软件工程
这个作业要求在哪里 [https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15710]
这个作业的目标 熟悉博客与GitHub工具、反思自身现状、制定学习计划、阅读并提出问题

一、自我介绍

湖南人,现在是计算机科学与技术专业 24 级的一名学生。平时喜欢听歌,也喜欢运动——打篮球是我坚持最久的一项爱好。

我的闪光点:篮球

如果要说课本之外我最拿手、最自豪的本事,那应该是打篮球。高中三年我几乎一直泡在球场上,从高一只会"拿到球就乱投",慢慢练到能看懂跑位、会给队友做球,最后代表班级打进了年级班赛前八名。

很多人觉得"我能有什么闪光点",其实并不是。回想打球的经历,我能拿得出手的并不是天赋,而是愿意花时间反复练:别人午休,我在练投篮;别人放假,我在看比赛录像琢磨战术。前八名听起来不算什么,但对我这个从零开始、身高也不占优势的人来说,是用三年时间一点点换来的。

这件事给我的启发是:任何本事都是时间堆出来的,学编程也一样。 我现在的代码量只有约 1000 行,基础也一般,但我相信只要像打篮球那样坚持投入,一定会看到进步。

关于作业底线

老师说"上课交作业要有底线"。我的理解是:作业必须本人完成、不抄袭,参考资料要注明出处,按时提交。这篇博客就是我对自己的一次交代,我不会从网上整篇搬运别人的文章来交差。


二、现状、经验与计划

(一)专业选择与技能差距

1. 为什么选择计算机专业?

我是自愿选的计算机科学与技术专业。高中时觉得"会写代码很酷",屏幕上的黑框里敲几行字就能让程序跑起来,这种创造感很吸引我。当然,高考填报志愿时我前面的专业没有录上,最后录取到了计科。回头看,这个"被动中的主动选择"反而让我珍惜机会——既然来了,就想把它学好,为将来就业或考研打底。

2. 离合格的 IT 毕业生还差什么?

对照"合格"的要求,我很清楚自己的差距:

  • 专业基础薄弱:C 语言能写简单程序,但数据结构与算法基本等于空白(自评 2 分);
  • 工程习惯未建立:没有写文档、写注释、做单元测试的习惯,代码基本是"一次写完、能跑就行";
  • 调试能力差:遇到 bug 只会"瞪眼找错"或乱改,不会用调试器系统地定位;
  • 英语是硬伤:读英文技术文档吃力,而这恰恰是 IT 行业的基本功;
  • 项目经验为零:没有独立完成过一个完整项目,不知道一个软件从需求到发布要走哪些流程;
  • 表达与沟通欠缺:书面和口头表达都弱,写博客、做汇报都会露怯。

3. 技能自评(按课程技能调查表,0-9 分,5=能通过面试,9=世界一流)

技能 现在 目标 我为什么重视它
C 语言编程 3 6 专业课和考试的基础
数据结构与算法 2 7 考研专业课 + 面试的硬门槛
英语阅读/写作 2 7 读文档、读论文、考研英语都需要
调试排错 1 5 不会调试=不会写代码
资料检索与自学 3 6 互联网时代最重要的学习能力
书面表达(写文档/博客) 1 5 工程师要写文档、写总结
口头表达 2 5 汇报、答辩、团队沟通离不开

提高手段(≥5 项):

  1. 固定时间练代码:每周安排固定的编码时间,认真完成每次作业,并主动多写小练习,每次都带注释;
  2. 补数据结构/算法:每周在 B 站跟课补基础 + 刷 2-3 道 LeetCode 简单题,不懂的记下来问老师(对应"作业困难选 C");
  3. 刻意练调试:不用"乱改法",学习用断点/调试器定位 bug,并记录自己的 Bug 日志;
  4. 日读英文文档:每天花 20 分钟读英文技术教程/文档,不会的单词结合上下文猜,查证后记录;
  5. 写作输出:把每次作业、踩过的坑写成博客/文档,训练书面表达;
  6. 多开口请教与讨论:课上有问题当场问,课后向老师、助教、同学请教,参加小组互评代码;
  7. 向优秀同学学习:找一两个代码写得好的同学结对写作业,看他们怎么组织代码。

(二)读博客的心得

a) 我为何要来上课并且认真参与

很简单:我想要更好的就业,我想提升自己。 我是一个基础不太好的学生,如果连课都不认真上、作业都糊弄,那四年后拿什么去和别人竞争?读学长学姐的博客让我看到,认真跟完这门课的人收获的不只是分数,而是一套"从零把软件做出来"的完整体验。我不想四年后回头看,发现自己除了混了几个学分什么都没留下。

b) 师生关系与"作业太难怎么办"

我在大学里体验到的师生关系,大多是"老师讲、学生听、下课就散",课下和老师的交流很少。对于这门课,我希望老师能带着我们一步一步做——因为我是真的不懂,不是不想学。如果老师布置的作业对我来说有些困难,我的选择是 C:向老师和同学请教,花更多时间,把作业全部完成。

我选 C 不是因为这句口号好听,而是我知道自己差在哪里:我遇到难题的第一反应是"不敢问、怕丢脸",然后自己硬扛,扛不动就放弃。这门课我要改掉这个毛病——先自己想,想不通就问老师、问助教、问同学,问到懂为止。作业是用来暴露问题的,不是为了让我难堪的。

c) 引用文献与抄袭、剽窃的区别

在工作中,我们经常要引用别人的文献、参考别人的资料、在别人的工作基础上继续开发,这和抄袭、剽窃有本质区别:

  • 引用:明确标注作者、出处、发表时间,用引号或改写并注明来源,目的是"站在巨人肩膀上",成果是自己的增量贡献;
  • 抄袭/剽窃:不注明来源,把他人的文字、代码、观点原封不动(或仅做掩饰性修改)当成自己的成果提交。

区别的核心就两条:有没有诚实标注来源,以及有没有自己的贡献。对代码来说还要注意开源许可证(MIT/GPL/Apache 等)的要求,用了别人的代码要遵守其许可。我会在课上向老师确认本课程对引用、转载、代码复用的具体要求,并了解学校对学术不端(抄袭、剽窃、查重超标)的处理规定,守住底线。

(三)几年后的我:选择考研

前几天我在博客上看了不少学长学姐的经验。几年后大家各有各的路:做软件项目、考公、出国、回家继承家业……我的选择是考研读研。

这个选择下我的优势是:

  • 目标明确,知道自己要走哪条路,不会随大流;
  • 愿意承认基础差并从头补起(数据结构、英语都是考研要考的,学这门课就是给考研打基础)。

劣势也很明显:

  • 基础薄弱:数据结构、英语现在都是 2 分水平,考研要考的内容我几乎从零开始;
  • 起步晚、时间少:每周能用在课业上的时间不多,还要和考研复习抢时间;
  • 没有项目经历,简历单薄,就算初试过了,复试也没有能拿出手的东西。

本学期的规划(为考研与就业共同打基础):

  1. 把《构建之法》这门课完整跟下来,用课程项目攒出第一个"完整作品",解决"没有项目经历"的问题;
  2. 每周固定时间补数据结构与算法(这也是考研专业课),争取期末自评从 2 提到 5 以上;
  3. 每天 20 分钟英语(阅读技术文档 + 考研词汇),把英语从 2 往 7 的方向慢慢推;
  4. 坚持写博客/笔记,把输入变成输出,训练书面表达;
  5. 大三再定具体考研目标院校和专业方向,本学期重点是"把地基打牢,不欠新账"。

(四)这门课的计划

1. 课程期待与打算

参考网上能看到的一些教学安排(美国本科、国内软件工程课程、美国大学的软件专业),我对这门课最大的期待是:能像做真的项目一样学软件工程——有需求、有设计、有团队、有测试、有交付,而不是只背概念。我打算这样度过这门课:课前预习概念 → 课上认真跟 → 课后马上把作业和练习写完(不拖到截止前)→ 每周写一篇博客总结 → 多向老师和同学提问。

2. 代码量:现状与目标

  • 目前代码量:约 1000 行(C 语言 + Python 合计);
  • 关于"进一流公司要多少代码量":我理解这没有统一标准,一流公司校招更看重算法与基础、项目与工程能力;"代码量"只是粗指标,应届生通常要有数万行有效代码的积累和几个像样的项目才比较有底气(业界讨论中常见的说法,供参考);
  • 从事高校教学科研:除了大量工程代码积累,更看重理论深度与论文,代码量同样只是必要条件之一;
  • 本课程结束目标:累计 5000 行左右(距现在需新增约 4000 行,按 16 周算平均每周新增约 250-300 行)。

3. 每周时间投入

  • 我计划平均每周拿出 ** 2 小时左右**用在这门课上(含上课时间)——我知道这个数字偏少,是我目前能给出的真实承诺,我选了 C:比以前的课稍多一些
  • 我清楚"每周 2 小时"对这门课来说很可能不够,所以我在 WOOP 里把它列为头号风险,并制定了补救计划(见下):一旦发现跟不上,就上调时间,而不是下调目标。

4. WOOP 计划

Wish(愿望):课程结束时,我能独立从零完成一个完整的小项目(例如一个带界面的成绩管理/记账/学习工具类软件),代码量累计到 5000 行左右,并会为它写文档。

Outcome(最好的结果):到那时,我打开自己写的程序给别人演示,能讲清楚每个模块为什么这么做;数据结构跟上了课程进度,英语能流畅读技术文档;简历上第一次有了"作品"两个字;对考研也不再心虚,因为我知道自己把大学最基础的地基打牢了。

Obstacles(障碍)

  • 外部:每周真正能用的时间只有 5 小时左右;课程难度对我是"跳一跳才够得着";
  • 内部:①基础差,数据结构、英语都很弱,上课可能听不懂,听不懂就容易焦虑;②自律差,坚持不了几天就想歇;③刷手机,一刷短视频就停不下来;④不敢问问题,遇到难题不好意思开口,习惯性硬扛,扛不动就放弃。

最可能让我失败的单一因素时间投入不足 + 遇到卡点后放弃。具体来说就是:某周作业有点难,我花了时间却没做出来,于是产生"我果然不行"的想法,开始刷手机逃避,那一周就断了,然后就再也接不上了——断一次,整个计划就崩了。

Plan(if-then 应对计划)

  • 如果晚上又想刷手机、不想写代码,那么我把手机放到客厅充电,设一个 25 分钟番茄钟,先完成当天的代码任务再休息;
  • 如果一个 bug 或一道题卡了我超过一小时,那么我停止硬磕,把问题截图记到备忘录,先做会做的部分,然后在上课/答疑时间向老师或助教请教——绝不因为难就跳过不交(对应第 2(2)b 题我选的 C);
  • 如果周末早上起不来、计划落空,那么我前一晚把电脑和作业摆在书桌上,闹钟响后先写 20 分钟再吃早饭;
  • 如果上课听不懂、心里开始打退堂鼓,那么我当天就去 B 站补对应的基础课,并告诉自己:当初选这个专业是因为觉得它 cool,现在要把它学成真的 cool。

三、读《构建之法》:我的五个问题

问题 1(第 2 章 个人技术和流程,关于 PSP/个人软件过程)
书中介绍了 PSP(个人软件过程)的做法:像记录时间日志、缺陷日志那样,把个人开发的过程数据记录下来,用数据发现自己的薄弱环节。我的问题是:这种"记账式"的个人流程管理,真的能提升个人效率吗? 我查到网上一些讨论认为自我监控确实有改善作用("记录本身就会改变行为"),但我自己的经验是:坚持记录非常繁琐,很容易流于形式,最后变成"为了记录而记录"。而且我注意到很多有经验的工程师并没有严格做 PSP 全程记录。我的困惑是:PSP 的价值是被我低估了,还是它对学习者/职场人的适用场景其实很有限?如果它确实有效,坚持的最小可行做法是什么?

问题 2(第 4 章 两人合作,结对编程部分)
书中对结对编程评价很高,认为两个人一起写代码能提高质量、互相学习。我的问题是:结对编程在现实中为什么很难推行,它的成本(两个人做一个人就能做完的事)如何权衡? 网上的讨论两极分化:有人(包括一些大厂工程师)认为结对是浪费人力,有人认为是很好的知识传递方式。我的经验是:和同学一起写作业时,经常出现"一个人敲键盘、另一个人发呆"的情况,效率反而更低。我的困惑是:结对编程的效果是不是高度依赖两人的水平和配合方式?对刚入门、水平差不多的学生来说,结对到底是练什么?

问题 3(第 6 章 敏捷流程,关于"文档"的地位)
敏捷宣言强调"可工作的软件高于详尽的文档",书中也介绍了 Scrum 的短迭代、每日立会等做法。我的问题是:过度轻视文档,会不会给软件的长远维护埋雷? 我看到一些讨论指出,纯敏捷在需要长期维护、多人交接的大型项目里经常遇到"知识只存在少数人脑中"的问题,所以现实中很多团队其实是"敏捷 + 必要文档"的混合做法。我的经验是:我自己写过一个 200 行的小程序,两周后回头看就完全不记得当时为什么那么写了,更别说团队项目。我的困惑是:书中(以及敏捷运动)反对的到底是"文档"本身,还是"为了文档而文档"的形式主义?对课程团队项目来说,"够用"的文档底线在哪里?

问题 4(第 8 章 需求分析,NABCD 部分)
书中用 NABCD 等框架教我们分析需求,强调从用户/竞争者出发。我的问题是:"需求是分析出来的"这个前提,对"创造型产品"还成立吗? 比如 iPhone 出现之前,用户并不会说"我想要一台没有键盘的全触屏手机";很多改变世界的产品是"造出来之后用户才发现自己需要"。我查到创新理论(如克里斯坦森的《创新者的窘境》)也讲了不少"用户反馈会误导创新"的案例。我的困惑是:如果需求分析面对的是已有市场,那 NABCD 很有效;可当产品属于全新品类、没有可参照的竞争者时,"C(竞争分析)"该怎么填?书上对这类"从 0 到 1"的需求是怎么处理的,还是说它默认我们做的都是改进型产品?

问题 5(第 16 章 IT 行业的创新,可能为反对意见)
书中谈了很多"我们身边的创新",把许多小幅度的改进、用户体验的优化也算作创新。这一点我想提出不同看法:把"微创新"和"创新"混在一起,会不会稀释"创新"这个词,让公司满足于小步迭代、不做真正的突破? 我的理由是:生活里我见过太多"换了个界面就说自己创新"的产品,它们本质上没有创造新价值,只是把旧东西换皮。书中似乎更强调"创新无处不在、人人都能创新"的鼓励姿态,但现实中真正困难的恰恰是那种从 0 到 1 的突破式创新(如克里斯坦森所说的"颠覆式创新"),而这类创新的难度、风险和失败率,书中着墨似乎不多。我的困惑是:作者是刻意用"广义创新"来鼓励普通工程师,还是认为在软件行业"持续改进本身就是创新"?如果后者成立,评价一个团队是不是"创新团队"的标准又应该是什么?


四、前车之鉴:我读到的经验教训

老师要求从博客末尾的文章列表里选 2-3 篇来读

感想 1:https://www.cnblogs.com/geniusvczh/archive/2011/12/16/2290808.html

读完最大的感受是:要认真努力

感想 2:http://blog.csdn.net/haoel/article/details/1688104

这篇文章讲的是 认识自己认真读书认真学习

写在最后

这篇博客是我在这门课上的第一份作业,也是我给自己立的第一个"flag"。我知道自己基础差、时间少、毛病多,但我也知道:正是知道自己差,才更需要认真上这门课、把每一次作业做完。希望学期结束时回看这篇博客,我能说一句:"当时吹的牛,我做到了。"
image
image

我的github地址https://github.com/Curry-fff/ruanjian

posted @ 2026-09-04 10:13  00是我的数字  阅读(9)  评论(0)    收藏  举报