小姐姐20岁后的人生轨迹是 保研直博 —》 退学 —》 码农…
おかあさんの唄安佐里 - 「おおかみこどもの雨と雪」オリジナルサウンドラック
保研退学
要说能保研并不是因为我是学霸。而是因为大学时期本专业方向没人学习,从小家里穷为了奖学金突击学习成习惯了,所以就还算牢牢的守住了绩点。直博更像是脑袋发热的决定,理由是大学时期无所事事惯了,多读两年能换个博士好像赚了。如果让我评价我那时的自己绝对是无知还爱作。。
一年研究生的生涯我还是蛮努力的,因为大四时总算开始拥有了人生想要的目标,当时很想出国
。所以开始读研时就反复啃各种专业书籍,论文等。倒没有锦上添花的作用,因为研究生还稍微换了下专业方向,差不多到了退学时才觉得半只脚可能入门了吧。
退学当然是因为读的天坑专业材料系的。读研时状态很不好,生活学习都乱糟糟的没有打垮我,被导师计划发配到边疆小城市也觉得没关系,但是该死的实验 实在是太毒了,带着自己买的放毒面具都没用。那是段一天天忍不住时时刻刻掉眼泪的岁月。
后来有个声音说,退学吧试试当码农吧。一开始内心是拒绝的,但晚上已经身不由己的搜索各种码农的信息了。B乎给了我很大信心。
倒不是觉得自己真能变身程序员工程师,而是觉得总比某天走投无路的好。
但长这么大只学过VB啊,没有信心只靠网上视频教程找到工作。还是去了深圳的培训机构,尽管是一下子背着几万的贷款,但是当时从毒实验到深圳几乎整年蓝天白云的地方,幸福感确是不言而喻的。培训机构的课程虽然有些侮辱学费,但对我这样的零基础小白,却给予了一个获得直接帮助和洗脑的环境。
工作周折
开始找工作环节了,我当时应该啥都没学会。嘴上说着HashMap设计模式,但我绝壁是写不出来任何设计模式的代码的。我现在甚至怀疑当时CRUD也没咋理解吧。
当时面了四家,但好像还拿到了三家。因为能给我面试机会的都不会是啥好公司。我还想再面面,但培训机构也怕到手的鸭子飞跑了,没钱还他们债可怎么办啊。
就这样入职了一家灰色产业性质的菠菜公司,属于某天收益额全靠项目组内几个开发贡献的。我只能感谢我的无知和幸运吧,试用期他们把我开了,因为我一个月内都无事可做。而后他们也顺利倒闭了。
第二份工作算是能成为 CRUD阿姨 的一个拐点。总算面到了一家有些技术性的创业公司,觉得有技术性是因为他们问的问题我都不会。。一面看脸二面不强烈反对三面CTO谈情怀,我当时老实巴交的说我不喜欢谈梦想我爱看科普,然后就被当场拒绝了。。但过两天又给我打电话了,阿姨脸皮算什么,马上推掉其他外包性质p2p类的offer了。
试用期也是异常艰难,我的前半月几乎都在和maven作斗争。我特么构建了半个月总是构建不成功,当时也没有从网上找到正确答案的能力。旁边的小伙伴被我搞了半个月忙的有时也懒得鸟我了。另外还让我重构一个新的基于SpringBoot的项目,有些原来的下载邮件等功能重构项目没提供支持啊,试用期被产品怼也甚至把开发都搞的有些无语了。产品总监后来和我说,还没怎么见过被产品怼的这么没气势的开发。。后来下了军令状,让我大概半个月内写几十条小需求的订单下载功能。阿姨加班加点的提前完成了,总算没有再被滚蛋了。
回过头看这些经历都充满了很大风险,可是当时的心境还蛮平静的,大不了再重新面重新来。温饱有问题的时候就只有解决温饱的目标
,就这样我还算有不错的心态。
我其实一直没忘了提高自己,只是第一年像只无头苍蝇一样。我知道转行没有基础就想先打打基础。。买了编译原理/算法导论这类的书,到现在编译原理我都没翻完 序。。也买了kindle看《深入理解计算机系统》,结果看着看着就砸脸上了。。那段时间真正对我有所帮助的书可能是《Java8实战》,因为这本书里面的东西是当时实实在在写代码能反复用到的。而其他类似看Spring/博客等之类的一扫而过的学习方式,可能没有看懂就翻篇了,带来的更多只是一种心理安慰。
后来我终于不想整日写bug改bug了,但好好想想自己真没面试能拿得出手的。于是便开始看《Java并发编程实战》和《Java并发编程的艺术》了,结合着网上的源码分析文章。同时也通过抄片段的方式对并发有了一知半解。觉得可以面试稍微有得说了。
能得到第三份满意的工作全靠运气,感谢技术群里内推我的小哥哥和面试官。因为这一份工作我太闲了。。可能大多数人并不想长期无事可做,而我正是因为这段空闲的时候才有更充足的时间提高自己。
当时虽然没有很理解一些技术概念,但好歹也零零碎碎的通过技术文章等方式接触过了。熬过了第一年的温饱问题,这时候我开始问自己有没有可能通过两年的时间进一二线大厂
。我也有思考自己的处境,我想写博客也是为数不多能给自己加码的了。
可是刚开始哪写的出来啊,我连看别人博客都看的迷迷糊糊。但是尽管没人看也至少写的让自己看懂吧,我总算是稍微克服了自己看不懂就翻页的坏习惯,慢慢地有些沉下心了,有些理解一些概念和原理了。
其实最重要的是从一开始就要清晰明白这么做解决的是什么问题,出发点是什么。这样才不至于在问题或解决方法中迷失。
我一直都看不懂红黑树,有一天我耐下心来想把它搞懂。结果我从早到晚看懂了左旋右旋,添加查找后继等,可就是看不懂删除。我不明白为什么会有这么多删除情况,为什么特定删除要做特定的删除步骤。到了傍晚,我都要决定放弃请教别人了。我特么总算意识到,特定的删除步骤是为了保持子树的平衡,如概念上所定义的每棵子树上黑节点数目必须相同 等。然后再看每种删除的步骤就顺理成章了。
这一年我看了Netty/Spring系列/Disconf/ZooKeeper/Canal/Redis等源码,也看了《深入理解Kafka:核心设计与实践原理》等不少技术书籍。写了ZooKeeper系列的源码分析文章。虽然是第一遍边看边大体按照代码流程顺序去分析的,回过头来看会觉得写的不够清晰,甚至一些地方还有错误。但是通过ZK我比较理解了 基于Java NIO的Reactor模型/心跳维持的长连接/序列化/数据的全量和增量存储/ZAB协议/Curator等的实现。而这些内容都是可以触类旁通的,如mysql的WAL机制也是数据的增量存储设计。
从一步步了解了是什么,还需要时时问一句为什么。为什么实现心跳要这么设计,为什么要用这种设计模式,这么实现的优缺点是什么,如果让我做我该怎么实现….通过不断反问,模仿,锻炼,思考总结我相信我可以有所提高,目前我还是写不出好代码的渣渣。
托ZK和老天的福,后来我拿到了阿里某个BU的offer,不满三年完成了进大厂的目标。刚进去时是一种放松的心态,尽力完成本职工作后,我下一个目标是什么。我特么都进大厂了,我实在想不出想要的目标了。有人说你要朝着375奋斗,朝着P7奋斗。可我看了看周围P7的样子,我并不想以后成为他们那样。并不是说他们不够有钱,他们可有钱了。而是我不喜欢他们的工作状态,我也不喜欢我在阿里的工作内容和状态。虽然只要你想,阿里有的是资源让你学习,让你进步。
我知道我内心哪些不想要,哪些想要。我知道我再跳出阿里我有多被动,可我还是跳了。一路来我因为冲动也做出过不少“坏”的决定。但人生只有一次,我不愿意委屈当下的自己。就算未来的我生活的可能有些窘迫,但活着总有改善的办法。
现状
现在的我在某个小厂做着我比较喜欢的工作,而且每周都要写一篇文章让我觉得有热情,有收获,也有压力(希望不会太快打脸:)。