一个码农的心路历程

1,017 阅读12分钟

导言

互联网蓬勃发展的年代,条条道路通码农。很多人都在试着往计算机行业靠拢,你也可以看到现今大大小小的培训机构办的可谓是红红火火,这个行业在短短的 10 年就成了受人追捧的香饽饽。可是你真的想好了吗?你知道你自己为什么要进入这个行业,以及怎样才能在这个行业里面一步步发展吗?你会遇到哪些困难?怎么样才能坚持?今天就分享下自己这一、两年的经验,我会分享我进入这个行业的前前后后,以及谈谈自己的想法与认识。这些都是自己现阶段的不完全认识,不一定正确,但是贵在真实


为什么要出发

我从初中那会起就是一个喜欢和大人对着干的孩子,总是唯恐天下不乱,高考成绩不理想,进入了一所非 211,非 985 院校。学的是通信专业,高中毕业那会我对专业基本上没有概念,专业是老爸帮我选的,他说他 30 年前选的是这个专业,靠谱,稳!之前这专业不是叫这个名字,而是叫无线电,不管如何,他觉得这专业学出来总不会被饿死。。。

大学的前三年也是懵懵懂懂过来的,学的很认真,绩点也挺不错。但是三年过来感觉自己这些年学的东西和高中物理数学没什么两样,学这些纯理论的东西除了为了拿高绩点就想不到别的用处了,那时的感觉就是一个字 “虚”。大学第三年的时候,有一个偶然的出国机会,算是学校的交换项目,去到美国的一个大学读个两年,拿两边的文凭,当时说真的还是冲着文凭去的,去学什么?还是通信无线电。。。

在美国上大学给我的最大感受就是充实,虽然说还是学着这些纯理论的东西,但是基本上每天都有做不完的作业,每月都有考试。当然,刚来美国这几年,改变最多的还是对待生活的态度。到本科毕业那会,其实我都还不清楚自己所要从事的方向,索性就在美国继续申请一个研究生继续读,不要以为美国的研究生真的是为了研究课题而设定的,毫不夸张地说,80% 以上的人读研究生都是为了找工作,想做研究的,本科毕业就直接申请博士了。研究生在美国找工作相对于本科生来说要容易,而且有一些政策上面的优惠,另外,研究生读出来最多只需要 2 年,有的甚至 1 年。在美国读研究生的这段时间,是我真正开始认真对待自己今后的职业发展的时间。

从小到大,做什么事情总是慢别人半拍。总是先看周围人怎么做,自己才会去尝试。研究生时期看到周围的人都在选修计算机的课程,课下挤出时间刷题找工作,于是我也跟着做。由于,整个大学加上部分研究生的青春岁月都献给了通信无线电,我在计算机这个领域没有什么基础,很多东西都得从零开始,当然不否认有一些相通的东西,但是真的比较少。还记得研究生时期,计算机的课程遭人疯抢,我选到的是一个高年级的算法课程,课程开始后的第二个星期就直接上动态规划,当时我连哈希表是什么都不知道。就这样,跌跌撞撞总算毕业了,然后开始找工作,基本上理工专业毕业,在美国找工作只能找计算机相关的工作,因为这个职业缺口大,而且很多跨国的大公司都缺计算机方面的人。

还没毕业就开始投简历,找工作,准备面试,前前后后投了 1500 份简历,简历修修改改了二,三十次,可能是当时的政策问题,加上自己的专业并不是计算机专业,收到的正式面试也就不到十个,找工作差不多找了有 6 个月,最后去到了一家不到 10 人的小公司,算是给我的第一次找工作的历程画上了一个句号。

回到标题,为什么要出发?为什么要成为一个程序员?不管你认不认同,在出发之前,我没有过多的深思熟虑,我只觉得跟着大多数人走会比较保险,我只知道这个行业可以有一份还不错的收入,至于我将会遇到什么,我并不清楚。我那时也不晓得该怎样才能学好计算机专业,如何才能在职场中发光发亮。踏入社会那一刻,我才知道,我是净身出户。。。


成长

小公司并没有太多的成熟技术,而且有时候还要一人担多职。在第一份工作里,我顶着一个 Software Engineer 的职称,干过全栈和运维工程师的活,还干过产品经理的活。刚入这一行对什么东西都没有概念,只要是分配到了任务,都不思考一下就接过来干。道理很简单,钱不能白拿,虽然工资也并不高。

在入职一年左右的那个时候,公司的管理层出现问题,身边的同事一个接着一个的走,我才意识到形势不妙,但是困于身份问题,一时半会还走不了。记得从那个时候起,我不再看重工作任务的投入和产出,我知道我肯定是还要踏上找工作的旅程,于是平时没事的时候就学习计算机知识。我开始接触各种技术专栏,写总结,在平台分享自己对技术的认知和想法,我感觉我从那个时候起,才真正开始成长。有句话说得很好,只有当资源极其匮乏,境况极其糟糕的时候,才明白什么是幸福。我当时的感觉就是,如果给我 3-5 年的时间,再加上一个还不错的平台,我可以学很多东西,足以成为一个领域的专家。我很相信 滴水穿石的力量,也始终相信有些东西短时间看不出来,但持之以恒就能见证奇迹。我喜欢分享,喜欢分享自己对技术的认识,喜欢分享那些发生在自己身上的真实故事,我也喜欢听别人的故事。故事背后,你总能看到或是学到一些不证自明的道理。真正的成长其实就是在这样的反复交流,总结,思辨和践行中获得的。有些东西急不得,心放慢一点,反而比较快。

本科不是计算机专业,研究生也没有系统的学过相关知识。只是到工作那会,我才开始给自己定下一些学习目标,这些学习目标基本上都是计算机学科的基础课程,比如算法与数据结构、操作系统、计算机网络,还有编译原理等等,我知道只有把这些硬核的东西都啃了才有所谓的基础。万丈高楼平地起,不怕东西多,而是怕失去了耐心和坚持下去的勇气。本身就不是计算机功底出身,如果在半途泄气,那在这个职业中我可能见不到相对精彩的世界,也难爱上自己选择的职业,如果连自己选择的职业都谈不上喜欢,那么你的大部分时间就会在碌碌无为和彷徨中度过。有的人会说,我本身就不适合干这一行,我对写程序不感兴趣。我不否认有些人没有相对严谨的逻辑思维,无法写出合格的程序。但是我知道很大一部分说这话的人其实并没有实实在在的投入进去,他们没有沉下心去做,没有去反复练习,反复实践,就着急得想看到结果。因为初心就不对,你很难知道他们感兴趣的究竟是最后的结果还是这个职业,或许编程这个行业只是他们达到目的的一个手段,他们的成就感其实并不来自于编程本身,那技能和思维能力的提升对他们来说也没有特别大的吸引力。


历炼

在这个行业里,我总共有过两次求职阶段。第一个阶段是在刚毕业那会,第二次是在最近。相对来说,第一次要更加痛苦一些,还记得我第一次面试的场景,在一轮当中,有两个面试官面我,一个负责提问,另一个负责观察和记录。面试官说话语速比较快,我听不是太懂,当时自己也很没自信,说话总是结结巴巴。全程下来,感觉自己就和面试官不在一个频道,我就看到那个记录的小哥边记录边摇头,同时脸上浮现出很不好的疑惑的表情。

老话说,万事开头难,其实这并不是没有道理的。刚做一件事,或者刚接触一个领域,我们没有经验不说,还往往会对所需要的知识或技能掌握不够熟练,而且我们也没有一个很好的前进方向。更可怕的是,这个时候我们还总喜欢和别人比较,因为一比较你就会发现自己处处不如人,而且有些时候甚至会觉得,自己再怎么努力也达不到周围人那样的高度。其实,个人觉得刚开始的比较是最不值得的,也是最容易让人困惑的。这就好像一个刚刚扎根不久的小树苗,向上看,周围的树都遮盖住了自己,周围的树都比自己高比自己壮,这个时候你受环境的影响,很容易做出一些急于求成、拔苗助长的事情,你很容易对自己抱有一些不切实际的期许。其实这个时候更应该做的是深深的沉淀,深深的扎根,为以后的成长尽可能地做好充足的准备。比较,只有在你到达到一定高度的时候才有参考的意义,因为只有到那个时候,你才知道哪些才是名副其实的参天大树,哪些是值得你仰望和学习的榜样。这是需要一个过程的,当然也不会太慢。

在第二个求职阶段的面试中,我表现的就相对有经验些。在面试之前我会准备好一些素材,或是相关的真实例子,在面试中,我会去分析面试官问一个问题的意图,面试后,我会去针对每次面试做的不够到位,不够理想的地方进行总结分析。从结果来说,第二次也是比第一次要好得多。第二次比第一次做的要好的原因并不是我面试经验更加丰富,当然也有这方面的因素,从根本上说其实是心态上的转变,我知道面试的随机性很大,跟面试官有关,跟岗位有关,跟你的运气更加相关,一次面试并不能说明什么问题,我需要关注的并不单单是面试的结果,而是从这个面试当中是否能学到一些有价值的东西。因此,我不会过于看重结果,我只关注的是自己在这次经历或者是历炼中是否有所领悟,有所成长。

在职场中遇到不如意的事情,或是经历挫折其实都不可怕,你需要做的只是回忆一下自己当初为什么要出发,当时的期许现在是否已经达成,没有的话就积极的去寻找问题,解决问题吧。人身处黑暗中,看到的一切都是阴暗的,千万不要在这个时候给周围的事物或是自己贴标签,这往往仅仅是你的猜测,你的想象,你的未来其实并没有你所想象的那样糟糕。


继续上路

说了这么多,最后还是要继续,毕竟我还是对未来我能看到的风景充满期待。有些人说干程序员这行比较简单,成天就坐在那敲敲代码,开会就动动嘴皮,随随便便高薪就到手。还有些人说,干程序员这行吃的是青春饭,30 岁不到就成了 40 岁的样子,肚子大了,头顶秃了。。。其实这些都不准确,很多时候我们不能一分为二地看待事物。在我看来,你最后活成什么样子,到达怎样的高度,很大一部分是由你的三观,以及你对工作生活的态度决定的,和你所选的职业并没有本质的关联。总之,你深信是正确的一些东西,就努力去做,去坚持,相信时间会告诉你答案,到了某个时刻,上天也会为你开路,到那时,你会发现,其实一切都刚刚好