第一周作业

这个作业属于哪个课程 计科 24 级 56 班
这个作业要求在哪里 第一周作业
我希望在这门课达到的目标 把已有的前端项目经验转化为更完整的软件工程能力:能做需求分析、协作开发、测试和复盘,而不只是实现页面。

1. 介绍自己,建博客

我是广东工业大学 2024 级计算机科学与技术 6 班的 李文争。目前常用 Python、C# 等编程语言,接触过CV,LLM,Diffusion相关研究,学习过Unity和Wpf相关开发。除此之外,我平时喜欢打羽毛球。打羽毛球不仅能够锻炼身体,也让我体会到坚持和积累的重要性:技术动作需要不断练习,编程能力同样需要通过持续学习和实践来提高。

过去,我接触编程时,通常是在遇到问题后临时查找资料,解决问题之后就把代码放在电脑里,很少主动整理和记录。时间一长,虽然完成过一些小程序,但再次遇到类似问题时,仍然需要重新搜索,之前的经验没有真正沉淀下来。

因此,我决定建立自己的博客,练习如何写博客、上传代码以及按照规范整理学习内容。我希望把学习过程中遇到的问题、解决方法和个人思考记录下来。例如,在学习 Python 或 C# 时,如果遇到一个比较难理解的知识点,我可以先记录问题,再写下自己的分析过程和最终解决方法。这样不仅方便以后复习,也能帮助别人理解类似的问题。
github主页:
图片

2. 现状、经验和计划

(1)自我评价

技能 目前水平 课程结束目标
问题拆解与算法设计 4 6
数据结构与程序设计 4 6
软件架构与模块划分 3 5
版本控制与协作开发 2 5
软件测试与质量保证 2 5
项目计划与进度管理 3 6
技术文档与团队沟通 4 6

(2)阅读心得

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

我来上这门课,首先是因为软件工程是计算机专业中非常重要的一门课程。以前我接触 Python 和 C# 时,往往更关注“程序能不能运行”,却较少考虑需求是否明确、代码是否容易维护、程序是否经过充分测试,以及多人合作时如何管理代码。通过这门课,我希望了解一个软件项目从想法到完成的完整过程。

阅读了 《大学生上课为什么要认真听课》 后,我认识到,认真参与课程并不只是为了得到一个好成绩,更重要的是培养自己的注意力、执行力和持续学习能力。很多时候,我们会因为课程内容暂时看不到实际用途,或者因为老师讲课方式和自己的预期不同,就产生不想听、不想做的想法。但是,软件工程中的许多能力都不是立刻能够看到结果的,需求分析、代码规范、测试和文档等工作,可能在刚开始时显得繁琐,却会直接影响软件后期的质量。

我比较认同“不能只凭一时的感受判断一门课有没有用”这一观点。计算机技术发展很快,今天学到的某些知识可能不会马上用于工作,但它们可能帮助我们建立分析问题的方法。尤其是软件工程,真正重要的不只是掌握某种编程语言,而是学会如何把复杂问题拆分、如何与别人合作、如何让软件能够长期维护。

b)我希望建立什么样的师生关系

在过去的学习经历中,我接触到的师生关系大多是以老师讲授、学生听讲和完成作业为主。这样的关系能够保证课堂正常进行,但学生有时会比较被动,遇到不懂的问题也不一定会主动提出。阅读 师生关系 这篇文章后,我认为软件工程课程更适合建立一种“教练—学员”式的师生关系。

我希望这门课中的师生关系是平等、认真、开放和相互负责的。老师可以对我们的作业提出严格要求,也可以指出代码、文档和思考中的问题;学生则应该尊重老师的指导,同时对自己提交的作业负责。如果我们认为课程或作业存在问题,也应该提出具体事实和改进建议,而不是简单地抱怨。

如果老师布置的作业比较困难,我会选择 C:向老师和同学请教,花更多时间,把作业尽量完成。我不会因为作业有难度就直接放弃,也不会只完成最简单、能够保证及格的部分。因为软件工程能力不是只靠听课获得的,很多知识必须在实际写代码、调试和修改的过程中才能真正掌握。

c)参考、引用与抄袭的区别

在学习和工作中,参考别人的资料是非常正常也是非常必要的事情。软件开发很少完全从零开始,程序员经常需要阅读官方文档、技术博客、开源项目和论文,在前人的基础上完成新的功能。只要能够说明资料来源,理解其中的原理,并根据自己的需求进行分析、修改和创新,这种行为属于正常的学习、参考和再开发。

例如,我在学习编程时参考了某篇技术文章中的代码。如果我只是复制代码,修改变量名后直接作为自己的作业提交,却没有注明来源,这就属于不诚实的行为。相反,如果我先理解代码的原理,再根据自己的需求重新设计,补充测试,并在文章中注明参考资料,那么这属于合理的学习和开发。

对于开源代码,也不能认为“网上能找到就可以随便使用”。不同项目可能采用不同的开源协议,有些协议要求保留版权声明,有些协议要求公开修改后的代码,还有些代码只允许学习参考而不允许直接用于商业项目。因此,使用他人代码之前,应该查看项目的许可证,并按照要求使用。

我认为,抄袭不仅是对原作者劳动成果的不尊重,也会阻碍自己的学习。如果直接复制别人的答案,短期内可能完成了作业,但自己并没有获得真正的能力。一旦遇到新的问题,仍然无法独立解决。对于软件工程专业的学生来说,诚实记录自己的工作过程尤其重要,因为软件项目往往需要多人协作,团队成员必须能够信任彼此提交的代码和文档。

(3)未来规划

未来规划是就业软件开发工作

争取多积累实战经验,寻找多段实习机会

(4)课程想法

a) 计划

有些学校会把课程模拟成真实的软件开发团队,让学生分别承担项目经理、需求分析、软件架构、开发、测试和数据库等角色。这样的教学方式让我认识到,软件工程并不是“一个人把代码写出来”这么简单,而是需要多人围绕共同目标进行分工、沟通和协作。

我希望这门课能够让我掌握以下能力:

  1. 学会分析用户需求,并把模糊的想法转化为明确的功能
  2. 学会在编码前进行模块设计和任务拆分
  3. 掌握 Git 和 GitHub 的基本使用方法
  4. 养成编写测试、修复问题和重构代码的习惯
  5. 了解团队开发中的分工、沟通和代码评审
  6. 能够完成一个相对完整的软件项目
  7. 通过博客记录学习过程,培养总结和表达能力

b) 我打算怎样度过这门课

我选择 D:比以前的课要多很多,直到达到目标为止

本课程结束时,我计划新增约 3000 行有效代码,使与本课程相关的代码总量达到约 5000 行

c)WOOP 制定学习计划

Wish:确定愿望

我希望在本课程结束时,能够参与完成一个功能完整、结构清晰、经过测试的软件项目,并掌握软件工程开发的基本流程。

Outcome:确定结果

如果这个愿望能够实现,我将不再只是会写一些零散的小程序,而是能够按照软件工程的方法完成一个完整项目。

Obstacles:找出障碍

我认为可能影响我学习效果的障碍主要有以下几个:

  1. 容易拖延,认为任务截止时间还早,于是迟迟不开始。
  2. 遇到程序错误时容易急躁,花费较长时间仍然找不到原因。
  3. 对 Git、测试和项目管理工具不熟悉,需要额外学习。
最可能的失败因素

最可能导致我达不到目标的因素是 不能长期坚持,出现拖延。

3. 提问

问题一:个人能力和团队协作哪个更重要?

相关章节:《构建之法》第 2 章、第 5 章。

书中介绍了个人开发流程和团队开发流程。我想问:如果一个人技术能力很强,但不善于沟通,他能否成为优秀的软件工程师?

我以前认为程序员最重要的是写好代码,但通过学习我发现,软件开发还需要需求沟通、任务分工、代码评审和团队协作。一个人即使代码写得很好,如果无法和团队配合,也可能影响项目进度。因此,我认为个人技术是基础,团队协作能力决定了一个人能否参与大型项目。

问题二:需求分析应该做到什么程度才能开始编码?

相关章节:《构建之法》中关于需求分析的内容。

如果需求还没有完全明确,是否应该先开始编写一个简单版本,再根据用户反馈进行修改?

我认为,完全不做需求分析就开始编码,容易造成返工;但如果等待所有细节都确定后再开始,项目进度可能会很慢。比较合理的方法是先确定核心需求,完成最小可用版本,再根据用户反馈逐步改进。

我的疑问是:在真实项目中,应该如何判断哪些需求最重要?是看用户数量、实现难度,还是看项目价值?

问题三:代码覆盖率越高,软件质量就越好吗?

相关章节:《构建之法》中关于软件测试的内容。

代码覆盖率能够反映测试执行了多少代码,但覆盖率高并不代表测试一定有效。例如,测试只执行了程序,却没有检查结果是否正确,仍然可能漏掉错误。

我认为测试还应该关注正常输入、异常输入和边界情况。我的问题是:不同类型的软件对测试覆盖率的要求是否不同?如果为了提高覆盖率而编写没有实际意义的测试,会不会增加维护成本?

问题四:敏捷开发会不会降低代码质量?

相关章节:《构建之法》中关于敏捷开发和迭代的内容。

敏捷开发强调快速迭代和及时反馈,这可以让项目尽早得到用户意见。但如果团队只追求速度,可能会忽略代码规范、测试和架构设计。

我认为,敏捷开发不等于只追求快。每次迭代都应该包括需求确认、编码、测试和总结。我的疑问是:当项目时间有限时,如何平衡开发进度和代码质量?

问题五:创新一定要使用全新的技术吗?

相关章节:《构建之法》第 16 章“创新”。

以前我认为创新就是发明新的技术或算法,但阅读后我觉得,改进操作流程、提高用户体验、解决实际问题,也可以是一种创新。

例如,一个系统虽然没有使用复杂算法,但能减少用户的重复操作,同样具有价值。我的问题是:评价一个项目时,应该更看重技术的新颖性,还是更看重它是否真正解决了用户问题?

4. 前车之鉴

在学习计算机和软件工程的过程中,很多前人已经走过类似的道路。他们遇到过时间不够、基础薄弱、方向不明确等问题,也总结了不少值得借鉴的经验。通过阅读相关博客,我选择其中两篇进行分析和反思。

4.1 学会安排时间

阅读文章:辜新星:时刻调整方向,找到人生的蓝海

这篇文章给我印象最深的是作者对大学生活和时间管理的反思。作者刚进入大学时参加了很多社团活动,生活看起来非常丰富,但因为没有合理安排时间,学习成绩受到了一定影响。后来,在学长的建议下,他把每天要做的事情分成四类:

  • A 类:紧迫且重要;
  • B 类:重要但不紧迫;
  • C 类:紧迫但不重要;
  • D 类:不紧迫也不重要。

我认为这种分类方法对我很有帮助。以前我安排学习任务时,往往只关注“什么时候截止”,而没有认真考虑任务的重要程度。例如,临近截止日期的作业通常会被我优先处理,但预习、复习、阅读教材和练习编程这些重要但不紧急的事情,反而容易被推迟。时间久了,就会形成“总是在赶作业,却没有真正提高能力”的情况。

4.2 坚持

阅读文章:徐宥:掉进读书的兔子洞

这篇文章主要讲述了作者在学习和成长过程中的阅读、思考与积累。文章中提到,通过长期阅读和实践,可以逐渐扩大知识范围,形成自己的思考方式。对我来说,这篇文章的启发是:学习计算机不能只依赖课堂和临时搜索,还需要通过持续阅读、动手实践和总结,慢慢建立自己的知识体系。

我以前学习编程时,有时会直接搜索一个问题的答案,复制代码后让程序运行起来。这样虽然能够快速解决眼前的问题,但如果没有进一步理解原理,下一次遇到类似问题时仍然可能不会解决。尤其是编程的学习,如果只记住语法而不理解数据结构、程序执行过程和模块设计,就很难真正提高。

我也想尝试建立一个简单的学习记录习惯。每天记录当天学到的内容、没有解决的问题和第二天的计划,每周再进行一次整理。这样不仅可以避免学习内容很快遗忘,也可以帮助我发现自己长期存在的问题,例如算法练习不够、代码不规范或者总是拖延。

这篇文章还让我认识到,学习计算机需要耐心。很多知识刚开始接触时可能比较难,不能因为短时间内看不懂就认为自己不适合。真正重要的是能否持续投入时间,并通过实践把抽象知识变成自己的能力。

4.3 启示

通过阅读这些前人的经历,我发现他们的成功并不是因为一开始就比别人聪明,而是能够及时发现问题,并不断调整自己的学习方法。

对我来说,目前最需要改进的地方有三个:

  1. 减少拖延。 不要等到作业快截止时才开始,而要提前拆分任务。
  2. 重视基础。 不能只追逐新技术,还要认真学习数据结构、算法、软件工程和计算机基础知识。
  3. 坚持记录和实践。 通过写博客、编写代码和复盘,总结自己的学习过程。

我会把这些经验应用到本学期的学习中。每周提前安排软件工程课程的学习时间,把重要但不紧急的任务逐步完成;遇到不会的问题时,先独立思考,再查阅资料和请教别人;每完成一项任务,就记录自己的收获和不足。

前人的经历对我的意义,不是让我照搬他们的道路,而是让我看到自己可能遇到的问题,并提前做好准备。我希望在大学期间不断调整方向,保持学习热情,逐步积累专业能力,最终找到适合自己的发展道路。

posted @ 2026-09-05 23:24  星痕酱丫  阅读(8)  评论(0)    收藏  举报