AIGC标识 第一周作业

这个作业属于哪个课程 广东工业大学软件工程56班
这个作业要求在哪里 第一周作业要求
这个作业的目标 建立个人技术博客和 GitHub 仓库,并明确自己的学习目标和未来发展方向

GitHub

我的Github仓库

已创建README文档

a37a5db24f7923625175def6fcf647c2

博客园

我的博客园

ac8e21c57a9511721e2095504a0edfd5

一、关于我

大家好,我叫陈宇轩,是一名计算机科学与技术专业的学生。

我目前主要接触过 C、Java、Python 等编程语言,也学习过数据结构、计算机网络、操作系统、数字逻辑等计算机专业课程。相比于只学习理论知识,我更喜欢通过实际编程来理解一个知识点,因为很多问题只有真正写代码、调试代码之后才会发现。

在之前的学习过程中,我接触过一些 C 语言程序设计,也做过链表、数组、指针等方面的练习;在 Java 方面则接触过面向对象程序设计、接口、继承、随机数、模拟程序等内容。另外,我也做过一些计算机组成原理、数字逻辑和 CPU 相关的实验。

目前我的编程能力还远没有达到专业程序员的水平。很多时候我能够理解程序的大致思路,但是遇到比较复杂的问题时,仍然比较依赖搜索资料和不断调试。这也是我希望通过软件工程课程改善的地方。

我的最大的兴趣是音乐,除了计算机,我平时比较喜欢听音乐,也会关注音乐专辑、音乐评论以及不同音乐类型的发展,欢迎b站/抖音关注MouseRadioO(∩_∩)O,我主要听英语音乐,是黑胶收藏爱好者。我还喜欢看足球,打羽毛球等体育活动。

我希望自己以后不仅仅是“能够把代码写出来”,而是能够逐渐理解:怎样把代码写得更加清晰、可靠、容易维护,并且真正解决实际问题。这也是我学习软件工程的一个重要原因。

二、关于计算机科学与技术专业

选择计算机专业,一方面是因为我本身对计算机和软件比较感兴趣,另一方面也是因为计算机专业具有比较强的实践性。在最开始接触编程的时候,我觉得编程比较有意思的一点就是:只要给计算机一个明确的指令,它就可以按照自己的逻辑运行。

但是进入大学之后,我逐渐发现,真正的软件开发远远不只是“会写代码”。一个看起来很简单的程序,实际上可能涉及:需求分析、算法设计、数据结构、程序设计、测试、调试、版本管理、团队协作、用户体验、软件维护,因此,我现在认为,计算机专业真正需要学习的不只是某一种编程语言,而是解决问题的能力。

根据软件工程技能调查的思路,我选择了对自己目前比较重要的 7 项能力进行评价。

技能 当前水平 目标水平 具体做法
c语言 5 7 写代码,多刷题
java应用 3 5 通过网课等方法巩固知识
数据结构与算法 4 6 刷题并自己实现常见算法
Git/Github 3 6 使用 Git 管理课程项目
软件测试 4 6 学习单元测试并给自己的程序写测试
项目开发能力 3 5 独立完成小型项目
团队协作 4 6 参与团队学习,完成项目的开发

这里的数字并不是说自己真的能非常准确地量化到某个等级,而是为了给自己一个比较明确的参照。

我的具体提升方法

  1. 增加实际代码量

不能只看教材和视频。每学会一个知识点,都应该尽量自己写一遍。

  1. 坚持使用 Git

以后课程项目尽可能使用 Git 管理,而不是所有代码都只保存在电脑本地。

  1. 学习代码阅读

除了自己写代码,也要尝试阅读其他人的项目。

因为自己写几百行代码和阅读几万行代码的能力完全不同。

  1. 做项目

我认为项目是检验学习成果比较有效的方法。

以后希望能够完成几个相对完整的小项目,而不是只完成零散的课堂练习。

  1. 学习测试

应该主动思考:

如果输入特殊数据怎么办?
如果用户输入错误怎么办?
如果程序运行很多次怎么办?

  1. 学习软件工程方法

这也是我选择这门课的重要原因。

我希望了解一个软件从需求到设计、编码、测试、发布和维护的完整过程。

  1. 记录学习过程

通过博客记录遇到的问题、解决方法和学习心得。

这样可以避免同一个问题以后反复踩坑。

关于抄袭与参考资料

我认为:

参考资料和抄袭之间最大的区别,是是否真正理解并完成了自己的工作,以及是否对他人的工作进行合理引用。

例如,我在学习一个算法的时候,可以阅读别人的博客或者官方文档,理解算法的思想,然后自己实现。

这属于正常学习。

但是,如果直接复制别人的代码,然后把它当成自己的代码提交,即使程序能够正常运行,也不能算真正完成了作业。软件开发本身就是建立在前人工作的基础上的,程序员每天都会使用开源库、阅读官方文档、搜索问题、参考其他人的实现。所以软件工程师不可能完全“不参考别人”。

真正重要的是:

知道哪些东西来自别人,并且尊重别人的工作;在理解的基础上继续创造自己的成果。以后在团队项目中,我也会更加注意代码来源、文档引用以及开源项目的许可证问题。

我未来的方向

目前我比较倾向于继续向软件开发 / IT 行业方向发展。我希望自己未来能够成为一名真正具有实际开发能力的程序员,而不仅仅是一个“会写课程作业”的计算机专业学生。当然,现在距离这个目标还有比较长的距离。

我的优势是:对计算机有兴趣;愿意自己研究问题;有一定 C、Java 编程基础;对软件和互联网相关内容比较感兴趣;愿意尝试不同类型的项目。

我的不足也很明显:项目经验还比较少;编程基础还需要继续加强;算法能力还不够稳定;软件工程实践经验不足;有时候容易把大量时间花在自己感兴趣的事情上。所以我认为现在最重要的不是马上确定自己以后一定做什么职位,而是先把基础能力提高。

我希望建立怎样的师生关系?

过去的大学学习中,我对师生关系的理解比较传统:老师讲课 → 学生听课 → 老师布置作业 → 学生完成作业。但是我认为软件工程这种实践性比较强的课程,如果一直保持这种关系,效果可能并不是很好。

我更希望老师和学生之间是一种:老师负责指导方向,学生负责主动实践和思考—————这样的关系。

如果老师布置的作业比较困难,我选择:向老师和同学请教,花更多时间,把作业全部完成。

如果一道题比较困难,我第一反应应该是想办法解决,而不是因为困难就放弃。当然,“请教”也不应该等于直接让别人把答案给自己。

我认为比较好的请教方式应该是:先自己尝试;明确自己卡在哪里;查阅资料;再向老师或者同学询问;理解之后自己重新完成。这样得到的知识才真正属于自己。

我的代码量

目前我的主要编程语言包括 C、Java,以及少量 Python。

由于以前的代码比较分散,部分是课程实验,部分是个人练习,因此目前只能进行一个大致统计。

按照目前的学习情况,我暂时记录为:

编程语言 当前代码量
C 约5000行
Java 约2000行
Python 约500行

我认为,代码量本身并不是衡量程序员能力的唯一标准。如果只是重复写大量简单代码,代码量再多也不能说明问题。

真正重要的是:写过什么代码,解决过什么问题,以及能不能独立完成一个完整的软件项目。

因此,我希望以后不仅增加代码量,也提高代码的质量。

WOOP 学习计划

1.Wish——我的愿望

我希望在这门课程结束之后,能够:

独立完成一个结构比较完整的软件项目,并且能够使用 Git 管理项目,具有基本的软件测试和团队协作能力。

  1. Outcome——最好的结果

如果这个愿望实现,我希望自己不再只是看到一道题然后想着:

“这道题应该怎么写?”

而是能够进一步思考:

“需求是什么?”
“应该怎样设计?”
“代码应该怎样组织?”
“如何测试?”
“以后修改会不会方便?”

如果能够达到这种程度,我认为这门课就真正起到了作用。

  1. Obstacles——可能遇到的障碍

我认为自己最可能遇到的问题有:

一,拖延

有时候知道应该学习,但会把时间放到其他事情上。

二,遇到困难后容易卡住

程序出现 bug 时,如果长时间没有解决,很容易产生放弃的想法。

三,基础知识不够扎实

有些时候不是代码写不出来,而是因为某个基础知识没有真正理解。

四,项目初期积极,后期坚持不够

开始一个项目时往往比较有动力,但项目进入重复调试阶段后,动力可能下降。

三、《构建之法》阅读与思考

《构建之法》的目录从软件工程基础、个人技术和流程,一直涉及团队合作、敏捷流程、软件设计、测试、质量保障、发布以及创新等内容。第 16 章专门讨论了 IT 行业的创新。我快速阅读之后,发现自己以前对“软件开发”的理解更多停留在“写代码”层面,而这本书让我开始从软件工程的角度考虑问题。

下面是我阅读后比较感兴趣的五个问题。

问题一:创新一定需要“灵光一现”吗?

以前我对创新的理解比较接近:想到了一个以前没有人想到过的点子,然后把它做出来。但是书中对这种“突然产生一个伟大想法”的创新方式进行了讨论。这让我产生了一个问题:

如果一个人没有突然产生特别好的想法,他还能通过持续实践获得创新吗?

我认为可以。例如软件开发中,一个现有的软件可能已经能够解决 80% 的问题,但程序员在实际使用过程中发现了一些不方便的地方,然后不断修改。第一次修改可能只是解决一个小问题,第二次可能改善交互,第三次可能改变实现方式。最后得到的产品可能与最开始完全不同。这种创新并没有所谓的“灵光一现”,而是来自大量实践。所以我认为:

创新不一定来自突然出现的想法,也可能来自不断发现问题、解决问题和重新组合已有知识。

问题二:软件应该追求“完美”还是尽快发布?

软件开发中经常会遇到一个问题:一个功能到底应该做到什么程度才可以发布?如果一直追求完美,那么软件可能永远发布不了。但如果过早发布,又可能导致用户体验很差。因此我的问题是:

怎样判断一个软件已经“足够好”,可以进入下一阶段?

我认为这不是一个单纯的技术问题。例如一个内部使用的小工具,即使界面比较简单,只要核心功能可靠,也可能已经足够。但是面向大量用户的软件,如果存在严重 bug,即使功能很多,也不应该直接发布。

所以我认为软件的“完成标准”应该和:软件用途;用户群体;风险;核心功能;测试结果;结合起来判断。这也让我认识到,软件工程不能只追求“代码写完”。

问题三:团队开发中,个人能力和团队流程哪个更重要?

我的一个疑问是:如果团队中有一个非常优秀的程序员,但是团队协作流程很差;和一个每个人能力一般,但是合作非常好的团队相比,哪个团队更可能完成优秀的软件?

我倾向于认为后者更有可能长期稳定地完成项目。因为一个大型软件不可能永远依靠一个人。如果所有关键代码都只有一个人理解,那么这个人离开项目之后,整个项目可能就会出现问题。因此,我认为团队开发中需要:代码规范;Git;文档;Code Review;测试;明确分工。个人能力当然重要,但是软件工程最终需要的是多人共同完成一个系统。

问题四:测试应该在什么时候开始?

我以前写程序的时候,通常是:写代码 → 运行 → 如果没报错就结束。但是这种方法实际上并不能证明程序没有问题。因此我的问题是:

测试到底应该从什么时候开始?

我以前的理解是,测试应该在程序基本完成以后进行。但是现在我认为,如果等所有代码都写完才开始测试,那么出现问题之后很难确定到底是哪一部分导致了错误。如果从开发过程中就不断测试,那么问题出现后更容易定位。这让我想到以后写项目时应该改变习惯:不要把测试当成项目最后的一项任务,而应该把测试融入开发过程。

问题五:代码量真的能够代表程序员能力吗?

我目前比较关注自己的代码量,因此看到相关内容之后产生了这个问题:一个程序员写了 10 万行代码,是否一定比只写过 1 万行代码的程序员水平高?我认为答案显然不是。例如:程序员 A 写了很多重复、低质量代码。程序员 B 写的代码数量少,但是完成了一个结构清晰、经过测试、能够长期维护的项目。我认为 B 的能力可能更强。因此,我觉得代码量应该成为一个参考指标,而不能成为最终目标。真正重要的是:

写代码的同时有没有解决问题,有没有形成工程思维。这也是我制定代码量计划时比较重要的一点。

四、前车之鉴:我从前人的经历中学到了什么

不要把所有时间都花在“紧急但不重要”的事情上,我比较认同把事情按照重要性和紧急程度进行分类的做法。以前学习的时候,有时候会出现这样的情况:明明一个作业距离截止还有几天,却因为一直没有开始,最后变成最紧急的事情。这样不仅压力大,而且完成质量也不一定高。

因此以后我希望把:重要但不紧急的事情提前完成。

例如:学习编程基础;阅读技术资料;整理代码;学习 Git;做个人项目。这些事情可能不会马上影响成绩,但是长期来看非常重要。

  1. 不要因为自己是计算机专业学生,就认为自己已经“懂计算机”。我觉得这个观点对我比较有启发。进入计算机专业之后,很容易产生一种错觉:“我已经是计算机专业的学生了,所以我应该已经会计算机了。”但实际上,计算机科学包含的内容非常多。会写 C 或 Java 程序,只能说明掌握了一部分基础。真正进入软件开发之后,还需要面对:操作系统;网络;数据库;算法;软件工程;分布式系统;测试;项目管理。

因此,我认为大学阶段最重要的事情之一就是建立基础,而不是急于证明自己已经什么都会。

posted @ 2026-09-15 14:17  Philil  阅读(6)  评论(0)    收藏  举报