序
大家好,我叫 404。404 是找不到,是 null,是无,是没有。这个名字蕴含这我对于技术的空杯心态,永远充满好奇地去学习,学的东西越多,越觉知识匮乏,越觉得深不见底,就像进入一个知识荒原。我目前就职于蚂蚁金服,是一位 P6 小同学。兴趣爱好嘛,喜欢跑马拉松,跑遍全球可能比我写代码更重要。
本文想和大家分享我的程序员经历,现在的困惑,和对未来的想法。主要内容有 5 点:
- 专科跨专业学习生涯
- 阿里前端实习
- 阶段总结:如何学习技术
- 当下的困惑
- 未来应该怎么走
1 跨专业之路,选择你要走的路
我是 2016 年毕业的,2018 年 3 月才到蚂蚁。08 年读专科的时候,学的的机电一体化,可谓热门专业,还可以搞搞挖掘机。不过那个时候已经开始涉及数控编程了,会有一点编程的东西,有 VB 课程,有单片机编程,不只是用电烙铁焊接下电子元件。
虽然高中懵懵懂懂过,但大学真有想过“随心而欲”啊,要走自己的路。慢慢的就发现了自己的兴趣在计算机方面,尤其是去女生宿舍给女神辅导计算机二级,特别有动力,如今女神的娃已经上幼儿园了,我还没结婚,这是个忧伤的故事。
我那个时候流行考公务员、考教师资格证,但我当时不知道哪里听说了“专升本”这几个字,然后就去准备了,也可能是为了曲线就业吧。
关键是可以跨专业!那个时候其实有点虚,考数学、C 语言还有英语,最终拼一拼还是考上了,第 2 名录取。过了一年多,一鼓作气,加入考研大军,选择研究生院校的时候其实也很纠结,我一个专升本的和那些四年本科的咋比啊?导师歧视怎么办?但是既然要考研了,就冲着 985 去了,拼了!最终还是考上了华科的硕士。
有的人说我很励志,其实没有,运气成分也挺大,软件工程专业和计算机专业,我专升本和研究生都选软件工程,为啥?因为很多人觉得软件工程弱,不屑于报,还有人觉得软件工程学费贵,不想报。我不在乎别人的看法,先拿到入场券再说,我就冲这个报,录取的概率就大了,事实上概率确实大,当然还是要稍稍努力一把的哈。
2 去阿里实习啦
我 2013 年 9 月研究生入学,第一年要把所有的学分都修完,还是比较忙的。时间一晃就到了 2014 年春,突然听到还有“春招”这个词,原来指的是比较有名的公司来学校笔试、招聘。
又到了很虚的时候了,本科才上了 1 年左右的计算机专业课,另外的时间准备考研去了,计算机基础其实很薄弱,也没做过啥项目,去面太容易被挂了。
当时前端面试要准备的技术栈相对比较少,我可以快速准备,提高通过率。那个时候很多人对前端的理解是脚本,其实已经工程化了。我不在乎别人的看法,先拿到入场券再说。所以,我决定,选择做前端!
第一家面试公司就是腾讯。技术薄弱,没有面试经验,不过还是撑到了 HR 面,但最后面试官们,综合决定,把我挂了。估计是技术弱,估计是我 16 年才毕业,怕我实习几个月又回学校了。
再过 10 天左右就是阿里的春招面试,我能翻盘吗?拼一下!我根据腾讯的面试总结,没日没夜地在慕课网(不打广告,但真心感谢这家网站)上学习前端知识,那个时候网站上只有前端的内容。我还用当时比较新的技术 angular 做了个小的 app,放到 github,并且跳转到自己的域名。
阿里实习面试的时候,就是拿着这个 app 去吹的,把我的代码设计,想法都说了说。最终如愿以偿,去了阿里云实习。
2014 年 7 月 7 日,我去阿里云实习报道了。大家可能会有疑问:你研二不用给导师做项目吗?16 年毕业的 14 年春招可以进吗?
先回答第一问题:其实,我找导师的时候有被小小的歧视的,因为来自江西的普通学校,还是专升本的,我找的导师把我推给了另外一个导师,但这是我的幸运之处,我这位导师虽然资历不够深,但是非常尊重学生的个人意愿,虽然导师想让我去华为做 C ++ 实习,但是我委婉地拒绝了,最终答辩的时候,导师还是很负责地给我指导,没有刁难我。
回答第二个问题:我是专硕,16 年 3 月毕业,所以春招时我在阿里官网填简历,有填“虚假信息”,填 15 年 12 月毕业,因为当时春招官网明确说要 15 年毕业的。所以我顺利地有了笔试、面试机会,当然在面试的时候,要诚恳地和面试官说明为什么毕业时间要往前写,因为我确实没课了,可以实习很久,能拿到 offer,我就干。
3 阶段小结:如何学习
这个小结存粹是我的个人经验哈。我想了下自己专升本、考研、然后短时间内准备前端知识应付春招,还是有些学习心得可以分享下的。
知识体系
当我刚开始接触这个行业的时候,我几乎是各个词汇都需要查一查,但是这样太零散了,所以我就系统性地学了一门 C 语言的课程和数据结构的课程,都是自己在网上找的视频。我基本只看了一遍,所以其实没有很好的地掌握,但这一遍给我带来的最大收益是,让我有了自己的知识体系,知道往那些方向去深入,那些小的知识点去攻入。两次升学考试和准备面试,我都会有自己的“个人宝典”,不是收集的,一定要是自己积累的。
总结性学习
很多技术文章,直接抛问题,然后开始讲解决方案,同一类型问题,各有各的不同,所以解决方案是有差异的,没有标准的。就拿幂等问题来说,其实很多文章面临的问题都不一样,解决方案也不一样。当在这样的文章看多了,就要开始总结了:这些解决方案虽然不一样,但是能不能梳理出一个此类问题的思考框架出来,所有的解决方案按照这个思考框架来走,虽然最终设计出来的解决方案不一样,但是有一个好的思考框架,可以让解决方案更加完备。大家可以参考我自己应对幂等问题时候的思考框架:《分布式幂等问题解决方案三部曲》,这篇文章还有幸被思否官方公众号转载过。
分享式学习
总结性学习,可以说是在学习的过程中多提炼和归纳,让自己具备更高的抽象能力。分享式学习,则能够提高学习内容的留存率。
分享式学习需要准备的时间更长,需要阅读的内容更多,需要和别人交流,思维碰撞,自然在大脑中留存的时间更久,即便忘记了,回顾下之前的分享,也能很快将知识捡起来用。
常见的分享式学习就是写作、小组分享啦,当然还有论坛讲座,那就是大咖的段位了,我表示没经验。
4 当下的困惑
我前端实习了 8 个月,15 年 3 月辞职回学校和同学创业了,经济寒冬,千股跌停的年代里,创业不易,最后只是赚了个经验,那个时候也没去参加 15 年 9 月的校招,所以我毕业时没有去大厂,而是春招的时候临时找了一家互金公司。
不过我毕业后找工作是做后端了,不做前端了。说句前端不太喜欢听的话,我个人觉得后端的厚度更大,在蚂蚁,P8 的前端没见几个,P8 的后端一大堆,P8 以上的几乎都是后端。
16 年 7 月正式开始工作,18 年 3 月来到蚂蚁。面试经历也挺坎坷,这里就不说了,这里有一份我的《面经》,可以作为参考。
聊聊本节正题,我当下的困惑。
大厂是个围城,很多人想进来,也很多人要出去。我目前是在做信贷业务,确实大部分时间都在处理业务相关的内容,所以我的主要矛盾是日益增长的技术增长需要同稀缺的个人时间之间的矛盾。业务部门其实用的是中间件部门的东西,所以很多时候没办法直接参与基础的研发。好就好在大厂的技术氛围可以,学习资料也很好,够你学。
困惑归困惑,还是要去自己去解的,毕竟中国的程序员确实是有中年危机的,容易秃、容易胖,没了工作还容易穷。
解决这种困惑,我觉得无非两种思路:
(1)提供工作效率,有更多的个人学习时间。
(2)直接去基础部门,做基础研发。
其实业务部门和基础研发部门也是相互羡慕的,业务部门技术弱业务强,技术部门技术强业务弱。不过我个人倾向于技术同学只要业务部门呆上一短时间,成为某一个业务领域的小专家,这样你写出来的文章,举的例子才有点实用性。至于技术深度,只要你对技术本身有一定的热爱的话,一辈子的时间够你去追逐。
幸运的是,我现在的 leader 不错,我不想转部门。我先在是在工作效率上逐渐提高,慢慢提炼出自己的高效工作方式,于此同时,着眼未来的规划,来跨过当下的困惑。
5 未来该怎么走
快 30 了,这个问题要考虑了,很多同事们一样都在考虑中年危机。中年危机其实很正常,谁叫咱中国的程序员多,又爱拼呢,人口基数多,市场竞争导致嘛,不要抱怨中国这种环境。用赵本山的话说:怎么你到哪儿,哪都大环境不好,你是破坏大环境的人啊。
对于未来,我没有特别远大的目标,但还是要做的 list 还是比较清晰的,就是想让自己的技术工作不那么枯燥,也不至于太穷。
(1)希望能去国外的公司工作一段时间,存粹是想让职业生涯变得有些意思,有更多的体验。
(2)继续以 404 的笔名在社区输出自己的思考,不求能够帮助到多少人,只求自己能够通过文章分享的方式,获得技术成长。
(3)能够有一个自己的作品,有一定的人在用就好。
就聊这些啦,其实也是在工作之余回顾下自己的过去,畅想下自己的未来,分享下自己的感想,欢迎大家一起来交流。
本文参与了 SegmentFault 思否征文「一起分享你的故事」,欢迎正在阅读的你也加入,分享你的故事。