关于我自己

我从2015年开始接触编程,2016年高考进入北京某211大学的计算机专业,2020年毕业,到今天是第7个年头。7年的时间,说来也不算短了;但惭愧的是,这其间连学习带工作,真正在编程的时间并不算长。

这里是我的私人博客,按理来讲不会有别人看,所以很多心里话也可以说出来了。坦率地讲,在专业方面,我一直是一个不太自信的人:

  • 论编程能力,我在校期间打过蓝桥杯,但是在第二轮就被淘汰了;
  • 论学习能力,我曾经花费了整整一天的时间,都没能弄懂"九九乘法表"到底是怎么输出的;
  • 论设计能力,我在公司里连续两届评选被认为是技术部门里架构设计最差的员工。

思来想去,我是一个非常普通的人,甚至于没有身边绝大多数人都聪明。拿九九乘法表为例,我至今仍然惊叹在学校的C语言实验课上,旁边的同学仅用了2分钟就敲完了代码,但是我却抓耳挠腮想了整整一天————大家都是初学者,但是他们学的真的比我快很多。

与他们相比,如果说我有什么优点的话,可能就是更有耐心吧。因为第一次让我觉得自己还能在编程这条路上走下去的时刻,是我在暑假的时候敲完了《C++ Primer Plus》中的所有示例代码之后,突然觉得大彻大悟的那一刹那。其实这本书的前半部分内容全部是在介绍C语言,但是我仍然为此感到兴奋;怎么说呢,就像是习武之人打通了任督二脉一样的感觉,我好像突然明白了程序是怎么回事,编程又是怎么回事。好像也是从那一天开始,我学习新的专业知识就不再像之前那么困难了。

接下来在学校的学习,没有给我什么特别深刻的印象。因为之后的专业课:《数据结构》、《操作系统》、《编译原理》、《计算机网络》,我能够明显地感觉到它们很重要,但遗憾的是老师讲不明白,更解释不清楚我们提出的问题。我曾经认为是我自己的理解能力不够,但是直到毕业后,老师把下一届的同学在课上问的问题私下里问我时,我才明白,很多问题老师其实并不懂,他或许也只是在照本宣科而已。

所以从那时开始,我好像就不再关注自己专业课的成绩了。相反,我尝试自己在网络上寻找编程的学习资料。我记得很清楚,那是2017年初,那时我还不知道什么是"翻墙",而当时在百度上搜索"编程"相关的话题,跳出来的至少两三页都是Java语言,以及Linux操作系统的博客和词条介绍。就这样,我通过网络学会了操作Linux系统,以及可以用Java语言进行编程。这个时候,我身边的同学开始分流,一部分同学不再继续学习编程,而是转向了模型设计、影视后期等领域;另一部分同学始终不见踪影,或是偶尔能见到他们在宿舍里一起打游戏。慢慢地,我与他们当中的大多数人的接触就很少了。

同一时期,我在视频网站上找到了一套Java培训视频。我突然发现,视频里的老师讲的内容很容易理解和消化。那段时间我好像是疯魔了一样,没日没夜地刷这个视频,跟着视频一起敲代码,做实验,就如同那个暑假我在家里照着书敲《C++ Primer Plus》中的示例代码时一样。现在想来,这也算得上是我编程能力的第二次提升。

通过这套视频,我学习了一种叫做"Servlet"的技术,它可以让我使用Java语言创建一个服务器,然后通过Web浏览器来访问我的程序。给我最直观的体验,就是通过3个java源文件总共加起来不超过200行代码,就可以让一个网站响应来自浏览器的请求。对我来讲,这很神奇,因为我自己似乎什么都没有做。

通过类似的视频,我好像学了不少东西,比如说一个Java的框架,叫"Spring";学了个数据库管理软件叫"Mysql",然后还能把里面的一张表对应到程序中的一个Java类,再通过一个叫做"Hibernate"的组件直接从数据库里读出相关的数据,连查询语句都不用写。真牛!

后来我开始尝试找实习的工作。第一次面试的时候,我和面试官大眼瞪小眼。他似乎很轻蔑地看着我,眼神似乎在说"小王八蛋落在我手里了吧";我也不知道是怎么看的他,我确定我心里什么也没想。当时具体问的什么我也早就记不清了,好像是什么"Servlet生命周期"、“AOT”、"IOC"吧。当时我懂得这些,倒是都回答上来了。于是就进到公司里面,天天就是在写测试用例。后来学校里要写毕业论文,所以这个实习工作没到四个月就不做了。感谢他们让我学会了使用git!

毕业之后,我的第一份正式工作是一个游戏后端的初级工程师。这是一个小公司,连同我加在一起,服务器开发组一共有三个人。对于刚毕业的我来说,这工资确实很高;但是很累,因为虽然下班时间是7点,但是好像每天晚上不到10:00是不能离开公司的,并且每隔一周的周六是要加班的,不管手里还有没有工作。所以有时在无事可做的时候,我会看一会电视剧《庆余年》。

虽然说是在开发游戏的业务,但实际上业务和网站后端挺像的。除了数据库是一个叫做"mongodb"的东西我不认得之外,其他的组件好像都和网站后端差不离。比如说在游戏的商城里面买一个装备,就是给这个玩家减少一点金币,然后把一个装备的id号添加到玩家对象中的某个列表中,最后再把数据给增量同步到数据库里;游戏里有实时战斗的功能还挺有意思的,但是我是新人,领导不让我写,怕我写不好,我就每天一直看着他写。看上去确实很复杂,但是也没什么算法,就是if…if…if…else if…这样一直嵌套。说实话,挺无聊的!

但是这个阶段出来个新名词叫"微服务",同时好像从某一天开始,面试的难度直线上升。不知道为什么,我在面试中级Java工程师的时候,需要回答JVM的内存布局,以及原子操作的实现原理,甚至还要知道Linux内核是怎么切换线程的。

当时面试官问我Java的synchronized关键字是怎么实现的。于是我照着事先准备好的草稿回答他了(我至今仍然记得这玩意是需要进行三次锁升级的,但是细节忘得差不多了),只是最后我多嘴了一句:“Java是为了解决C++过于复杂的问题而被开发的;设计人员之所以设计了synchronized关键字,就是希望程序员可以不关注它是怎么实现的,从而可以把注意力放在业务上。此外,这个关键字的实现应该是不稳定的,未来可能会改变。这意味着我们不应该让程序依赖于这个实现细节。所以为什么您要问这个问题呢?”。于是我失去了这个跳槽的机会。年轻人说话,嘴必须得有个把门的!

有一天,项目经理说这个月的月底要发布游戏的一个大版本,最近大家都辛苦一些。此后工作强度逐渐增加了,但其实我没什么事情可以做,因为需求的更改和我负责的模块没什么关系,所以我每天的工作就是修修bug,看看同事提交的代码,或者是充当服务器开发组的吉祥物。这期间,我把电视剧《庆余年》看完了。结局真坑!

突然有一天,我发现自己跟刚毕业的时候相比变化很大:不仅是体重增加了20斤,而且我好像已经很久都没有写过有意义的代码了,同时也好久都没有那种想要拼命学习的冲动了。我意识到自己现在陷入了瓶颈,我必须摆脱它,必须要保持学习。但是在公司里,想要在工作时间学习新知识是一件挺困难的事情。我总是觉得有好几双眼睛在盯着我;在这段时间内,我无法集中精力。我觉得在工作中学习完全就是自欺欺人,因为公司只想让我帮他们赚钱,才不会管我的能力是否会有提高;等到我写不了代码的时候,就把我解雇了,再换一个新的年轻人上来。童话里都是骗人的!

我辞职了,我不想再这样下去,我想写一点自己真正想写的代码。但是总是这样晃荡着也不是个事,所以我准备考个硕士去,尽可能地提高自己;其实更多的是想给自己创造一个好的学习环境,至少让我再多学几年。感谢我的父母,他们支持我这样做,我暂时不用为衣食发愁。

今天是2021年8月29日凌晨,我正在备考中。我需要学习数学,英语,政治,以及计算机专业的四门专业课。这感觉就像是回炉重造,但是我学得挺开心:一方面,我不再像之前一样焦虑,我能体会到自己每天都有一点收获;另一方面,对我来讲,这四门课着实比JVM源码、Spring源码、Mybatis源码,以及其他什么东西的源码容易学得多。我想我这辈子都不会再看这些东西了,因为它们不保值,我不能确保以后JVM的实现和现在的思路一致,不能确保以后Mybatis还会不会被大范围的使用(要知道,现在很少有人问Hibernate了,然而仅仅几年前,它还和jQuery一样是一定要使用的,而后者已经被Vue取代)。

我很确定,我热爱编写程序,并且在后半生中,我会一直坚持编写程序,就像很多人喜欢玩游戏,很多人喜欢打篮球一样。如果给我机会,我希望自己能写点什么呢?我想,我至少应该把经典的数据结构与算法都写一遍;写一点x86汇编,藉此复习一下硬件的工作原理;写一个简单的内核(我必须得看看线程到底是怎么切换的,凭什么你们一直问);以及我的梦想————设计一个自己的编程语言。

不知不觉写了快4000字了。我没想写这么多,这比我高中时候背诵的作文模板加在一起都要再长上不少。无论如何,这就是我创立这个博客的初衷。纸上得来终觉浅,绝知此事要躬行;去路迢迢,希望我自己不忘初心,砥砺前行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值