十多年专科程序员的流水账

188 阅读11分钟

被裁一个月了,闲来无事,决定说点什么,

不是诉苦,就是流水账。

我的职业经历,刚好贯穿了整个互联网尤其是移动互联网的爆发,

这是我的幸运,也是所有互联网从业者的幸运。毕竟,跟我同龄同背景的人,大多数还拿着三五千的工资,在某个小地方过着平凡的生活。

我当年的高考成绩是超过二本线的,但是刚过线是没有二本学校读的,碍于当时眼界有限,没有选择三本而读了一个二本学校里的专科,记得在知乎上看到过一个笑话,说的是五百多分念专科,我没有笑,因为我就是其中之一。

其实念书的时候没啥感觉,直到找工作的时候徒然增加了很多烦恼后才焕然大悟。

这里也没有什么后悔的意思,只是每每想起,有些遗憾。

至今还记得第一份工作,那是一个十来个人的公司,本质上跟互联网毫无关系,只是老板看到网络经济的兴起,也想自己搞个网站发展在线业务。于是我就被招进去了,整个公司就我一个懂技术的,其氛围就可想而知了。但和现在无数年轻人一样,那时我心怀梦想,一心想着精研技术,幻想着某天有出头之日。就像小说里的张无忌,有朝一日能练就神功,一鸣惊人。

很快就发现现实的残酷,在小公司,你想学,你想提高,你连方向都不知道。在这家公司,我的工作就是建站,利用cms套模板。其技术含量可想而知,少量前端知识即可胜任。但是这家公司给我最大的权利,就是"自由"。老板看到同类的产品,直接问我能不能自己也做一个,并不限制任何技术,正因如此,我得以自己学习自己想学的任何东西。从前端到后端,从asp到php,从一个打杂的一步步接触到编程领域。

最终我在这家公司待了近2年,并不是对它有感情,而是实在找不到别的工作,迫不得已。

随后,我跳到一家教育公司,员工数千,但技术毕竟不是主业,所以技术并不强,周围的人也跟自己差不多,但是起码此时有了一个稳定的环境,我的程序员生涯也从此展开。

在这家公司,我的职位是php程序员,我终于是一名程序员了。但是从始至终,我的php完全是自学的。我第一次使用的框架就是现在大家所鄙视的ThinkPHP。因为我之前的经历只是建站,用的是cms,跟编程并不是一回事。所以开始学习还是挺费劲,别人的代码也看不懂,我只能按照文档依样画瓢,花了一周多的时间,才勉强可以参与开发。在慢慢熟悉的过程中,我隐约感觉有些不对,这个框架对程序员掌控的非常严格,你只能熟悉它的文档,完全按它的api来,纯粹就是个流水线工人,就像一个拉磨的驴子,看似走了很长的路,但还是没有跳出这个小天地。我不喜欢这种被人掌控的感觉。于是,我决定自己写一个框架。那时不像现在,当时其实是没啥资料的,我花了两个星期就完成了这个框架,底层模板用的是Smarty.还补充了缓存模块,db模块,utils等。很庆幸这个决定,它让我避免了某个框架之中无法自拔。框架写好了以后,就是想办法让它用起来。好在在教育公司,有很多活动页。其他同事喜欢用thinkPHP做一切,而我则喜欢用自己的东西,喜欢这种掌控感。直到我离职,只要是我独立负责的项目,我都用的我自己写的这套东西,就这样,磕磕碰碰,修修补补,我不断的完善它,给他添加各种功能,它也日趋完善,我还用它重构了自己的个人博客。

我最终在这家公司只待了一年多。我在这里正式由一名打杂人员,成了一位程序员。在这一年多的时间里,开始的头3个月还算充实有收获,但是渐渐就感觉瓶颈来了,周围有几个干了三五年的程序员,跟我并没有明显差距,我似乎一眼看到了头。php这门语言太简单,天花板太低,很难有核心竞争力。想脱颖而出只能靠大厂大项目,但是进大厂又需要履历,履历又只有大厂才有,似乎是个死循环。我一时茫然又不知道下一步怎么走,那个时候,编写php扩展被很多人认为是高深的技术,我也花了点功夫研究了一下,感觉就是一个依然画瓢的过程,按照规则写就行,并不太需要高深的c语言功底,于是很快放弃了这一条路。巧合之下,我接触了前端框架angular,感觉眼前一亮跟jquery很不一样,我将其引入了一些公司的临时性的小项目,而且它的运行逻辑引起了我的好奇,我觉得我应该自己写一个类似angular框架,实现数据监听和模板渲染功能,我花了不少时间研究他的设计原理,实现思路,还手动写了一些demo,一步步去实现它的各种功能。但是那时候我代码功底不够,眼界有限,并没有写出我心中的那个框架,直到3年后我才写出一个类似vue的简易mvvm前端框架。但是,这段经历为我打开了一个新的世界,也是我后面不断造轮子的开端。

如果要评论我在这家公司的心情,我觉得应该是既自大又自卑,一方面我觉得身边的其他PHP同事基本水平都不如我了,我有些膨胀。但自卑的是,我做的这些东西都是小儿科,我渴望去一个更高的平台,然而没有哪家靠谱的公司要一名专科生。

因为前两家公司都不是互联网公司,技术并不是其核心竞争力,个人成长实在有限,周围一个能一起学习的人都没有,于是我很快就跳槽了。

那个时候千团大战兴起,我很快就找到了一家不知名的团购公司。那个时候千团大战,各家公司争相斗法,一时好不热闹,可惜没过多久,一年多以后,公司烧了一些钱后,就不行了,资金链断裂。于是我只能跑路。

这个时候我信心满满,自以为自己技术突飞猛进,可以找一家不错的公司。然而三个月的面试过程中发现,我想的太简单了。过去我做的那些东西在大公司眼里,就是小儿科。再加上自己又没有突出的履历,所以处处碰壁。万般无奈之下,我不能这么拖下去了,只能妥协,于是又找了另外一家k12教育公司。

经过这三个月找工作的打击,痛定思痛,我意识到背景的重要。在互联网行业,绝大多数人的能力是拉不开差距的,而且个人能力也无法判断。只有名校名企背景才能让你脱颖而出。名校,我肯定不会有了。但是名企,我可以有。

我下定决心要去名企。我就像陷入魔障一样,在第二年的下半年,我广撒网,投了几乎所有大厂在招的职位,这些公司自然是全都失败了,有的1面,有的2面,有的3面,还有的到了4面。我把答不上的问题都一一记下,回去都逐个弄清楚。这些面试经历让我感触最深的,是思考方式的转变。在小公司,我们要做一个东西的时候,往往会预设一个立场,基于某个软件去实现一个个功能,比如mysql,比如redis,比如solr。所做的工作往往就是拼凑各种查询或读取语句,最多再加点简单的缓存。一切逻辑都是依赖某个软件开展的。这种野路子显然是无法支撑庞大的业务的,也是不可能胜任大公司核心项目的。在随后的工作中,我有意识的去刻意锻炼自己的设计意识,更宏观的去看待问题。在做业务前,我会先去画流程图,做模块拆解。思考着当前数据量和用户规模如果膨胀十倍,百倍,万倍,如何承接住,并且不进行大规模的重构。很多小公司的人以为数据量大了,加机器,数据拆分就可以了。但这其实只是自己的想当然。如果你仔细分析就知道,绝大部分的项目是无法通过加机器扩展的,几乎只能重构,每次重构都是推倒重来,稳定性自然也是无法保证的,只能加班人肉改代码。我利用公司的项目练手,一边学习一边实践。

也许是双创的提出,再加上移动互联网的爆发。我终于拿到了第5份工作的offer,一家家喻户晓的公司,负责一个核心项目。至此,我的程序员生涯才算真正迎来曙光。

很多人因为跳槽频繁被业界嫌弃,殊不知,那些背景不太好,缺乏核心竞争力的人,职业生涯就是不断试错,从一个坑跳到另外一个坑,循环往复,直到绝望,放弃挣扎。

我一度以为自己终止了这种跳坑循环,虽然多年以后看起来当年还是太天真了。

但在当时,我获得了一时的稳定,我在那家公司待了四年多。我珍惜这来之不易的机会。在这四年里,我没有给自己设立任何边界,我想做的事情立马去做,无论与工作相关的还是不相关的。那个时候,部门人手不是很够,只要有3分把握,我就自甘奋勇挺身而出,一路学习,打怪升级。我也因此升职加薪,还获得了公司股票。在这期间,我尝试用go去实现服务化接口,用Python去做报警和数据监控导出功能。用pyqt给产品运营做各种小工具。闲暇之余,还自己去实现手里的各种工具,比如自己用c++写了一个webservice,在此基础上写了一个底层用rocksdb的存储的redis。我还写过一个c++的kv数据库。当然,还有前面说的那个简易版的vue。

总之,这4年多的时光充实而又快乐。我再也不是当初的菜鸡了。我觉得自己可以学成下山了,我选择了离开,去了一家更大更有名的一线大厂。

为此,我来到了我的第6家公司。平心而论,在这家公司待的并不开心,虽然工资给得多了很多,但是个人成长却十分有限,也许是个边缘部门,工作内容简单而又乏味,周围的同事履历都很亮眼,但技术并没有强到哪去。关键是公司的条条框框太多,也不像前一家公司有更多发挥的空间。

一直到了2019年底的时候,我似乎嗅到了互联网寒冬的来临,那一年互联网发生了大裁员,新入职的人越来越优秀,这对我产生了很大的危机感,作为一个三十多岁专科学历的大头兵,没有混到专家岗,也没有混到管理岗,裁员肯定是首当其冲,一旦被裁就被动了,不如自己提前准备着。当时的想法很简单,避免危机的方式自然是找一家业务稳健,护城河够深的公司。

于是,我来到了现在的公司。

但是千算万算,几乎一夜之间,就让这一切灰飞烟灭。

其实文件刚下来,裁员是预料中的事情,

中间也投了些简历,但是收获寥寥。此时只能期盼着自己是留下的那一小撮。

但是该来的还是来了。

找了一个月工作,才发现世界变了。

学历加年龄,几乎判了我的职业生涯的死刑,大部分岗位我连简历都投不出去了,少部分投了也没有回复。

幸好还有多年积蓄,再加公司的补偿,一时半会还不至于饿着。

明天如何,我也不知道,只能继续寻找下一份工作。

也许明天,也许一个月,也许一年。