软件工程第一次作业
| 这个作业属于哪个课程 | 计科24级78班 (广东工业大学 - 计算机学院) |
|---|---|
| 这个作业要求在哪里 | 第一周作业 - 作业 - 计科24级78班 - 班级博客 - 博客园 |
| 这个作业的目标 | 建立个人技术博客与GitHub仓库,完成自我介绍、现状规划、阅读提问及前人心得反思 |
一、介绍自己,建博客
个人学习方向
我是一名广工的计科专业的学生,目前的学习方向主要是Java后端,也在接触AI Agent方向的开发。开发之外,我也会在LeetCode、洛谷等平台做一些较为基础的算法题练习。为了给科研做准备,并进一步了解最近LLM的发展趋势,我也在初步了解LLM领域相关的论文。
个人技能
我尝试过学习电子绘画、作曲编曲、C#游戏脚本、游戏开发等技能,虽然都只是浅尝辄止,没有取得突出的成就,但在这个过程中我也收获颇丰。我画出了自己满意的像素动画,能制作一首简单的纯音乐,能开发出自己的游戏demo,参加过游戏开发比赛......虽然与长期学习的人相比,这些成就微不足道,但我知道了自己喜欢什么,能创作出自己想表达的东西,这整个过程给我带来了巨大的成就感。
建博客与写博客的看法
我认为坚持写技术博客其实是很有意义的,虽然我还没能做到,但我应该养成这样的习惯。
我也时常会抱有”写博客是浪费时间“的想法,但其实这是一种急功近利的表现,也是一种出于畏难情绪的逃避。
要想写出一篇完整的博客,意味着作者需要对博客中的内容都了如指掌。例如要写一篇介绍个人项目的博客,作者不仅需要梳理好项目中实现的所有功能,使用的各类技术栈,而且由于这篇项目需要发布到公共平台,作者也要思考项目目前可能存在的漏洞,以应对读者的质疑。写一篇知识分享同样如此,作者需要梳理好整个知识的框架,也要做好与他人讨论该知识的准备。
写博客看似与实际开发/学习脱节,但静下心来用写博客的方式来梳理项目/知识,对实际开发/学习大有裨益。只因为写博客不能带来肉眼可见的收益而放弃,是一种目光短浅的行为。并且,抗拒写博客可能也说明自己对于项目/知识的理解不透彻,没有信心将其梳理好,更没有信心在网上与人交流自己的认知。
二、现状、经验和计划
(1) 专业选择与技能自评
为什么选择计算机专业?
相比其他传统工科,计算机专业更加自由,也更富有活力。无论怎样的人,都能在其中找到自己感兴趣的方向。上手门槛也并不高,无需各类昂贵的实验设备,只要有一台电脑和一颗好奇心,就能迈出学习的第一步。
离合格IT毕业生的差距:
在专业能力上,我的基础知识还并不扎实,四大件方面的知识仍需巩固。
在技能上,我学习的技术栈仍然较窄,例如在Java开发方面,各类进阶的技术栈我都还未解除。
在能力上,我的独立开发能力也不够,仍然需要依赖AI,并且对AI的使用也不够熟练。
核心技能自评表(选取5-7项):
| 技能项 | ① 当前水平 | ② 目标水平 | ③ 提高手段 |
|---|---|---|---|
| 算法能力 | 5 | 7 | 不仅要重复刷算法题,还要总结算法套路和思维。 |
| 基础知识 | 4 | 7 | 对于OS,计组,计网等知识,需要从根本的原理上理解知识,总结出一套自己的框架。 |
| Git版本控制 | 3 | 6 | 要从头到尾完整学习,并总结使用经验,以提高效率,而不是只在需要时临时搜索用法。 |
| 调试能力 | 3 | 7 | 要多对比测试不同版本的功能的效果,记录数据,也要详细记录修改变动。 |
| 功能模块设计 | 3 | 6 | 对于一个应用的功能,在开发前完整地设计好,并反复琢磨,用画图的方式总结。 |
| 阅读官方文档 | 1 | 5 | 减少对教程的依赖,耐心阅读官方文档,即使对英文文档也要耐心解读。 |
(2) 阅读心得
a) 为何要来上课并且认真参与
上课是很好的培养学习能力的方法,对提高注意力,培养耐心都很有帮助。
课程也是从长远的视角出发来设置的,学生虽然能自己主动了解到最新最有用的课程,但此时更需要跟好学校的课程,让自己看问题的目光更远。
b) 师生关系与面对困难的态度
我在大学中体验过 路人甲/路人乙 式的师生关系。我希望这门课是 教练与学员 的关系——老师制定训练计划,我拼命去完成,然后不断纠正动作。
如果作业对我来说有些困难,我会选择:
C. 向老师和同学请教,花更多时间,把作业全部完成。
c) 引用与抄袭的区别
引用和参考是站在前人肩膀上前进,而抄袭是直接窃取他人劳动成果。区别在于:是否注明出处、是否用自己的语言重新组织、是否对引用内容有自己的分析和贡献。 我会严格遵守学校关于抄袭的处理规定,每次作业都独立完成或规范引用。
(3) 未来规划与准备
我的职业选择方向:
将来我想读研提高自己的学历,然后进入央国企的开发岗位。
对比同学的优势与劣势:
- 优势:愿意主动搜集信息,了解当下流行的技术,主动学习。
- 劣势:基础知识不够扎实,尤其是数学能力薄弱。
本学期的规划:
- 完成一个个人独立的AI Agent项目
- 进一步掌握各类AI工具的使用
- 巩固好基础知识
- 积累技术栈知识和面试经验
- 不断地进一步规划自己的未来发展方向
(4) 课程计划与WOOP方法
| 语言 | 当前代码量 | 目标代码量 | 每周代码量 |
|---|---|---|---|
| C++ | 约 28000 行 | 35000 行 | 约1000行 |
| Java | 约 15000 行 | 40000 行 | 约2000行 |
| Python | 2500 行 | 15000 行 | 约1500行 |
| C++是巩固基础知识和写算法题使用的,因此会通过实现课本知识,练习算法的方式积累代码量。 | |||
| Java则必须要参与开发更多项目,积累项目经验。 | |||
| Python目前只用于写个人使用工具等,但考虑到科研需要,必须进一步投入使用,学习其在科研领域的用法。 |
每周投入时间: 我选择 D. 比以前课要多很多,直到达到目标为止。
我认为这门课是实践性很强的核心课,必须投入足够时间才能有质变。
三、提有质量的问题(读《构建之法》全书)
问题1(第2章 个人技术和流程)
书中提到单元测试必须由程序员自己写,但我看有些大厂有专门的测试团队。对于学生来说,自己写的代码自己测很容易有思维盲区,如何有效解决这个问题?我查了资料发现有种“测试驱动开发(TDD)”的方法,但实践中感觉门槛很高。我的困惑是:初学者是否应该严格遵循TDD,还是先写代码再补测试?
问题2(第5章 团队和流程)
书中介绍了多种软件开发流程(如瀑布、敏捷)。我注意到很多互联网公司都说在用敏捷,但实际执行时变成了“伪敏捷”(只有站会,没有迭代回顾)。在课程项目中,我们小组该如何落地真正的敏捷?还是说我们只需模仿形式即可?
问题3(第8章 需求分析)
书中强调需求分析要深入挖掘用户的“隐含需求”,但在课堂项目中,往往用户就是老师或助教,需求是明确给定的。这让我产生疑问:在没有真实用户的情况下,我们如何训练自己挖掘隐含需求的能力?是否可以通过角色扮演或模拟用户来弥补?
问题4(第12章 用户体验)
书中讲到用户界面设计要遵循“别让我思考”原则。但我发现一些极简设计的软件(如命令行工具)虽然学习成本高,但效率极高。这似乎与“易用性”有所矛盾。我反对“所有软件都必须UI友好”的观点,我认为应该根据目标用户群体来权衡,专业工具可以适当保留复杂度。
问题5(第16章 创新)
书中提到创新的时机和环境很重要。我反思自己,周围很多同学都在卷AI,但我对底层系统(如操作系统、数据库)更感兴趣。在这个AI热潮下,选择“冷门”方向是不是一种不明智的创新?我的困惑是:坚持个人兴趣与迎合就业市场需求,该如何平衡?
四、前车之鉴
我阅读了以下几篇前人的经验文章。
一、读《.net程序员工作两年总结》有感
该文促使我重新审视了视频自学与课堂教学的关系。作者的经历表明,自学的瓶颈往往不在于知识获取,而在于遇到疑难时缺乏有效反馈,一个小问题便可能导致学习进程长时间停滞。这使我认识到,课堂的核心价值在于教师能提供及时的引导,帮助学习者突破思维障碍。此外,作者将编程定义为“技能而非知识”的观点亦引发我反思:日常学习中,我是否也常以“看懂了”为满足,而忽视了动手实践的必要性?编程能力的提升终究依赖于持续的编码训练。
二、读《一直在路上》有感
该文令我感触最深的是“前因决定后果”这一见解——链表学不透,往往可追溯至指针概念未掌握牢固;操作系统学不明白,根源常在于计组基础未打扎实。这警示我应重视专业基础课程,不宜好高骛远。同时,作者自大一即坚持将课本示例逐一上机验证,其朴实的实践精神令我反思自身眼高手低的学习态度。作者通过实习将课堂所学与工程实践相衔接的经历,亦使我认识到早期接触真实项目的重要性。
认真反馈:既然是健身/教练的关系, 那么健身学员就会经常提问“为何我的肥肉还在?为何我肌肉不长?为何要做这个练习?... ... ”; 为了改进教学,收集资料,老师在教学过程中会要求学生填写对课程的反馈, 你会怎么做?
C:有问题就问,至少一学期提三个问题, 认真按时填写反馈。
附:GitHub仓库与博客后台设置截图
-
GitHub仓库地址:woshi314/woshi314: Config files for my GitHub profile.
-
仓库README自我介绍截图:
![Snipaste_2026-09-05_22-28-40]()
-
博客园后台Markdown编辑器设置截图:
![Snipaste_2026-09-05_22-28-12]()


浙公网安备 33010602011771号