大概是五月下旬的时候,那段时间我仿佛体会到了自己能力的增长。
对我而言,大概体现在 “掌控代码的能力”、“设计能力”、“搬砖速度” 以及 “寻求解决问题思路的过程”。
但这些好像幻觉一般,让我无法判别真假。
大概是两年前
我第一次对 GitHub
的使用是在 ganler 学长的带领下进行的。在大一的那个暑假,学长为校内 Robomaster 招新开了一个仓库 SPTraning-VisionGroup。
而我只做了 第一次作业,作业的内容我大概列一下:
1 | 1. 学习 Markdown |
现在看来,只觉得这些都是很基础的工作。但是对于一个 “正常的大一计科学生” 来说(一个学了一年 C
还学不明白,绩点也低、没有成功项目经历、糊里糊涂过了两个学期的人),每一个任务都不算特别简单吧。
站在一个新手角度分析,学习 Markdown
不是用记事本,而是学习一门新的标记语言。没学过操作系统,十分害怕自己主系统也搞崩了。计网没学过,不会自己搭代理。CMake
是什么?难道写程序可以不用 Visual Studio
吗?
做完这第一次作业,我唯一的感受就是 “不真实”。我感觉我需要的应该是这些,而不是一些枯燥的课本内容。后面的 第二次作业 相对而言比较简单(现在看来),因为它不是那么杂,只有一个任务。
可我没有继续做下去了。因为这个作业超出了我当时的接受范围。想起来就觉得很可笑,我当时无法理解程序如何实现并发,也不知道线程是什么。这也使得我第一次发现,我变得 懈于追求超过目前个人水平的知识。明明以前不是这样的。
这段故事于 2019 年国庆假后结束。Robomaster
视觉组并没有选择我。原因我自己明白。我简要描述下面试过程:
1 | - ganler: 来报名的很多都是大一双 sj,同时导论课大作业选的是 “计算机视觉”。 |
1 | - ganler: 你现在绩点怎么样? |
1 | - ganler:如果现在出了一个问题,你这边可以改,硬件组也可以改,那你会怎么决定? |
或许由于我面试表现得一点求生欲没有,导致我被挂了。我也因此自我怀疑了一段时间。但现在回想起来,除了怀念 ganler
学长带我们学习 GitHub
的时光之外,没有其他多余的思想感情(
在后面的生活中,我时常能听到一些对 ganler
学长的流言和评论。但在我眼里,他无疑是一个强者,更是一个好人。
- 大二下选了 40 多个学分,最后还能在没怎么认真的前提下稳到 4.6 左右,这专业有几个人有这种学习能力?
- 千星项目
Hyperpose
的Maintainer
,怎么要去怀疑代码能力呢? - 43 多个
Closed Pull Request
,怎么能说没有贡献和尝试呢?
从一般学生的视角看过去,或许很难想象,也很难理解。并且只要难以想象和理解,那便开始妄自揣测,开始用谎言麻痹自己、掩耳盗铃。
大概是一年半以前
我参与了一个外包项目。要写一个前端,但具体内容不方便细说了。那应该是我停滞生长的一年。
前端这个事情,说简单它很简单,但说难也很难。如果不对前端的历史有一个充足的了解,那完全写不好代码……甚至不知道一些工具是用来做什么的。
我的工作很简单,就是套套模板,写写接口。如果出现问题,就百度一下。我也就是这样,混了 200 多个 commits
,听起来就离谱。
但要说这件事对我有没有积极正面的影响,那我想也还算是有的。我在这个过程中,遇到了很多匪夷所思的问题,我开始学习 “搜索”。
同时,我们是前后端分离开发,一开始的后端连 HTTP
的 GET / POST
的区别都不清楚,也不知道如何修改后端代码(Spring Boot
写的),我就是在这种情况下接受了后端一个又一个现在想来挺无理的要求(比如说前端处理 CORS
问题)。由此,我逐渐领悟到了 “软件工程” / “高效合作” 的重要性。
我在重述一遍,我的工作就是套模板。但是这个 “套” 啊,也是讲究方式方法的。有些代码,还真的就是得理解了才能调用,更别说修改了。在这段时间里,我读别人代码的能力应该也多少提升了一些。
在我校培养方案里,自力更生的学生没有什么机会阅读他人的代码——什么作业都是个人作业,都是自己做了,而且大多都是从头开始,读什么代码啊?哪怕有几个作业,那也是调库就完事儿,根本不需要读。而无法自力更生的学生,则更不会去读代码——直接 c-v
,c-v
不行就换一个 c-v
。
到头来,自己写得代码还是那种垃圾的风格,只有自己看得懂。自以为自己的代码如诗词歌赋般优美动人,实际上连 Mount.Shit
都不如。
很可惜的是,我花了很长的时间才意识到这件事。
大概是半年以前
我突然体会到自己可掌控代码的范围,大概是在 1400 LoC
左右,再多便不能如臂使指。
哈哈哈,那一刻我觉得天塌了。
我还算是写了一小段时间的代码,竟然只能掌控如此可怜的规模吗?我想做些什么来提高当时的上限。办法我尝试过一些,但都没有什么作用,于是我换了个路子。我认为,这可能和我的智力有关,或者说和我的大脑有关。有的人就是能够一口气敲完 200 行代码直接跑通,虽然这肯定离不开训练的帮助,但不知道有多少人,即使加班加点地训练,也无法做到这种地步。
我认为我肯定是后者,我只能通过一些辅助手段才能提高对代码的掌握程度。那这就需要了解许许多多的知识,阅读其他人写的代码——只有开拓了知识面,才能将原本只能用大脑强行建立联系的代码块整合成有意义的集群。
这个时候我开始后悔,后悔 “数据结构”、“算法设计”、“操作系统” 等一系列课程我为什么没有好好自学。
时间过去了就是过去了,不可能如时钟般回拨。
我曾经以为我的水平一直在增长,而且以一种极高的速度增长。但夜里躺在床上,反思自己的过去,仔细比较就会发现,自己根本没什么长进。我还记得大学的第一个寒假——飞机落地之后,我跟着我爸爸、爷爷直接去了饭店。在饭店里面,我迫不及待地拿出电脑,向我爸演示我 “高级程序设计语言” 那门课做的大作业。我爸只用了一句话,就让我开始怀疑人生,那句话是:
1 | 还有吗? |
是啊,还有吗?
我一个学期在大学里面学得累死累活,产出就这么一点吗?
- 我是在图书馆走了很久的神吗?不是的,我那个学期,每周六肯定是早起到图书馆,一坐就是一个白天,腰都坐出问题了。
- 我是在学校浪费了很多时间吗?不是的,我一直在做作业,从来都没有停过。作业做完了就刷高数题,一本刷完了就找另外一本,我吃早饭的时候都在看吉米多维奇。
- 我是在寝室一躺就是一天吗?不是的,或者说那个学期我不是这样的,我应该只有做完了作业才会休息一段时间,之后又投入到下一次作业的准备当中。
那我在干什么?我不清楚。
我曾经以为,我上了大学之后就会像坐火箭一样,前十二年的积累都会转化成我在大学里面发展的动力。但我错了,大学不会给我一个方向,然后告诉我向那个方向努力,而是需要我自己寻找方向。
我错了一次又一次,错了一次又一次。一直以来我跌跌撞撞、磕磕绊绊像个没头苍蝇,只知道离目标越来越远、越来越难。我从没觉得自己特殊过,我是个普通人,因此我相信其他普通人应该也和我又一样的烦恼吧?
大概是现在
我看不清。
这个 Markdown
文件是 6 月 28 号创建的,但是写到这里的时候已经是 7 月 28 号了。我只能寄希望于两个月以后,可能只有那个时候的我才会对现在的我有一个比较公正的评价。
希望我没事吧。