第一周作业:随笔
我的软件工程学习之路:认识自己,规划未来
专业:计算机科学与技术
年级:大三
方向:计算机软件与人工智能相关方向
身份:一名正在努力成长的计算机专业女生
一、介绍自己,建立博客
1. 关于我
大家好,我是一名计算机科学与技术专业的大三女生。
进入大学以后,我逐渐发现,计算机科学与技术并不是一门“学会几门编程语言就可以”的专业。刚开始接触编程的时候,我以为计算机专业最重要的就是把代码写出来,后来学习了数据结构、计算机组成原理、操作系统、数据库等课程之后,我才慢慢认识到,真正的计算机能力是一套完整的知识体系。
到了大三,我对自己的认识也比刚进入大学的时候更加清晰。
我不是那种一开始就特别擅长编程的人,也不是能够每天连续十几个小时坐在电脑前写代码的人。但是我比较愿意在遇到问题以后继续研究,尤其是当一个问题真正被解决的时候,会让我产生比较强的成就感。
我认为自己的一个优势是学习和总结能力比较强。
面对一个自己完全不了解的知识点时,我不会要求自己第一次就全部理解,而是会先建立基本概念,再通过资料、代码实践和不断试错逐渐理解。这样的学习方式可能比较慢,但是随着学习内容越来越复杂,我发现它能够帮助我把知识真正留下来。
另外,我认为女生学习计算机并没有什么特殊的限制。
计算机专业真正考验的是逻辑思维、学习能力、实践能力以及持续投入的能力,而不是性别。可能在一些环境中,女生的计算机人数相对较少,但这并不意味着女生不能学好。
相反,人数较少有时候也会让我更加希望证明:
兴趣没有性别,能力也没有性别。
2. 我的优势技能
如果一定要让我列出几个自己的优势,我认为主要有以下几个方面:
(1)学习总结能力
我比较喜欢在学习一个知识点之后进行总结,把零散的知识整理成自己的体系。
例如学习数据结构时,我不会只记住某一种排序算法,而是会进一步比较不同算法的时间复杂度、空间复杂度以及适用场景。
我认为这种习惯是在长期学习过程中慢慢形成的,并不是短时间就能获得。
(2)耐心
编程过程中经常会出现这样的情况:
代码看起来没有问题,但是运行结果就是不对。
以前遇到这种情况时,我容易产生焦虑,甚至会怀疑是不是自己不适合学计算机。后来慢慢发现,Bug 本身就是学习的一部分。
现在我会尝试把问题拆开,一点一点排查。
为什么错?
错误发生在哪一层?
我的假设到底是哪一步出现了问题?
这种思维方式让我逐渐变得更加有耐心。
(3)表达和沟通能力
计算机专业并不意味着只需要和电脑打交道。
无论是团队开发、项目答辩,还是未来参加工作,都需要和其他人交流。
因此我比较重视自己的表达能力,希望自己不仅能够“把程序写出来”,也能够把自己的设计思路解释清楚。
二、现状、经验和计划
(一)为什么选择计算机科学与技术专业?
选择计算机科学与技术专业,一部分原因来自兴趣,另一部分原因来自对未来职业发展的考虑。
高中时期,我对计算机就有一定兴趣。进入大学之后,我真正接触编程,才发现:
编程并不是简单地“告诉电脑做什么”,而是训练自己如何把一个复杂的问题拆解成计算机能够执行的步骤。
这也是我逐渐喜欢上计算机专业的重要原因。
当然,现在回头看,我也承认自己大学前两年的学习并没有达到自己理想中的状态。
有一些时间被娱乐、刷手机、拖延以及效率不高的学习方式消耗掉了。
大三之后,我越来越明显地感觉到:
大学真正宝贵的并不是“有很多时间”,而是有一段时间可以相对专注地学习。
如果不能利用好这段时间,毕业以后再想系统地补基础,会付出更大的成本。
2. 我距离合格的 IT 专业毕业生还有多远?
我认为自己目前最大的不足主要有以下几个方面:
- 基础知识还不够系统
- 代码量不足
- 大型项目经验不足
- 工程实践能力不足
- Git 等开发工具使用还不够熟练
- 阅读优秀源码的能力不足
- 解决实际问题的能力还需要提高
尤其是从“会写代码”到“会做软件”,中间其实还有很长的距离。
我希望自己能够通过大学剩下的时间逐渐完成这种转变。
3. 我的技能调查表
我用 0~9 对自己的水平进行评价:
0 表示几乎不会;5 表示能够通过一般面试;9 表示世界一流水平。
| 技能 | 当前水平 | 课程结束目标 | 提升方法 |
|---|---|---|---|
| Java/C++ 编程 | 5 | 7 | 刷题、项目实践、阅读源码 |
| 数据结构与算法 | 5 | 7 | LeetCode、算法总结、定期复盘 |
| Git/GitHub/Gitee | 3 | 6 | 实际项目使用 Git、学习分支管理 |
| 软件工程 | 3 | 7 | 认真完成课程项目、阅读《构建之法》 |
| 数据库 | 4 | 6 | MySQL 实践、完成项目数据库设计 |
| Linux | 3 | 6 | Linux 环境实践、命令行操作 |
| 团队协作 | 5 | 7 | 小组项目、代码 Review、任务分工 |
4. 我计划采用的提升方式
方法一:增加代码量
过去我的问题之一是“学得多,真正写出来的代码少”。
因此以后不能只看视频和课本,而应该增加真正敲代码的时间。
方法二:坚持刷算法题
计划每周完成一定数量的算法题。
重点不是追求数量,而是弄清楚:
- 为什么这样做?
- 有没有更好的方法?
- 时间复杂度是多少?
- 如果数据规模变大,程序还能不能运行?
方法三:完成真正的项目
我希望不要只停留在课堂作业层面,而是至少完成几个相对完整的小项目。
项目应该包含:
需求分析
↓
系统设计
↓
编码
↓
测试
↓
Bug 修复
↓
版本管理
↓
项目总结
方法四:使用 Git 管理代码
以前写代码时比较容易出现“代码能运行就算完成”的情况。
以后希望逐渐养成真正的软件开发习惯,包括:
- Git commit
- branch
- merge
- README
- issue
- 代码版本管理
方法五:阅读优秀代码
学习编程不能只看自己写的代码。
优秀程序员写出的代码,往往在命名、结构、抽象和可维护性方面都有值得学习的地方。
因此,我希望每周留出时间阅读一些优秀项目源码。
5. 我为什么来上这门课?
我来上这门课,并不仅仅是为了获得课程成绩。
如果只是为了成绩,很多作业其实可以通过最低成本完成。
但是软件工程是一门非常强调实践的课程。
我希望通过这门课真正理解:
一个软件究竟是怎样从想法变成可以长期维护的软件产品的。
以前学习编程的时候,我更多关注的是:
“这个程序能不能运行?”
而软件工程让我开始思考:
“这个程序以后还能不能修改?”
“别人能不能看懂?”
“多人合作时会不会出问题?”
“需求发生变化以后怎么办?”
“如何测试?”
“如何维护?”
我认为这才是我需要学习的东西。
6. 我希望建立什么样的师生关系?
大学里,我体验过不同类型的师生关系。
有的课程老师主要负责讲授知识,学生负责听课和完成作业;也有一些老师更加鼓励学生主动提问和讨论。
我更希望这门课能够建立一种:
老师是教练,学生是运动员。
老师不是替学生完成训练,而是帮助学生找到正确的训练方法。
如果作业比较困难,我选择:
C:向老师和同学请教,花更多时间,把作业完成。
我认为“不会”并不可怕。
真正可怕的是因为不会,所以直接放弃。
如果一道题自己想了很久还是不会,我会:
- 重新阅读题目;
- 查阅教材和资料;
- 尝试自己分析;
- 搜索相关案例;
- 向同学请教;
- 最后再向老师询问。
我希望自己以后遇到困难时,第一反应不是“这个太难了”,而是:
“我还需要学习什么,才能解决它?”
7. 关于引用、借鉴与抄袭
我认为:
学习别人的成果和抄袭别人的成果,本质区别在于是否尊重原作者以及是否真正进行了自己的思考和创造。
软件开发本来就是站在前人的基础上发展。
我们会:
- 查阅官方文档;
- 阅读开源项目;
- 搜索 Stack Overflow 等资料;
- 使用开源库;
- 阅读论文;
- 借鉴设计模式。
这些行为本身并不是抄袭。
真正的问题在于:
有没有明确说明资料来源?
以及:
自己有没有真正理解和完成自己的工作?
例如,如果我使用了一个开源算法,我应该知道:
- 它是谁写的;
- 来源在哪里;
- 它解决什么问题;
- 为什么这样设计;
- 我对它进行了什么修改。
而不是直接复制代码,然后假装全部是自己的成果。
我认为大学阶段形成正确的学术和工程诚信非常重要。
因为以后真正进入软件行业,团队协作本身就是建立在信任基础上的。
8. 我未来想做什么?
目前我希望毕业以后能够继续从事与计算机软件、互联网或者人工智能相关的工作。
我暂时还没有把未来限定为某一个非常具体的职位。
因为大三阶段,我认为最重要的事情不是过早决定“我一定要做某某岗位”,而是先让自己具备足够多的选择权。
我的目标是:
先把基础打牢,再根据自己的优势选择方向。
我希望自己毕业时至少具备:
- 独立编程能力;
- 算法与数据结构基础;
- 软件工程能力;
- 数据库基础;
- Linux 基础;
- Git 使用能力;
- 团队开发经验;
- 至少 2~3 个能够真正展示自己的项目。
9. 我的优势与劣势
我的优势
第一,我愿意学习新的东西。
第二,我有比较强的自我反思意识。
第三,我愿意长期积累,而不是只追求短期结果。
第四,女生在计算机行业并不是劣势,反而可能让我在团队沟通、细节关注等方面形成自己的特点。
我的劣势
最大的劣势还是:
实践经验不足。
尤其和一些从高中甚至初中就开始大量编程的同学相比,我的代码积累并不算多。
另外,我过去有比较明显的拖延问题。
所以我现在给自己的要求不是“我要变得特别厉害”,而是:
每天比昨天多做一点真正有价值的事情。
10. 本学期规划
| 时间 | 主要目标 |
|---|---|
| 第1~4周 | 熟悉课程要求,建立博客,坚持记录 |
| 第5~8周 | 加强代码实践,学习软件工程方法 |
| 第9~12周 | 完成课程项目,提高团队协作能力 |
| 第13~16周 | 总结项目,完善代码,复盘课程 |
| 学期结束 | 形成自己的软件工程学习方法 |
11. 我对这门课的期待
通过了解美国本科以及国内软件工程相关课程后,我发现优秀的软件工程教育并不是单纯增加理论知识,而是非常重视:
- 实践;
- 项目;
- 团队;
- 工程规范;
- 代码质量;
- 沟通;
- 持续学习。
因此我希望这门课能够让我真正经历一次比较完整的软件开发过程。
我不希望课程结束以后,只记住几个概念。
我更希望自己能够说:
“我真正做过一个软件项目,并且知道它为什么应该这样做。”
12. 我想当助教吗?
目前我认为自己距离成为优秀助教还有一定差距。
如果未来自己的专业能力和表达能力能够达到一定水平,我愿意尝试成为助教。
因为教别人其实也是一种非常好的学习方式。
当一个人必须把知识解释给另一个人时,往往才能发现自己到底有没有真正理解。
所以如果以后有机会,我愿意尝试。
13. 我目前的代码量
目前我的代码主要来自课程作业、个人练习以及一些小项目。
初步统计如下:
| 语言 | 目前代码量 |
|---|---|
| C/C++ | 约 3000 行 |
| Java | 约 2000 行 |
| Python | 约 1500 行 |
| HTML/CSS/JavaScript | 约 1000 行 |
| 总计 | 约 7500 行 |
注:以上为按照实际项目和课程代码进行的粗略统计,后续会继续精确记录。
我认为“代码量”不是评价程序员水平的唯一指标。
10000 行重复、低质量代码,不一定比 3000 行经过认真设计的代码更有价值。
但是对于学生而言,代码量依然很重要,因为:
没有足够的代码实践,就很难形成真正的编程能力。
14. 一流软件公司需要多少代码量?
我认为不能简单地说:
“达到 XX 万行代码,就可以进入一流互联网公司。”
真正进入一流软件公司,更重要的是:
- 算法能力;
- 基础知识;
- 工程能力;
- 项目经验;
- 解决问题的能力;
- 学习能力;
- 团队协作能力。
代码量更多应该作为实践经验的一个侧面指标。
因此我的目标不是单纯追求几十万行代码,而是:
在持续写代码的过程中,提高代码质量和解决问题的能力。
15. 我每周准备投入多少时间?
我计划平均每周投入:
12~15 小时
其中包括课堂时间。
大致安排如下:
| 内容 | 每周时间 |
|---|---|
| 上课 | 3小时 |
| 阅读教材/博客 | 2小时 |
| 编程实践 | 4小时 |
| 算法练习 | 2小时 |
| 项目/博客总结 | 2小时 |
| 复盘 | 1小时 |
| 总计 | 约14小时 |
如果课程进入项目开发阶段,我会根据实际情况进一步增加时间。
对于“前两年是否浪费了时间”的问题,我选择:
D:比以前的课要多很多,直到达到目标为止。
因为如果现在已经认识到了问题,却仍然使用以前的学习方式,那么结果不会改变。
16. 本课程结束时的代码量目标
目前代码量约为:
7500 行
我希望本课程结束时达到:
15000 行左右。
也就是说,需要新增大约:
7500 行代码。
如果按照一个学期约 15 周计算:
7500 ÷ 15 ≈ 500 行/周
因此我的目标是:
平均每周新增约 500 行有效代码。
这里的“有效代码”并不是为了凑数字,而是课程项目、算法练习、个人项目等真正有意义的代码。
17. 我的 WOOP 计划
W——Wish:愿望
我的愿望是:
在本课程结束时,真正建立软件工程思维,完成一个相对完整的软件项目,并让自己的代码量和工程实践能力明显提升。
O——Outcome:结果
如果这个愿望实现,我希望课程结束时:
- 我能够独立完成一个中小型软件项目;
- 我能够使用 Git 进行基本团队协作;
- 我能够写出结构更加清晰的代码;
- 我能够理解软件需求、设计、编码、测试和维护之间的关系;
- 我能够比现在更加自信地面对编程问题。
更重要的是,我希望那时候回头看,会发现:
这一个学期没有被我浪费掉。
O——Obstacles:障碍
我认为自己最可能遇到的障碍有以下几个。
障碍一:拖延
比如:
“今天有点累,明天再写。”
最后变成:
“明天再说。”
障碍二:手机和网络干扰
学习的时候容易刷短视频、社交软件或者无目的浏览网页。
障碍三:遇到困难容易焦虑
程序长时间运行不正确的时候,很容易产生挫败感。
障碍四:任务过多
大学课程比较多,如果没有合理安排,很容易出现所有任务挤到截止日期前的情况。
18. 最可能导致我失败的因素
如果最后这门课没有达到预期,我认为最大的可能性是:
不能长期保持自律。
因为“认真学习一段时间”其实并不难。
难的是:
连续坚持一个学期。
很多人失败并不是因为不知道该怎么做,而是知道该怎么做,却没有坚持。
所以我真正需要训练的不是某一个编程语言,而是:
持续行动的能力。
19. If-Then 风险防范计划
如果我因为手机分心
If: 我发现自己学习时开始无目的刷手机。
Then: 把手机放到距离电脑较远的地方,至少连续学习 45 分钟以后再查看。
如果我遇到不会的程序问题
If: 一个 Bug 超过 30 分钟没有解决。
Then: 停下来重新分析问题,查看报错信息、官方文档和相关资料,并记录自己的尝试。
如果我开始拖延作业
If: 我发现自己开始想“明天再做”。
Then: 先强制完成任务中最小的一部分,例如先写 30 分钟,而不是要求自己一次性完成全部任务。
如果作业临近截止日期
If: 距离截止日期不足三天,而任务还没有完成。
Then: 暂停非必要娱乐活动,优先完成课程任务,并重新调整之后的时间安排。
如果连续几天没有学习
If: 我连续两天没有完成学习计划。
Then: 第三天不再制定过高目标,只要求自己恢复至少 1 小时的学习状态。
三、提出有质量的问题,给认真的反馈
1. 《构建之法》阅读心得
《构建之法》让我比较深的一点感受是:
软件开发不仅仅是写代码,而是一项人与人共同完成的工程活动。
以前我对编程的理解比较简单:
题目
↓
写代码
↓
运行
↓
得到结果
但是软件工程的实际过程显然复杂得多:
需求
↓
设计
↓
编码
↓
测试
↓
发布
↓
维护
↓
迭代
因此我阅读过程中产生了几个问题。
问题一:个人能力很强,真的一定能做好软件吗?
相关章节:第1章、第2章,关于个人开发与团队软件开发的内容。
书中强调软件开发具有明显的团队属性。
我的问题是:
如果一个人的编程能力非常强,但是沟通能力、团队协作能力比较弱,那么他是否仍然可以成为一名优秀的软件工程师?
我过去会认为:
“只要代码写得好,其他事情都是次要的。”
但是现实中的软件项目往往不是一个人完成的。
一个项目可能需要:
- 产品经理;
- UI设计师;
- 前端开发;
- 后端开发;
- 测试人员;
- 运维人员。
如果一个程序员不能和其他人沟通,那么即使代码写得很好,也可能无法完成整个项目。
因此我现在更加认同:
程序员不仅需要解决技术问题,还需要解决人与人之间的协作问题。
但我仍然有疑问:
团队协作能力和个人技术能力,到底应该如何平衡?
问题二:代码质量有没有绝对标准?
相关章节:第3章,关于代码规范与代码质量的内容。
书中强调代码质量的重要性。
我非常认同这一点。
但是我产生了一个问题:
代码质量是否存在绝对标准?
例如:
int sum(int a, int b)
{
return a + b;
}
对于一个非常简单的函数,这样的代码已经足够清晰。
但是对于大型项目而言,代码质量还涉及:
- 可维护性;
- 可扩展性;
- 性能;
- 安全性;
- 可测试性。
有时候为了追求高度抽象,反而会增加代码复杂度。
所以我认为:
好的代码并不一定是最复杂、最“高级”的代码,而应该是在当前需求下最合适的代码。
这让我思考:
代码规范究竟应该服务于项目,还是项目必须服从规范?
问题三:测试应该做到什么程度?
相关章节:关于软件测试的相关内容。
以前写课程作业的时候,我对测试的理解非常简单:
“程序运行出来结果正确,就说明程序没问题。”
但是软件工程中的测试显然不是这样。
一个程序可能:
- 正常输入没问题;
- 边界条件出错;
- 大数据量出错;
- 多用户同时操作出错;
- 网络异常时出错。
因此我想问:
一个软件到底应该测试到什么程度,才能认为它是“可靠”的?
如果要求测试所有情况,理论上几乎是不可能的。
所以实际的软件工程中,一定存在成本与可靠性之间的平衡。
我认为测试并不是:
“证明程序没有 Bug。”
而更像是:
尽可能发现程序中潜在的问题。
问题四:敏捷开发是否适合所有项目?
相关章节:第6章,敏捷开发相关内容。
敏捷开发强调快速迭代、持续反馈。
我认为这种方式对于互联网产品非常有价值。
但是我也产生了疑问:
如果一个项目需求非常明确,而且对安全性、可靠性要求非常高,是否仍然适合采用敏捷开发?
例如:
- 航空系统;
- 医疗系统;
- 金融系统。
这些系统如果频繁修改,可能会产生非常高的风险。
因此我认为:
敏捷开发并不是一种适用于所有项目的万能方法。
更合理的做法可能是根据项目性质选择开发模式。
这也是我阅读之后产生的一个比较大的思考:
软件工程中的“最佳实践”是否真的存在?
还是说:
所谓最佳实践,只是在特定环境下比较合适的实践?
问题五:创新能力到底应该如何培养?
相关章节:第16章“创新”。
这一章是我比较感兴趣的一章。
书中让我认识到,创新并不一定意味着:
“从来没有人做过的东西。”
很多创新其实是:
发现已有方法的问题,然后进行改进。
这让我重新认识了“创新”。
以前我认为创新是一种比较遥远的能力,似乎只有特别聪明的人才能做到。
但如果创新也包括:
- 改进一个流程;
- 优化一个算法;
- 改善用户体验;
- 重新组合已有技术;
那么普通学生其实也能够进行创新。
我的问题是:
创新能力究竟是通过大量知识积累自然产生,还是可以通过专门训练获得?
我目前更加倾向于前者和后者结合。
因为如果没有足够的知识,就很难知道哪些地方值得改进。
所以对于我来说:
目前最重要的创新准备,不是强行要求自己“想出一个伟大的产品”,而是先扩大知识面,积累实践经验。
2. 我对课程的反馈方式
对于课程反馈,我选择:
D:经常提问题,平时就经常给老师和助教提反馈。
因为如果一个学期结束才发现自己的学习方式存在问题,那么调整的时间就已经不多了。
我希望自己以后能够做到:
- 有问题及时问;
- 有想法及时记录;
- 对课程提出具体建议;
- 对自己的学习情况进行阶段性总结。
我认为反馈不是“给老师挑毛病”,而是:
帮助老师和学生共同改进课程。
如果一门课程允许学生提出真实意见,那么学生其实也是课程建设的一部分。
四、前车之鉴:从前人的经历中学习
1. 时间管理:A、B、C、D 四类事情
参考文章:
文章中提到把每天的事情划分为:
- A:紧迫且重要;
- B:重要但不紧迫;
- C:紧迫但不重要;
- D:不紧迫且不重要。
我觉得这个方法非常适合大学生。
因为大学里最大的一个问题是:
真正重要的事情,往往并不紧迫。
比如:
学习编程、锻炼身体、阅读、准备未来发展,这些事情不会因为今天不做就产生明显后果。
但是一个月、半年甚至几年之后,差距就会慢慢出现。
反而是一些不重要的事情,比如刷短视频、刷社交媒体,会不断制造“即时反馈”。
所以我认为自己过去最大的时间管理问题就是:
容易把“有趣”误认为“重要”。
以后我希望把更多时间放在 B 类事情上。
因为:
真正改变一个人的,往往是那些今天不做也没关系,但是长期不做就会产生巨大差距的事情。
2. “科班出身,却没有学懂计算机”
参考文章:
这篇文章让我产生了比较强的共鸣。
作为计算机科学与技术专业的学生,我们经常会产生一种错觉:
“我已经是计算机专业学生了,所以我应该很懂计算机。”
但实际上,大学里的课程非常多:
- C/C++;
- Java;
- 数据结构;
- 操作系统;
- 数据库;
- 计算机网络;
- 计算机组成原理;
- 软件工程……
“学过”和“掌握”是完全不同的概念。
我自己也会发现,有些知识在考试前能够做题,但是过了一段时间以后,如果真正让我从零实现,可能仍然会遇到困难。
这让我认识到:
真正的学习不能只以考试成绩作为终点。
我希望未来能够把“学过”逐渐变成“会用”。
3. 记录自己的思维变化
参考文章:
我很认同记录想法这个习惯。
以前我很少记录自己每天的想法。
但是现在回头看大学前两年的学习状态,会发现自己其实经历了很多变化。
如果没有记录,这些变化很容易被遗忘。
因此以后我希望保持一个简单的学习记录:
今天学了什么?
今天解决了什么问题?
今天哪里没有做好?
为什么没有做好?
明天准备怎么改?
它不一定需要写得很长。
哪怕每天只有几句话,也可以成为自己的“思维快照”。
几年以后重新看这些记录,我应该能够看到:
自己是怎样从一个不成熟的计算机专业学生,慢慢成长为一个真正的软件开发者的。
五、我的总结
这次作业让我重新思考了一个问题:
大学四年到底应该留下什么?
如果只是成绩,那么毕业以后成绩单就能证明。
如果只是学分,那么毕业证可以证明。
但真正能够陪伴我进入职场的,是:
- 思考问题的能力;
- 编写代码的能力;
- 学习新知识的能力;
- 与别人合作的能力;
- 面对困难不轻易放弃的能力。
我现在已经进入大三,距离毕业并没有想象中那么远。
回头看,我并不能说自己已经准备好了。
相反,我越来越清楚地看到自己的不足:
代码量还不够,项目经验还不够,工程能力还不够,知识体系也还需要完善。
但是我觉得,认识到差距并不可怕。
真正可怕的是:
知道差距,却什么都不做。
所以从这门课开始,我希望改变过去的一些学习方式。
不再只为了考试学习,不再只追求“把作业交上去”,而是尽可能让每一次代码实践都成为自己的积累。
六、给自己的本学期目标
最后,我给自己制定几个比较具体的目标:
目标一:完成至少一个完整的软件项目
不仅要实现功能,还要经历需求、设计、编码、测试和维护。
目标二:课程结束代码量达到 15000 行左右
但不为了数量堆垃圾代码。
目标三:每周投入软件工程学习 12~15 小时
坚持比短时间爆发更加重要。
目标四:每周至少进行一次学习总结
记录:
学到了什么、遇到了什么问题、如何解决、下周准备做什么。
目标五:至少提出 5 个有质量的问题
不是为了完成任务,而是真正提出自己思考过的问题。
七、写在最后
我不知道几年后的自己会不会成为一名程序员,也不知道最终会选择软件开发、人工智能、继续读研,还是走向其他方向。
但是我现在越来越觉得:
大学最重要的不是提前知道最终答案,而是在拥有选择的机会之前,努力让自己具备更多选择的能力。
大三已经不是可以无限试错的阶段。
所以从现在开始,我希望自己少一点“以后再说”,多一点“现在开始”。
少一点空想,多一点代码。
少一点焦虑,多一点行动。
少一点追求表面的“我学过”,多一点真正的“我会用”。
希望这门课结束的时候,我可以对自己说:
我没有混过这一学期。
我真的比开学之前更像一名软件工程师了。
Github库:

Markdown:


浙公网安备 33010602011771号