软件工程第一周作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15710
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class78-Grade2024-CS/homework/15710
这个作业的目标 完成我的第一篇博文,做一次自我总结和学习规划

一、介绍自己

我叫邓文炜,是一名来自广东工业大学计算机学院的学生。在校期间系统学习计算机科学与技术,掌握机器学习、程序开发等相关理论与技术,注重理论和实践相结合。我学习上踏实认真,具备良好的逻辑思维与问题分析能力,乐于钻研算法、代码实现等专业内容;实践中善于沟通协作,能够配合团队完成项目任务。平时也会主动拓展专业视野,关注技术前沿。希望能够在接下来的学习与实践中不断积累经验,提升自身专业能力。

二、现状、经历和计划

1. 我选择计算机专业,源于自身对算法逻辑与信息技术的兴趣,乐于通过代码解决现实问题。同时数字时代技术应用前景广阔,希望依托学校工科平台,习得实用技术,实现技术价值。

对照合格计算机专业毕业生的要求,我仍存在不少差距:专业知识方面,部分课程仅停留在课本认知,底层原理理解不够深入,前沿技术知识体系较为零散;技能层面,基础编程能够实现,但大型项目实战经验匮乏,算法实战、代码优化调试能力不足;综合能力上,系统工程思维有待培养,工程落地、团队协同开发以及独立调研解决复杂问题的能力还需要持续锻炼提升。

技能名称 我目前的水平 我想在课程结束后达到的水平
程序理解 3 5
项目管理 2 5
团队协作 4 5
代码复审与代码质量 3 5
架构与模块化设计 2 5

2. 心得:

**a) 为何要来上课并且认真参与 **
一方面是为了学分,另一方面是为了学到更多东西。

b) 我在大学中体验到了哪种师生关系

我选C: 向老师和同学请教,花更多时间,把作业全部完成。

c) 引用文献,参考别人的资料和抄袭、剽窃的区别是什么?

引用参考:明确标注来源,尊重原作者版权与学术归属;只借鉴思路、方法、结论,不照搬核心成果;在原有基础上加入自己的分析、改造、创新产出新内容。
抄袭剽窃:直接复制他人文字、代码、成果,不注明出处,把别人的工作冒充成自己的原创;即使小幅修改,本质仍是盗用他人核心劳动成果。

3. 我的计划
我未来的计划是考研,并为之做出准备。

4. 对课程的计划和期待

学习计划:掌握软件生命周期、开发模型、UML 等理论知识;认真完成小组项目,练习文档编写、版本管理、软件测试;树立工程伦理,引用资料规范标注,分清借鉴与抄袭,做到理论和实践结合。

课程期待:跳出只写代码的思维,建立工程化开发思想。学会团队协作开发,掌握规范化开发流程,把所学用到后续项目与实习中,提升解决真实软件问题的能力。

如何度过课程:课上做好笔记,疑难问题及时请教。小组项目主动完成分工,重视文档和测试,不只追求功能实现。参考开源资料做到合理引用。课后整理知识点,把软件工程方法运用到实操练习中。

我的代码量大致为:C1400 行、Python1100 行、Java700 行,合计 3200 行。对于入职一流软件、互联网或人工智能公司来说,代码行数仅作参考,开发岗一般需要 10000‑15000 行有效代码并搭配 2‑3 个完整项目,AI 算法方向 Python 有效代码约 6000‑10000 行,更看重项目深度与解决问题的能力;如果从事高校教学科研工作,则不以代码量为核心考核指标,完成算法原型与实验仿真通常 3000‑8000 行有效代码就足够,重点在于论文产出、科研项目和教学能力。

我打算平均每周拿出6个小时用在这门课上,我计划在课程结束前,完成2000行代码量,每周完成200行。

三、提有质量的问题, 给认真的反馈

问题 1:计算机科学与软件工程有什么本质区别?
章节:第 1 章 概论,1.5 软件工程与计算机科学

问题:很多计算机专业学生算法学得很好,但做实际软件项目却容易失败,计算机科学和软件工程的区别是什么?

回答:计算机科学侧重研究问题、理论、算法,回答 “为什么可以做到”;软件工程是工程实践,在成本、时间、人力约束下,构造对用户有用的软件,回答 “怎么把东西做出来并且维护好”。

观点与分析:计算机科学追求最优理论解;软件工程追求足够好的现实产品。很多学生只重视算法刷题,忽略需求、文档、测试、协作,就会出现算法能力强但项目做不好。程序不等于软件,软件 = 程序 + 软件工程,只写代码不等于完成软件产品。

问题 2:单元测试一定适用于所有模块吗,单元测试的核心价值是什么?
章节:第 2 章 个人技术和流程,2.1 单元测试

问题:有些复杂模块构造测试输入成本很高,是否还需要单元测试,单元测试的真正价值是什么?
回答:单元测试不是万能,部分复杂模块编写成本高,但核心价值不是找 bug,而是保证模块接口稳定,防止后续修改产生回归 bug,明确模块预期行为。

观点与分析:书中指出单元测试由代码作者编写,和产品代码一起保存维护,保障多人协作下模块改动不会互相破坏。对于难以构造输入的模块,可以结合集成测试、回归测试补充,不能因为难写就完全放弃单元测试思想;单元测试的本质是把模块的预期行为固化成可自动运行的检验。

问题 3:敏捷开发是不是等于快速写代码、不做文档?
章节:第 6 章 敏捷流程,6.4 敏捷总结、6.5 敏捷问答

问题:不少人理解敏捷就是快速迭代、省去文档,这种理解是否正确?

回答:敏捷的核心是拥抱变化、重视人和沟通,不是拒绝文档,拒绝无用的臃肿文档,必要的设计、需求文档依然需要;敏捷也不等于一味赶进度,要有迭代计划、回顾反思环节。

观点与分析:书中提到敏捷会遇到需求蔓延、团队节奏失控等问题,需要迭代规划、每日例会、迭代复盘来约束。如果只追求速度,省略设计和记录,会积累大量技术债务,短期开发快,后期维护成本爆炸,这是对敏捷的误用。

问题 4:结对编程是不是两个人一起写代码就一定提升效率?
章节:第 4 章 两人合作,4.5 结对编程

问题:结对编程被书中介绍有减少错误、知识共享的好处,那是不是所有场景都适合结对编程?

回答:结对编程适合复杂、高风险模块;简单机械编码任务,结对反而消耗人力,降低效率。结对有角色分工:驾驶员写代码,领航员思考全局,需要轮换角色,否则效果大打折扣。

观点与分析:结对编程是协作工具,不是形式。如果两个人分工混乱、缺少轮换、任务简单,只会增加沟通负担。学生课程小组经常出现 “一人写,一人旁观” 假结对,并没有发挥结对编程的优势。

问题 5:评价工程师能力,能否用代码行数作为主要指标?
章节:第 3 章 软件工程师的成长,3.1 个人能力的衡量与发展

问题:代码写得越多,代表工程师水平越高吗?

回答:不能以代码行数衡量工程师能力。产出的用户价值、解决问题的质量、维护能力、沟通协作才是核心指标;冗余、重复的大量烂代码没有价值,重构删减复杂代码反而是高水平表现。

观点与分析:书中提到很多思维误区,把代码量、加班时长当作能力标尺。堆砌行数可以靠复制粘贴实现;优秀工程师会简化逻辑、消除冗余。对于学生,不能盲目追求总代码行数,更要看代码质量、测试完备度,以及能否交付可用的软件功能。

**四、前车之鉴 **

1.阅读文章A:https://book.douban.com/subject/4006425/discussion/22803961/
读完刘帅的《在失望中寻找希望》,“我是科班,却没学懂计算机” 这句话让我深有共鸣。刘帅本科是计算机科班,专业课全部学过,成绩优异还能拿到奖学金,但学习停留在机械听课、模仿例题完成作业,缺少主动思考与动手实践,知识只是零散的知识点,没有连成完整体系,看似成绩不错,实际上并没有真正吃透计算机专业的内核。

文中朱仲涛老师的数据结构课给我很深的触动:课程不只是讲概念,而是现场从零编写代码实现各类算法,把离散数学、内存、汇编等知识融会贯通。这让我意识到计算机不是一门靠背笔记、刷考试就能学好的学科,听懂理论不等于真正掌握,必须动手实现,理解背后原理,才能把书本知识内化成本领。

刘帅的求职经历更是现实的警示。面试时他遇到很多底层原理、框架实现、测试设计的问题,出现 “知其然,而不知其所以然” 的困境。很多功能自己调用过、项目里用过,但是追问底层实现就答不上来。这提醒我,不能只会调用现成接口、复制参考代码,要多追问 “为什么”,不能满足于程序跑通就结束。

回顾自身,我也容易陷入这种学习误区:上课听懂、作业完成、考试拿到分数,就觉得学会了。很少主动去拓展实践,缺少对底层原理的探究。刘帅的经历告诉我,分数和奖学金不等于技术实力。机械记忆式学习短期可以应付考试,但面对真实项目和企业面试就会暴露短板。

同时文章也传递出积极的一面:即便走过很多弯路,依然可以主动改变。刘帅工作三年之后重新考研,刻意训练自己概括、质疑、提问的思维,跳出机械学习模式。这启示我作为计算机专业学生,要做学习的主人,不能被动接收知识。遇到不懂的主动查阅、与人交流,重视动手实践,搞懂原理,拒绝 “假性努力”。今天欠下的思考与实践,未来在项目、面试中终究是要补上的。

总而言之,科班身份只是起点,不等于能力的保证。真正学懂计算机,不在于修了多少门课,拿了多少分数,而在于独立思考、动手实践,打通知识之间的联系,理解技术背后的本质。

2.阅读文章B:
https://book.douban.com/subject/4006425/discussion/22802960/
读完徐宥的文章,令我印象最深的是他坚持记录思维快照的习惯:把自己日常的思考、想法记录在笔记本中,时常回头翻看,对比过去与现在思想的变化。这看似简单的习惯,却帮他在大量阅读、广泛学习的过程中梳理线索,对抗学习中的迷茫。

徐宥大三阶段大量扫荡计算机相关书籍,像狗熊掰玉米一样到处涉猎,知识看似学得很多,但缺少清晰的主线。正是依靠这本笔记,他记录下读书计划、思考碎片,相当于给自己的知识建立一份 “索引”。等到大四面试、考研、写论文需要用到知识的时候,不必重新通读全书,依靠笔记就可以快速定位、重新强化相关内容。这让我意识到,大量输入不等于真正掌握知识,如果只读书不沉淀,看过的内容很容易随时间消散。

反观我自己的学习,很多时候看书、听课之后,就把想法抛在脑后,很少主动复盘自己的思考过程。遇到困惑时也很少把内心的疑问、脑洞写下来。很多想法一闪而过,过一段时间就完全遗忘,也看不到自己思维的进步与局限。“思维快照” 不只是记知识点,更是记录自己的疑问、误区、思考角度。定期回看,能够看见自己过去的幼稚想法,看清自己哪里得到提升,也能发现自己一直没有解决的盲点。

文章也提到他的学习理念:慢即是快,愿意下笨功夫。他逐行敲书上的示例代码,认真做完习题,配合笔记沉淀思考。广泛阅读很重要,但不能止于浅尝辄止。哪怕读很多书,如果没有把思考落地记录,就很难内化成自己的能力。同时他也反思,与其把十本书各读一半,不如把一本书读透。笔记正是帮助我们把读过的内容沉淀下来的工具。

作为计算机专业的学生,我们常常追求多看教程、多刷资料,追求阅读的数量,却忽略思考复盘。养成记录思维快照的习惯,不需要华丽的文笔,只需要真实记下自己的疑惑、收获、想法。隔一段时间回头翻阅,就可以清晰看见自己的成长轨迹,及时发现自己思维上的漏洞,把零散的知识串联起来。
当然笔记不是万能的,记录之后依然要回归实践。纸上的想法,最终还是要通过写代码、做项目去验证。记录思考加上动手实践,才能真正把书本知识变成属于自己的本领。

截图:

微信图片_20260906222323_168_18

image

posted @ 2026-09-06 22:32  邓文炜  阅读(5)  评论(0)    收藏  举报