软件工程第一周作业

这个作业属于哪个课程 计科24级78班-软件工程
这个作业要求在哪里 第一周作业
这个作业的目标 熟悉博客园Markdown写作,学会使用Git、GitHub,创建个人代码仓库,完成第一次作业随笔

1. 介绍自己,建博客

我是广工计算机学院计科专业的一名学生,柯燕纯。我个人比较i,但我本人性格还是比较好相处的类型。我觉得我应该是没有什么突出的闪光点的。课余时间也没有什么兴趣爱好,就是喜欢吃美食,看看综艺吧。我喜欢在周末时,买一份自己喜欢的午饭,打开爱看的综艺,边看边吃。即使那个综艺我已经n刷过了,我也觉得这是很幸福的瞬间。

在终于研究明白了老师发布的作业博客之后,我才理解了老师说的“写博客花时间”。原来写博客是那么麻烦,我觉得这也是一种很新的尝试。怎么把博客写好,写得吸引人,也是一种新的挑战,也是在培养一项新的实用的技能。博客可以反映我的学习历程,看出我的成长,记录我的错误,方便我自我修正,也方便我与他人交流学习,互相借鉴。因此,我会拿出我百分百的力气来迎接这个挑战。

2. 现状、经验和计划

(1) 关于我是怎么选择了这个专业的,其实在还没高考时,我就想过,我高考后可能会选择考试范专业,去当一个物理或生物老师。但是高考后,我深入了解了目前的就业之后,我将选择投向了工科专业。综合考虑后,我选择了计算机专业,因为了解过后,我觉得这是一个完全看个人学习能力与个人努力程度的专业,我觉得非常适合我,而我也很喜欢工科。

离成为一个合格的 IT专业毕业生,在专业知识、技能、能力上,我确实还有很大一段距离。从这个技能调查表中,我抽取了7项我认为对我特别重要的技能
①你目前的水平 (用数字 0..9 表示水平, 5 表示能通过面试,9 表示世界一流); ②你想在课程结束后达到的水平 (数字 0..9 表示); ③你计划通过什么手段提高水平

特别重要的技能 目前水平 希望课程结束后达到的水平 提高手段
程序理解(阅读、分析、调试已有代码) 4 7 1. 课程作业多阅读示例与开源代码;2. 遇到 bug 自己先调试,记录 bug 复盘笔记;3. 模仿别人代码,分析代码逻辑;4. 和同学互相 review 代码;5. 利用搜索引擎分析报错堆栈信息;6. 定期复盘自己写过的旧代码
编程语言实现能力(C/Python/Java) 3 7 1. 保质保量完成每一次编程作业;2. 课后额外做小 demo 练习;3. 整理常用语法、代码片段笔记;4. 多看高质量开源项目源码;5. 每周安排固定编码练习时间
架构与模块化设计能力 3 6 1. 学习《构建之法》中软件设计相关章节;2. 做项目前先画简单模块划分;3. 借鉴成熟开源项目的分层思路;4. 小组作业中和同学讨论设计方案;5. 拒绝写一大坨没有拆分的长函数;6. 课后练习小系统的模块拆分练习
单元测试与测试覆盖率 2 5 1. 跟着课程练习写单元测试用例;2. 写功能同时思考边界条件;3. 学习测试工具基础用法;4. 做完功能主动做异常输入测试;5. 参考课程案例模仿测试代码;6. 在作业中强制给自己增加测试环节
个人软件过程(Git/GitHub 版本管理) 1 6 1. 完整学习 Git 常用命令;2. 所有课程作业托管到 GitHub;3. 练习规范 commit 提交信息;4. 学习分支管理;5. 尝试解决代码冲突
效能分析与代码优化 3 6 1. 学习简单性能分析思路;2. 对比不同写法运行效果;3. 复盘自己写的低效代码;4. 学习算法复杂度相关知识;5. 在作业中尝试做小范围优化
团队协作开发能力 3 5 1. 认真参与课程小组项目;2. 积极参加小组讨论,主动承担任务;3. 学习沟通表达,听取组员意见;4. 学习 Code Review 流程;5. 练习分工合作、任务拆解;6. 学会记录团队开发文档

(2) 阅读博客后的心得:

a) 你为何要来上课并且认真参与以及这个学生的思考读后有感:

  • 认真听讲是一种能力。能抵抗外界的干扰独善其身,静下心来做自己的事,这也是一种能力----聚精会神的能力。
  • “一堂课有用无用确实是大学生来判定的,我是老师上课的唯一对象,不是由学生来判定,还能由谁来判定?”
  • 我们要善于在学习的过程中多记录,“一定会有一些新的东西,这种东西可能是随着时间的推移对同一件事产生了新的看法,也可能甚至是从以前的自己中学到了一些什么。”
  • 多看看自己之前的记录,多听听他人的声音,多思考回顾

b) 师生关系读后有感:,你希望这门课是什么师生关系?
我在大学中体验到的师生关系:

  • Buddies / Buddies (哥们 / 哥们)
  • Baby-sitter / Babies (保姆 / 幼儿)
  • Stranger / Stranger (路人甲 / 路人乙)
  • Coach / Trainee (健身教练 / 健身学员)

我更希望这门课是Coach / Trainee (健身教练 / 健身学员)的师生关系。

如果老师布置的作业对你来说有些困难,我会选择:
C: 向老师和同学请教,花更多时间,把作业全部完成。

c) 在工作中,我们要引用文献,参考别人的资料,在别人工作的基础上继续开发, 这些活动和抄袭、剽窃的区别就是:是否清晰标明来源、尊重他人知识产权。
前者是合理引用,会注明原作者与出处,这是值得推崇的,在别人的基础上,我们可能可以站到更高的地方;而抄袭剽窃直接把别人成果当作自己的,不标注引用,侵占他人劳动成果。

(3)
几年之后我有很多发展方向可以选择,综合自身情况,我的目标是毕业后从事软件开发项目,进入企业。

我的优势:

  • 对待编程学习有兴趣,会主动学习一些编程知识,遇到问题愿意花时间查找资料、自主解决。
  • 能够按时完成课程作业,执行力较强,愿意跟着团队一起完成小组项目。
  • 对软件开发抱有兴趣,愿意主动学习新技术。

我的劣势:

  • 实战项目经验较少,独立开发完整项目的能力不足。
  • 代码阅读量偏少,对优秀开源项目了解不多。
  • 沟通协作经验欠缺,团队开发的流程还不够熟悉。

本学期规划:

  • 认真学好软件工程等专业课程,按时完成每一次作业,坚持写博客复盘学习收获。
  • 多加练习代码,熟练掌握 Git、GitHub 等开发工具,养成规范写代码的习惯。
  • 在小组作业中主动承担任务,锻炼团队沟通与协作能力。
  • 课余时间阅读开源代码,尝试做小型实战项目,积累项目经验,补齐实践短板。

(4) 这门课的计划:
我目前的代码量:C语言-1500行左右;Java-500行左右

为了有资格入职一流的软件公司 / 互联网 / 人工智能公司,一般需要10000‑20000 行高质量实践代码;高校教学科研不以大量代码为目标,侧重理论与学术成果,实验代码几千行。

我打算平均每周拿出12个小时用在这门课上(时间包括上课时间)。

WOOP

  • Wish/确定愿望:认真学好软件工程课程,坚持博客记录复盘,高质量完成编程任务,积极参与团队项目,夯实软件开发实践能力

  • Outcome/确定结果:愿望达成后,我能够独立完成中小型软件项目开发,熟练使用 Git 进行版本管理,拥有一份可以展示给面试官的项目作品;面对开发任务不再畏惧,编程动手能力大幅提升,为今后求职互联网企业打下坚实基础。

  • Obstacles/找出障碍

    • 内部:
      • 不够踏实,容易放弃(可能在看到困难后,我首先想到的不是战胜它,而是逃避,默默说“算了吧,太难了”)
      • 太浮躁,很难专注(在学习的时候总是注意力容易被其他东西、事情吸引,浪费时间)
    • 外部:
      • 时间不够(其他科目作业繁重,挤压软件工程编码练习的时间)
      • 团队缺少磨合(小组项目沟通协调耗时,效率低)。
    • 最可能的失败因素:不能长期自律
  • Plan/使用“if then”做风险防范计划**:

    1. 如果我在程序没有写完的时候开小差上网冲浪,那么我就站起来离开电脑和手机,到外面走一圈,再回来继续写作业。
    2. 如果连续两天没有完成编码任务,那么立刻开启每日打卡,设置闹钟提醒,每天至少挤出 30 分钟编码,不让计划彻底中断。
    3. 如果当天没有完成任务,那么第二天编程任务double,以此类推。
    4. 如果本周任务太多,那么将编码任务拆成小块分散完成,绝不全部堆到截止日前熬夜赶工。

3. 提有质量的问题, 给认真的反馈

  1. 第1章 P17:
    通过一定的软件流程,在预计的时间内发布 “足够好” 的软件。”
    我有这个问题:工期不足、无法做完原定全部功能,我们该以什么标准取舍功能,打造出 “足够好” 的软件?我查了资料,敏捷 MVP 理念建议优先保留核心功能。
    根据我的实践,小组项目赶工时,大家常常很难决定删减哪些功能。我的困惑是 “足够好” 软件的功能取舍边界该怎样判定?

  2. 第2章 P27:
    100% 代码覆盖率并不等于 100% 的正确性,代码覆盖率对于 ‘应该写但是没有写的代码’ 无能为力。
    我有这个问题:单元测试查不出遗漏释放资源、漏掉异常处理这类缺陷,还有什么办法发现缺失逻辑?我查了资料,静态分析工具、代码复审可排查部分遗漏问题。
    单元测试全部通过,偶尔依旧出现资源泄漏漏洞。我的困惑是学生低成本检查遗漏逻辑有哪些可行方案?

  3. 第2章 P34:
    可以继续进行 ‘效能测试,分析,改进,再效能测试’ 的流程,逐渐提高程序的效能和我们的编程水平。
    短小的课程作业运行飞快,看不出耗时差异,该怎样开展这套效能分析流程?我查了资料,性能优化一般依靠剖析工具采集耗时数据。
    小程序运行瞬间结束,很难定位性能瓶颈。我的困惑是小程序是否还有必要做效能分析?

  4. 第3章 P53:

过早优化是一切罪恶的根源。一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化。
到底什么时候开展代码优化才不算过早优化?判断优化时机的标准是什么?我查了资料,很多观点建议功能完成、架构定型后再优化性能。
写代码时经常纠结当下优化会不会属于过早优化。我的困惑是有没有清晰标准判断优化时机是否合适?

  1. 第4章 P86:
    两人合作会经历萌芽、磨合、规范、创造阶段,并非所有合作都能抵达创造阶段。
    双人小组开发,在萌芽阶段可以提前做哪些事,减少磨合阶段的冲突?
    组队初期气氛友好,后期却经常爆发分歧。我的困惑是萌芽阶段哪些共识必须优先确定下来?

认真反馈:既然是健身/教练的关系, 那么健身学员就会经常提问“为何我的肥肉还在?为何我肌肉不长?为何要做这个练习?... ... ”; 为了改进教学,收集资料,老师在教学过程中会要求学生填写对课程的反馈, 你会怎么做?
答:C:有问题就问,至少一学期提三个问题, 认真按时填写反馈。

4. 前车之鉴

A.https://book.douban.com/subject/4006425/discussion/22803733/
(把每天把要做的事情分成ABCD四类:A-紧迫且重要;B-重要不紧迫;C-紧迫不重要;D-不重要不紧迫。你是否有类似的习惯?)

感想:辜新星大一沉迷社团活动,陷入盲目忙碌,成绩下滑之后,依靠ABCD 四象限时间管理方法这套时间分类方法重新规划自己的大学生活,平衡学习与学生工作,后续拿到奖学金与各类荣誉。反观我自己,我并没有稳定使用四象限的习惯。很多时候我都是会考虑事情的轻重缓急,但是我总是会先考虑比较简单的事情,而往往这些事情也是没有那么紧急的。因为我总是会有畏难心理。结果就是哪些重要紧急的事情越推越后,直到要到ddl了,才会开始兵荒马乱的开始处理。因此,这套时间分类方法对我来说是一个很好的启示。

除时间管理之外,他的经历还告诉我们:专业基础弱不用自卑,看书、亲手敲代码、向前辈请教,就可以缩小和同学之间的差距;职业选择不能跟风,要通过实习亲身体验岗位,找到属于自己的比较优势,选择 offer 优先看重兴趣与长期成长,而不是只看眼前薪资。骑车需要不断校正方向,大学生的成长也是如此,要持续审视、调整自己前进的路线。

B.https://book.douban.com/subject/4006425/discussion/22803961/
(你是否也觉得自己是科班,但没学懂计算机?)

感想:刘帅是计算机科班学生,专业课成绩优异,拿过奖学金,学过数据结构、操作系统、编译原理等全套课程,却坦言 “我是科班,却没学懂计算机”。本科阶段他习惯于机械听课、照着模板完成作业,缺少主动思考和动手实践;把数据结构当成数学课来学,忽视编程实现,知识停留在纸面,没有真正打通理论与实践。直到旁听朱仲涛老师的数据结构课,看到课堂上从零完整实现各类算法,他才意识到计算机学科重在动手、重在理解原理,而不是机械记忆课本概念。

看到这里我很有共鸣。我也时常有这种感受:课本的概念看得懂,作业也可以完成,课程分数也还可以。可是脱离例题、遇到真实项目或者面试问题,我觉得我绝对是答不上来的。很多课程我满足于听懂课堂内容、完成作业拿到分数,很少主动追问底层原理,也缺少自己拓展实践,只是唔囵吞枣。陷入 “看得明白,自己写就不会” 的困境,这正是刘帅所说的 “科班却没学懂计算机” 的状态。

考试分数、课程及格并不能代表什么。机械记忆、套用模板的学习方式短期可以应付考试,但长远如此,这只会成为一种限制,限制我们的能力,限制我们的思维,我们的发展。在计算机专业课程的学习中,我们应该带着“十万个为什么”的思维,多思考,多动手,多实践,多验证,把算法、理论、想法落地写成代码。

5. 要求

  1. 使用 Markdown 排版进行随笔的编写,默认编辑器改为 Markdown

屏幕截图 2026-09-05 133700

  1. 已在 GitHub 新建一个与自己 GitHub ID 一致的仓库,在仓库根目录的 README 下写下自己的介绍
    GitHub地址:https://github.com/YC2401/YC2401

屏幕截图 2026-09-05 200343

posted @ 2026-09-05 20:09  yc-1  阅读(11)  评论(0)    收藏  举报