当程序员三周年成长历程

387 阅读9分钟

前言

How Time Flies,当程序员已经三年了,是时候做下记录了。我是菜鸟一名,这里只是记录一下我的成长简史。鄙人2020年本科毕业于广东工业大学计算机学院。先吹一波,昨晚广工篮球拿下全国总冠军,牛逼!2020年3月份的时候拿到字节offer,因为疫情和毕业设计,到2020年6月份才加入字节跳动。

大学期间

说下为啥当初选择了计算机这个专业。在我读大学之前,家里一直没有电脑。第一次摸到电脑的时候,是我上县城读初一的时候,记忆犹新。当时跟着我同学去网吧上网,我第一次去,连电脑怎么开机的都不知道,也不好意思问,在那里琢磨了好几分钟,最后还是别人帮我开机的,原来开机按钮长在脚下的主机处。后面一直热衷于去网吧玩游戏,特别是QQ空间里面的和飞车等等。读高中的时候,基本就没怎么触碰到电脑了,只是偶尔电脑课和英语听说课,才会去摸一摸电脑。所以对电脑基本没什么认识,打字也慢,我的想法是在这个社会上,不会计算机是不行的,越不会就越要克服它,所以我是自己很早就想选择计算机这个专业了。

上大学之前买了一个3600的电脑,联想,后面后悔了。我的建议是Windows不要买低于5000的,不然用起来就一个字卡。第一门学习的语言就是C语言,期末考交作业的时候,我直接提交了一个快捷链接,老师说我没有提交作业,再不补上去就要打不及格了。当时真的连快捷链接和文件夹有啥区分都不知道,以为提交了快捷链接就是提交了文件夹。大一到大三大部分时间都在学校田径队中度过,没有好好学习,但是不后悔,也很充实。大四的时候要交专项设计论文了,我同学说去github找找,我居然不知道github是一个什么东西。

到了大四我才知道我荒废了学习,在网上查了一下,前端和后端哪个上手比较快,都说是前端。为了赶上专项设计,毅然决然地选择了前端。学习了一堆HTML、CSS,JS,JQ,Vue。当时还跑去面试,面试官问了我一个问题,JS有哪些基本类型,我居然说出了浮点类型,当即就把简历还给了我,说我不适合他们公司。我回去以后觉得以前的学习都像在囫囵吞枣,没有注重细节,所以发誓从头开始学习JS。后面也重新补充了一些计算机的基本知识,网络、操作系统,数据结构和算法这些。

经验总结。大学的时候要好好珍惜时光,刻苦学习,不能以为网络、操作系统这些课没有用,线性代数和高等数学也得好好学。也许学校的课堂上是无聊的,但是可以找一些线上课去学习。课本上的知识是远远不够的,比如课堂上并没有一门Vue的课程,我们最好是自学。可以多参加一些学校的编程社团。大四的时候,一定要多去面试,多去学习。

2020年下半年

我面试的是前端工程师,但是进入的是一个游戏部门,跟我熟悉的Vue没有一点关系。因为前端是用cocos开发的游戏,所以只需要用到JS、TS,以及开发一些脚本和工具需要使用到Nodejs。前一个月,过得真是煎熬,所以东西都不熟悉,比如我github都还没有用熟,公司内用的是gitlab。中午也没怎么休息,看看一些新手文档给自己充充电。前面几个月,主要在做游戏工程这一块内容,写代码也出现了很多错误,由于没有业务经验,做出来的工具往往不好用,没有人愿意使用,更别说推广了。到了年底,有幸参加了一个春节项目做前端开发,也会负责项目游戏前端工程,这也是我初次做项目,初次和别人合作,初次了解了一个项目开发的整体流程。

经验总结。绝境往往能逼出人的潜能,笨鸟就先飞,勤能补拙。做工程之前,一定要多了解业务,只有知道业务的需求和痛点,才能做出更好的工具。一定要勤于分享,最好的学习方式就是把自己学会的知识教给别人,这样能让自己所学的知识更加巩固,还能让别人指出自己的错误之处。

2021年上半年

春节项目之后,又回来做工程了。在充分了解业务之后,在做工程这块有了很多感悟和想法,同时在设计上和代码实现上也有了很大的进步。这时候做出的工具,更切合实际业务,加上自己乐于分享,就有更多人愿意使用这些工具。后面一段时间一直是业务和工程一起做,为业务的开发提高了一些效率。在这个阶段中,对TS更加精通,很多奇怪的泛型都能够写出来,且对Nodejs的标准库的使用,也更加熟悉了。同时也看了很多开源仓库的源码,如eslint、koa。

经验总结。不要蒙头做业务,要会思考,指出痛点。多去看一些好一点的源码,能够提高自己的编程水平。在做工具之前,先去看看业界内有没有类似的工具和方案,借鉴一些,是用它们的还是自己开发一套。

2021年下半年

告别了前端,选择了后端。先后负责开发了掘金的三款游戏,《神奇知识闯关答题》,《海底掘金》,《数字谜题》。虽然说现在已经下线了,当初下线的时候我真的不舍啊。其实在我大学的时候,毕业设计的服务端就是使用了Nodejs,因为这是前端开发一个最好的选择。所以,我这次很选择了Nodejs,公司也很类似于Koa的框架,上手很快。经历这个阶段之后,自己已经有能力单独负责一个简单项目的开发了。同时也在为自己做一些服务端的学习规划,如掌握好Go语言、掌握各种常见的数据存储等等。

经验总结。自己负责一个项目,这个经验很重要,我感觉也是个人成长最快的时候。自己划分模块,设计数据库存储,定义协议,与上下游沟通等。给自己做规划也很重要,为自己梳理一个树状图,哪个时期要学习什么。

2022年上半年

因为公司的主流语言是Go,所以自己我完全从Nodejs转成Go了。先后在抖音上开发了几款小游戏,抖音上的流量还是比较大的,还会跟进项目的压测。这时候的我已经喜欢上Go语言开发了,它写起来还是比较简洁的,非常容易上手。这个阶段也了解了很多服务端的基础组件,服务发现,代码编译平台,服务部署。也学习了一些Linux的知识。

经验总结。广度和深度都要发展一下,比如在语言层面,很多语言都可以去了解一点,但是要选择一门语言,去深入的分析它,甚至看它的源码实现。

2022年下半年

这个阶段也在负责抖音小游戏一些服务端项目的开发,包括国庆项目、春节项目这种流量很高的项目。历经了这么多项目的开发,自己也总结了一套服务端的业务框架,用熟悉的框架干活,就是事半功倍。这个阶段也特别注重代码的可读性,可复用性,可扩展性等,也非常注重自测。同时在软实力方面也有了较大的提升,包括与人沟通的技巧,怎么去协调一件事等等。

经验总结。一定是好好总结做过的项目,然后总结成自己的框架。在写代码方面,可读性,可扩展性等都太重要的,代码不是写给自己看的,在写代码的时候,可以想象如果别人看我的代码,那他能不能理解。软实力也很重要,沟通、口才这些最好练好一点。

2023年上半年

这个阶段除了正常做一些服务端的业务开发,也会做一些服务端工程化,把一些通用的功能抽离成库,或者通用服务。也做一些脚手架工具,方便的初始化一个项目框架模版。这个阶段非常注重微服务的学习,什么Docker、K8s都去了解了一下,后续还会去翻它们的代码去看看。最近也在了解一个操作系统的开发,和进行汇编语言的学习。

经验总结。要提高开发效率,就得有人搞工程,业务和工程是相辅相成的。英语很重要,很多网站都是英文的,虽然可以谷歌翻译,但是总感觉差点意思。我的建议是学习英语,直接看英文版本的。想要发展就不要浪,好好学习底层的知识,咸鱼除外。