前言
- 大家好这里是阳九. 一个普通的文科转行的全栈码农,最近也是拿到了蚂蚁的offer,给自己这些日子做一个总结。
- 这是一个大学文科生自学转码进大厂的故事, 希望能在这个寒冬给大家一点正能量
- 没有什么不可能的, 即便是文科生, 外包出身,只要方式方法得当也可以进入很好的企业。
- 精进技术, 参透业务, 处好关系,共勉。
毕业即失业 – 2021
2021年 也就是我的本命年
可能大家的本命年都如同渡劫一样, 我的本命年也过得并不顺利,
疫情回国-毕业失业-行业崩塌-被迫转行。
我的大学,是在俄罗斯度过的痛苦折磨的五年, 所谓痛苦, 无非就两种,精神上的,肉体上的。 而恰恰这两个都可以在我的大学里找到。
- 碌碌无为, 明知自己不喜欢自己的专业, 看着时间流逝却不敢退学重修
- 天寒地冻, 吃穿住都成问题的无聊国外生活
当时的教育机构<X东方>蒸蒸日上, 我费尽心思联系到一个已经在某东方功成名就的姐姐, 从某东方的管培生开始做起, 毕竟专业对口。
然鹅在我考完了物理教资后, 国家三道红线一下, 它没得了。
从我万分厌恶的”语言学-小语种教育” 专业毕业后, 我马上就面临着毕业即低谷的危险。
我正式进入了失业大军
自学转行 – 2021.6
同年五一长假, 某高中的好兄弟跟我一起吃了个饭, 说”要不要试试转码,从前端开始学起,入行比较简单。” (好兄弟一毕业就成功冲进了华为,现在已经是华为云的技术组长了)
同年6月,思来想去,我正式开始了计算机的学习。
基本上是996式的学习(应该不止), 基本上每天早上跑去某巴克坐着, 一坐一上午, 一下午, 直到打烊。
一开始是奔着考研的目的去学的, 四大件刷起来。 后面放弃了考研, allin前端准备先工作, 处找网上的视频学习, JS CSS HTML ……
打开了<H马程序员> 没错,就是那个”学IT,到H马,月薪过万!” “pink老师教你学什么是div”
第一份工作 – 2022.3
这个时候我已经学习了8个多月,觉得自己可以开始找工作了!
这个时候, 我记得应该是学完了HTML,CSS,JS基础
vue2使用/源码课程, 手写Promise, ES6 , react使用, , NodeJS基础 , 计网基础,算法基础 等等…..
去找工作, 找了一家中厂外包。我如实跟面试官说我0经验自学, 面试官问完发现我JS基础还不错, 就让我混进来了(其他外包同事基本都是实打实1-2年经验)
三月 ,我正式成为了一个前端码农。
有没有发现我忽略了什么? 是的, 我不知道什么是webpack
记得当时我在公司想自己写点东西,(原生JS html) 但是我不知道怎么去打包js文件,我还觉得奇怪 明明我写了import export 却不能用呢?
隔壁的同事跟我说 “有个东西叫webpack”
之后我手忙脚乱的用上了webpack, 每次改完代码,都要重新跑一遍build
隔壁的同事说 ”有个东西叫webpack-dev-server, 可以热更新”
“……….”
不知道同事当时会不会抱怨 ”怎么招了个这种人进来, 钱还跟我一样…….”
步履维艰
技术研究
某天,我盯着宛若魔法一样的webpack的打包流程出神, “这玩意内部做了什么呢? 我能不能写一个自己能用webpack?” 我想着。
由于自学期间手写MyPromise的时候就希望它能像Promise一样工作, 也大体实现了,我跟隔壁同事说:
“你等着,我要写一个webpack出来”
同事: “你这刚工作没几天, 先好好写业务吧, 琢磨这些干啥? ”
“我说到做到!”
同年5月, 在各种翻阅资料, 阅读源码后, 我写了一个真正可以使用的webpack出来
“不然再写一个React框架吧 ! ”
同年7月, 在各种翻阅资料, 阅读源码后, 我写了一个真正可以使用的简易react框架出来
“不然再写一个webpack-dev-server吧”
“不然实现一个React优先级调度吧”
“不然再加点其他功能吧”
“不然用自己的React搭配自己的webpack写一个网站吧”
……
之后我在手搓轮子的路上一去不返,基本上完成了工作中的业务,每天都要在公司研究到好晚才走
(大部分时候是十点半, 因为这个时候打车便宜, 有的时候会忘我搞到凌晨)
大体套路就是, 断点调试阅读源码, 跟着写把架构代码和核心逻辑写出来
基本要求就是 能够在我自己的框架体系下,成功运行核心功能。(总而言之就是 必须能用!)
一个程序, 从简单的看使用文档, 到看原理文章, 到读源码, 到自己能手写一个简易可用的, 每个阶段都是完全不同的理解层次。
手写一遍,并为了使用而解决内部的各种bug, 其理解程度和记忆深度是和简单的阅读完全不同的
你造出来的轮子, 原理会深深刻在你的脑子里。
-by 不月阳九(我)
而后我逐步在我的前端体系内加入了各种手写的工具
“微前端?乾坤?microApp? 研究一下? 写一个!”
“react-router? 路由? 研究一下? 写一个!”
“redux?thunk?react-redux?状态管理器? 研究一下? 写一个!”
“react-query? 公司在用?研究一下? 写一个!”
…….
其中体系最深, 研究最久的手写项目目前有三个
手写React 手写Webpack 手写VSCode 欢迎大家来我的github踩一踩 github.com/lzy19926
裁员与面试-2023.9
在这家中厂外包混了一年半, 由于我确实比较卷, 部门主管对我的工作态度非常满意, 某一天吃饭的时候跟我说 ”咱们十月份外包转正答辩, 你走个流程, 我内部直接给你过了”
九月底, 主管把外包的同学叫到会议室 “很遗憾, 上面下的指标, 咱们部门外包要全部裁掉”
由于能力确实还行, 就内部操作给我换了一家外包公司, 外包到另一个部门, 负责跟原来差不多的产品。
换了部门,转正涨薪自然也就没得咯, 于是乎就开始了简历投递,咱也不能一直在外包干不是? 虽说是金九银十, 简历也是投了不少, 但由于一年半的经验, 确实没什么小公司要我,干脆投个大的,于是就找朋友内推了腾讯, 简历还过了
至于一个一年半的外包仔为什么敢去面腾讯微信组的T7级岗, 我也不知道。反正我一面就被一道mid-hard的动态规划算法给干死了。 面试官对我的评价”对React,webpack了解的不少, 算法是不行的”
我记得我兴冲冲的跟面试官说”我自己手写过一个简易React框架” 腾讯面试官问我:“mini-react大家都写过,网上那么多,你写的有什么特别的地方吗?”
“……”
井底之蛙
腾讯面试完, 深刻意识到自己的不足,与大厂人的差距, 决定再好好修炼半年等明年金三银四
算法攻坚
算法攻坚 , 算法是去年12月就开始刷, 当时自己规定是一周刷5个mid, 一般是上午先写算法, 业务忙的时候就周末补,养成习惯。 (easy没意思,hard不会写,做个mid小王子也不错)
23年12月的截图
恶补基础
由于在工作上除了前端还写NodeJS和Golang, 我某一时刻意识到, 还是得补一下计算机基础, 即便它们对前端涨薪没有短期作用, 但我确实是一个偏长期主义的人。
于是乎重新捡起了工作前未完成的考研课程, 硬刷了B站王道考研的四大件, 好好啃了《操作系统导论》 《深入理解计算机系统》这两本大部头,基本上每天六点下班后,都会在X巴克坐到十点半关门。
内推蚂蚁-2024.3
到了今年的金三银四, 我也是刚好满两年工作经验, 是时候出去投投简历了。
网上推荐的做法是”环境差,不要裸辞,要骑驴找马” 但我毅然决然裸辞复习。为的是不给自己留余地, 不成功便成仁。
由于之前跟部门的各组长关系还不错, 跟他们聊天时我提了一嘴
”我就是想进大厂”“要不要试试阿里?正好在招人,我给你内推。” “好的哥 ! ”
阿里是三轮技术面 主管面 HR面 , 各种原理手写题, 疯狂压榨我。(其实第二轮稍微卡了点, 差点没过)
岗位是蚂蚁国际,对留学生和外语加分不少, 第一次用上我多年的留俄 小语种学习经验。
你的浇灌总会在你想不到的时间和地点结果,不要抱怨努力没用, Just Do It
后面的事情就顺理成章了, 体检, 发offer,背调,约入职时间(写本文的时候还未报道哈,报道后可能没这么多时间写文了)
关于学习
- 学习要讲究方式方法, 艾宾浩斯式复习, 定期笔记整理, 多读好书, todoList分段实现…等通用方法都需要落实到位, 我个人还喜欢通过手写各种工具来学习
- 这些是我两年来开的学习科目 , 看的技术书籍记录成的笔记
一些经验建议
- 由于我是转行, 我深知如下两点
- 经历过一次失败的爱情,才会发现眼前人的优秀, 工作也是一样
- 其实别的工作与行业并没有你想象中的那么好, 都是围城
- 失败了这么多年我就学会了一件事情 心态放平,不断试错
- 阿里HR面时问了我一个问题:“如果我们最终没有录用你,你会怎么做?” 我说
我的人生从十年前的高二就开始走下坡路, 到现在都没有完全爬上来, 从痛苦的大学生涯到行业底层-外包, 我一直都在底层徘徊, 我应该也没什么好失去的了
这次进不去, 那可以再面其他的公司,再不行就再修炼半年, 总是能进去的。
- 关键点在于找到自己真正喜欢的事情,
- 我本身高中是一个极度偏科的人,并非应试教育想培养的全能型。在写码的时候我真的是可以一坐一整天, 吃饭睡觉脑子里都是代码。 而在做自己不喜欢的事情的时候会相对厌烦。
- 所以如果你找到了能让自己陷入心流的事情, 不要犹豫放手去做吧。
- 多关注人
- 对于程序员来说, 不能光醉心技术和业务, 多关注人是非常重要的!
- 程序员群体真的是相对单纯, 高素质,好相处的。或许他们不擅言辞,但大都心地善良 (相对其他行业)
- 即便是程序员, 在工作上也是要解决大量人的问题(如文档, 沟通, 很多技术也是用来解决人的问题)
- 跟你的同事,上司,产品,测试伙伴打好关系, 多聊聊天, 聊技术也可以。 工作能顺利推进的同时也能获得更好的资源 (比如传授你技术秘籍, 内推,工作机会)