第一周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class56-Grade2024-CS
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class56-Grade2024-CS/homework/15692
这个作业的目标 完成GitHub、博客园账号准备;完成个人现状梳理、技能评估、课程WOOP规划;

一、准备工作

请准备一个 GitHub 账号
GitHub仓库地址:https://github.com/zhenglebing/zhenglebing
image

请准备一个博客园账号
https://www.cnblogs.com/zhenglebing

二、正文

1. 介绍自己,建博客

我是广东工业大学计算机科学与技术专业大二学生。我主攻前端方向,已经掌握HTML、CSS、JavaScript基础,熟练使用Vue、React框架,具备有独立进行前端项目开发的能力,参与了学校工作室的培训和学习。

我平时的闪光点:我自学能力较强,遇到前端业务问题,能够自主查阅官方文档、技术博客定位并解决问题;平时喜欢拆解优秀网站的交互逻辑,复刻练习页面;同时我擅长整理笔记,会把踩坑经验记录留存。这份能力是我两年时间,不断做练手项目、啃官方文档、反复调试bug一点点锻炼出来的。除编程之外,我喜欢阅读技术文章,也喜欢跑步,跑步可以帮我缓解写代码调试不出bug带来的烦躁情绪,调整心态。

这次开通博客园,希望把这里作为自己软件工程课程的学习阵地,记录课程作业、项目复盘、踩坑记录。写博客是一件耗费时间的事情,但是输出倒逼输入,写完笔记之后,很多模糊的知识点会变得清晰,我会坚持更新博客。

建博客
image

2.现状、经验和计划

(1)专业选择、技能评估

我选择计算机专业,源于对软件产品的好奇,希望通过代码创造出可以给他人使用的软件产品。前期深耕前端,能够独立完成页面开发,但是后端开发、数据库建模、软件测试、团队工程化协作是我的短板,距离合格IT毕业生还有不小差距。

选取7项对我十分重要的技能做评估(0完全不会,5可以通过面试,9世界一流):

技能项 当前水平 课程结束目标 提升手段
Vue/React前端工程开发 6 7 课程项目中承担前端模块,学习组件设计模式,练习复杂状态管理;
Node.js后端接口开发 3 6 课程团队项目承担后端接口开发,学习鉴权、异常处理;
数据库设计与SQL 3 6 练习数据表设计、索引优化,完整实现增删改查业务;
单元测试与软件测试 2 6 学习pytest/Jest,给项目编写测试用例,练习边界测试;
Git团队协作、CodeReview 4 7 团队作业全部使用PR、issue管理任务,规范提交信息;
需求分析与软件架构设计 2 6 编码前输出需求文档、简易架构图,拒绝直接上手敲代码;
项目文档撰写与复盘 3 7 坚持写博客随笔,完整记录项目设计思路、踩坑总结。

提升手段小结:

  1. 在课程个人、结对、团队项目中主动承担不熟悉的后端、测试任务,在做中学;
  2. 学习对应技术官方文档,搭建小型demo验证知识点;
  3. 坚持写博客随笔,复盘每一次作业与项目;
  4. 积极参与代码评审,学习同学优秀代码思路;
  5. 遇到不懂的知识点主动查阅资料,向老师同学请教。

(2)课程学习心得

a) 我为什么认真参与这门课
软件工程和普通专业课不一样,它重在实践。只看书本理论无法真正掌握软件开发,这门课提供完整项目训练机会,可以补齐我工程实践短板,补齐只懂前端的短板,学会完整软件从需求到发布全流程,为之后求职做准备。

b) 师生关系与作业困难应对
大学我体验过照本宣科式授课,也体验过项目驱动、鼓励学生提问的授课模式。我认同健身教练与学员的师生关系:老师负责提供标准、方向、反馈;学生作为学员主动思考,主动抛出问题,主动完成训练。

如果老师布置作业对我来说比较困难,我选择C:向老师和同学请教,花更多时间,把作业全部完成。
遇到难题,我会先自己检索资料、拆解问题,整理好自己已经尝试过的方案,再向同学、老师求助,不会直接摆烂或者坐等答案。

c)引用参考资料和抄袭剽窃的区别
参考别人资料:阅读他人代码、文档、博客,理解思路,转化为自己的理解,引用位置标注来源,核心逻辑自己实现。
抄袭剽窃:直接复制他人作业、代码、文档,不加修改不标注来源,冒充为自己的成果。
学校对于抄袭行为会有严肃处理,课程作业中,参考资料需要标明出处,核心逻辑必须自己完成,AI生成代码需要读懂、重构,不能直接复制提交。

(3)未来发展选择与本学期规划

我的规划:本科毕业后直接就业,希望从事前端或者全栈开发岗位。
优势:前端基础扎实,学习新框架上手速度快;有较多页面开发练手经验;愿意主动接收新知识。
劣势:后端、测试、系统设计基础薄弱;缺少完整团队项目经验;处理大型复杂项目经验不足。

本学期规划:

  1. 认真完成每一次博客随笔作业,坚持复盘;
  2. 在团队项目中主动承担后端、测试相关任务,补齐短板;
  3. 熟练掌握Git协作流程,养成写文档的习惯;
  4. 多阅读技术博客,拓展软件工程相关知识。

(4)课程计划、代码量、时间投入

对课程期待:希望完整体验真实软件开发全流程:需求调研、架构设计、编码、测试、迭代复盘,学会团队协作开发,摆脱只会写页面的局限。暂时没有当助教的想法。

当前代码量统计:

  • HTML/CSS/JS/Vue/React:4500行
  • C语言:1200行

一流互联网公司应届生普遍需要累计30000‑50000行有效代码(课程项目、个人项目、实习);
走科研道路,则更加看重论文、实验成果,代码侧重算法、实验原型。

每周投入本课程总时长(含上课):15小时

  • 课堂:3h
  • 写博客、阅读材料:2h
  • 项目编码、测试、文档:10h

之前两年有部分时间浪费,现在想要追赶,选择 D:比以前课要多很多,直到达到目标为止。

课程结束目标新增代码量:12000行;平均每周需要完成约750行有效代码。

WOOP计划

Wish(愿望)
软件工程课程结束,具备完整工程实践能力,拥有多个完整可运行课程项目,熟练掌握团队协作,补齐后端、测试短板,产出带测试、文档的高质量代码。

Outcome(结果)
手里拥有个人、结对、团队完整项目,全部托管GitHub,配套完整博客复盘文档;写代码前会做需求与方案设计,不再直接上手敲代码;熟悉PR、CodeReview、单元测试,拥有求职可用的项目作品集。

Obstacles(障碍)
外部障碍:其他课程作业、考试挤压时间;团队项目队友进度不一致,任务被阻塞;调试复杂bug长时间卡死消耗精力。
内部障碍:拖延,任务堆积;遇到后端、测试等陌生模块产生畏难情绪;依赖AI生成代码,不去理解消化;只热衷于写业务代码,忽略文档、测试、博客复盘。

最可能失败因素:拖延,任务堆积,临近截止才仓促赶工,敷衍完成作业,缺少思考复盘。

克服:做好任务拆分,把博客、项目任务打散分配到每周,绝不堆积到截止日前。

Plan(if‑then预案)

  1. 如果多门课程作业扎堆,时间紧张:就保证每周最低保底350行有效代码,博客随笔按时完成,不直接摆烂放弃。
  2. 如果长时间调试bug没有进展心态烦躁:立刻停止盲目调试,拆分问题,写最小复现demo,整理问题后求助同学老师。
  3. 如果团队项目被队友进度阻塞:使用GitHub issue标记阻塞点,提前沟通明确任务时间节点。
  4. 如果直接复制大段AI生成代码:强制自己逐行读懂,重构代码,补充注释;无法讲清楚逻辑的代码禁止提交仓库。
  5. 如果想要拖延,把任务留到截止:立刻拆分小任务,先完成20分钟的最小工作量,启动之后再继续。

课程反馈选择:D:经常提问题,平时就经常给老师和助教提反馈,遇到课程内容、作业有想法就主动沟通。

3. 提有质量的问题, 给认真的反馈。快速有选择阅读《构建之法》提问

问题1

我看了第 2 章 2.1 单元测试,书中观点:单元测试需要开发者在写功能代码的时候同步完成,属于开发工作的一部分。
我的问题:在学生团队课程项目里,开发工期很紧,功能都还没做完,这时是否还值得投入大量时间写单元测试?
根据我的实践,小组做课程大作业的时候,大家优先实现业务功能,经常会把单元测试直接省略,觉得先把界面和功能跑通就完成任务。等到后期出现 bug,只能靠手动点点点做测试。
我的困惑:对于工期紧张的学生软件项目,单元测试有没有取舍的标准?哪些模块必须写单元测试,哪些模块可以暂时不写?

问题2

第8章8.3获取用户需求——用户调研。书中提到要去挖掘用户真实需求,区分用户表面诉求和真实诉求。
我的疑问:做课程项目的时候,我们缺少真实用户,没有办法做大规模用户调研,这种情况下,我们怎么获取靠谱的用户需求?
课程项目大多是模拟场景,没有真实用户反馈,很容易凭自己主观想象编造需求。我的困惑:学生课程项目如何避免自嗨式需求设计?

问题3

第12章12.2 用户体验设计的步骤和目标。书中强调软件要面向普通用户,关注用户真实使用体验。
我的疑问:面向开发者的工具类软件,用户本身就是懂技术的人群,是否可以放宽部分易用性要求,优先保证功能强大?
普通软件优先简单易用,但是开发者工具,用户愿意接受复杂配置换取能力,这和书中通用用户体验的准则是否冲突?

问题4

第13章13.3实战中的测试。书中讲述各种测试手段,强调充分测试才能交付软件。
我的问题:课程项目时间有限,人力有限,时间成本很高,如何平衡项目开发进度和测试工作量?
现实开发中不可能做到100%全覆盖测试,学生团队时间紧张,哪些测试是必须优先保证,哪些可以适当舍弃?

问题5

第16章16.1创新的迷思。书中说创新不是凭空造轮子,很多创新是在现有基础上改进。
我的疑问:对于学生开发者,我们做课程项目,到底应该优先学习复用成熟开源组件,还是强制自己从零手写底层来锻炼能力?
完全复用开源组件,我们学不到底层;全部从零手写,时间不够,项目质量差。怎么把握二者之间的平衡?

4.前车之鉴

感想一

文章链接:https://book.douban.com/subject/4006425/discussion/22803733/

把每天要做的事情分成 ABCD 四类:A‑紧迫且重要;B‑重要不紧迫;C‑紧迫不重要;D‑不重要不紧迫。

读完这篇文章,我对四象限时间管理有了更深体会。过去我处理学习任务的时候,总是优先处理 A 类紧迫且重要的任务,比如马上要交的作业,却常常忽略 B 类重要但不紧迫的事情,例如技术基础巩固、项目复盘、阅读技术博客。这类事情没有截止日期压迫,很容易被无限往后拖延。等到临近课程作业、项目截止的时候,才发现基础薄弱带来的各种问题集中爆发。
放到软件工程课程中,写博客复盘、预习软件工程相关知识、打磨项目架构都属于 B 类任务。虽然不会立刻要交,但是长期坚持才能真正提升工程能力。我计划之后做任务规划时,主动分出一部分时间分配给 B 类事项,不能只救火式完成截止日期临近的任务,避免一直被动赶作业。

感想二

文章链接:http://www.cnblogs.com/Tpf386/p/4798437.html

很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课?请看这个学生学习的经历。

现在网上充斥大量高质量编程视频教程,很多时候我遇到技术难题,第一反应就是去找视频跟着敲一遍,有时候会产生疑问:既然视频什么都能搜到,课堂听课的意义在哪里。读完这篇博文的故事,我意识到视频学习和课堂学习存在明显差距。视频教程大多聚焦具体技术点,教我们如何实现功能;而课堂教学不只是讲知识点,还有老师的答疑、同学之间课堂讨论、课程配套的小组项目实践。
就软件工程课程来说,团队分工、项目流程、需求分析这些工程思维,光靠刷视频很难体会透彻。视频可以教会工具怎么用,但是课堂可以帮我们建立完整的知识体系,发现自己自学时会忽略的漏洞。往后我会调整学习方式,以课堂学习为主,视频作为补充工具,而不是用刷视频完全替代课程学习。

posted @ 2026-09-06 21:16  zhenglebing  阅读(6)  评论(0)    收藏  举报