零基础商科转码,已经工作三年了,谈谈我的工作体验

avatar 810412
koi789
25206
80
说说我的情况吧,给地里犹豫要不要刷题转码的提供一些不一样的视角。

我的背景非常一般,女生,长期以来都是学zha。非名校,GPA也低,专业文商课,简历也很差,差到什么程度呢?绝对不是故作谦虚,当时想转码申请了一堆cs学校,结果全聚德。最后花钱上了一个刷题bootcamp(纯刷题,没有做项目),三个月的bootcamp,两个月投简历找工作,半年内转码成功上岸(二线大厂全职)。

刷题转码上岸这件事,我觉得我是运气占70%实力占30%,类似帖子已经有很多,这里就不多说了,我觉得我成功的原因有三点吧:
1. 当时就业市场非常非常好,opening非常多,还有很多contractor的职位,我自己也拿到了几个contractor的offer,积累了面经和自信,周围一起转码的朋友也都找到了工作,我也不是个例。运气分+1。
2. 我的学历背景是硬伤,但是印度manager不太看学历背景,招我的hm是个大水货,他自己也在划水,感觉他纯看感觉招人。运气分再+1。
3. 我的coding不差。三个月快速突击,我很少做hard题,我也根本不敢想一线大厂,只练习了easy和medium的经典题(转码期间我大概刷了300题不到),能在短期快速做到纯零基础到bug free,我觉得自己coding肯定不算差。二三线大公司,遇到印度组面试,题目基本都是easy medium,几轮coding面试我觉得自己都过的很轻松,最后拿了两个全职offer,都是印度组。
4. 我简历上有两年商科工作经验,投简历和面试的时候都说是SDE,编造了几个工作项目胡吹乱侃(现在想想当时编的项目真的很sb)。背景调查把我的真实title查的一清二楚,但是还是给我过了。运气分再+1。

(============分割线,下面是重点,顺便求加米。。。==========)

重点想说说我工作的这三年的体验,我用时间线来跟大家分享一下我当时的真实心情:
0. 入职前:
刷题用的是java,找工作的时候都是找的java岗位,入职前在github上下了一些repo,spring mvc,spring boot的项目。看的时候感觉天都塌了,因为一行代码都看不懂,看youtube感觉是天书,战战兢兢。最后入职前学了一下怎么操作git命令行,一些基础的bash命令。

1. onboarding的第一周:
因为是社招,简历上写的也是SDE两年经验,组员给我onboarding的时候,我也不敢随便乱问问题。onboarding的时候setup环境,下载java,setup maven, actifactory,下载一些常用工具(比如IDE,db client,postman,etc),连接qa数据库,setup remote debugger,编译和local run jar包。公司文档很不规范,每一步我都能出问题,有很多unexpected 的error,真的很痛苦。周围也没有能指点我的人,都是全靠google。

2. 第一份工作前三个月:
hm随便给我丢了一个任务,让我把一个06年的API,从Spring mvc改成spring boot,可以直接containerize然后部署到云上。说实话,工作三年后现在再想想,这种任务还是挺“challenging”的。要改十年前的老代码,spring mvc的xml配置也很繁琐恶心,最好推倒重写,但是可悲的是这是一个半废弃状态的API,完全没有任何documentation,没人知道这个API的request和response长啥样,代码中间很多很多莫名奇怪不知所云的业务逻辑。那段时间我天晕地暗地在youtube上学习spring mvc,对着06年迭代地一塌糊涂的API,看着不知所云的代码,和乱七八糟到处放置的配置文件,从最一开始编译成功(hooray!),到本地跑起来(hooray!),再到拿到正确的response和qa data(hooray!)。。。。。 其实还是很幸苦,最可怕的感觉就是没文档,没人知道这个API的业务逻辑,我也不敢问,就是一行行代码debug走着看。
第二个月我磕磕巴巴地把这个API转成spring boot打包重新部署(qa部署,我的refactoring一直没上线),并且重写了一个spring boot的版本(也没上线),第三个月,我在组里做了demo。demo之后,老板正式让tech lead带我,也把我拉到了standup和sprint planning的会议里。
这个时候我终于明白了,这三个月,我随时可能被fire,这三个月,是hm对我的背景和coding能力不信任的表现,他应该一直对我的背景耿耿于怀而不让我去做正式项目。好在我过关了。

3. 正式做项目的前半年:
是我自信心最爆棚的半年,见识还是比较浅,当时基本就是tech lead设计了架构,划分给组里每个人几个service自己去实现,那些service也就是一些crud(增删改查数据库)的API,非常简单。当时我的浅薄认识就是SDE干活就是写代码。而且有了之前的死磕spring mvc和spring boot的三个月我对spring框架的使用吃的还算透彻,OOD和代码写的很溜。项目deadline压力不大,我整天写代码,写完自己一遍遍review,一遍遍去精简,重新design,发的PR质量都很高。tech lead经常也会在code review的时候赞赏我的代码,让组里其他几个印度小哥refer我的代码去写他们的几个模块。当时真的自信心爆棚,觉得自己coding天赋异禀,还到处跟别人炫耀“别看我转码,其实peer根本看不出来我是零基础”。现在想想,当时真的太太太naive了。

4. 经历了reorg,换组去了一个不划水的组:
大概一年不到,公司部门reorg了,我之前组做的项目没人用,上线没流量,就这样不了了之了,组也解散了,被换去做一个更偏向infra的项目。这个时候我经历了一次规范的项目:PM提需求,TPM跟进进度,架构设计,开发,测试,部署,监控,需求迭代,等等。经历了这些,更是接触了更硬核的技术,就真的觉得自己太太太太菜了,连cs new grad都不如,甚至远远不如他们。当时深刻认清了自己的问题,也认识到了刷题转码的缺点:极度缺乏cs基础知识,比如网络知识,计算机架构(CPU MEM这些),数据库,各类中间件,等等对我来说什么都不懂。于是我申请了一个cs 的online master program,想着已经工作了是不是会好申请一点。可惜还是背景太渣,只拿到一个录取(一个几乎给钱就上的项目,学校一般,学费很贵)。
新组有十几个人,这一年我基本就是小透明,组里技术讨论完全插不上话,工作低潮期,产出也很低,半年没发几个PR。

5. 正式开始上online master program了:
学了computer architecture和一个big data的课,上了一学期修了两门课我就drop了。一边上班一边上课压力太大,课程压力很大,作业写的太累,准备final和midterm也很累,而且学费真的很贵,最后就不了了之了。学了些计算机操作系统底层知识。感觉没什么用,给我工作也没啥帮助。现在回忆下,知识基本全忘光了。

6. 但还是不甘心自己不如cs科班的new grad,报了一个国内的码农进阶网课:
当时组里的项目deliver了,公司效益不行,很多新项目都砍了,加上我在组里也不被重视,活不多,实在没事做,于是又开始了大规模自学的日子。这个时候其实我也很充实,学了非常多东西,读了很多框架源码,还很nerdy地手写了很多轮子(ORM框架,PRC框架以及各种dev工具),非常深入地学习了nginx,redis和kafka。理论积累有了,说话也开始一套一套地了(就是没事蹦出来一个听起来很高级很techie的词),但是因为工作项目scope太窄,理论没法应用到实践,这个时候就有点开始嫌弃公司了。当时我已经在公司一年半了。

7. 嫌弃项目,嫌弃工资,准备跳槽:
最后在公司的几个月,我几乎都在准备刷题了。时隔快两年重新拿起刚转码的时候刷的题,pickup很快,工作用的java,造轮子也写了很多java,easy medium经典题(前200题吧)基本都不需要怎么复习。但是瓶颈来了,这个时候自以为刷题还可以的我,明显感觉到自己的算法能力其实真的很一般。hard题做不出来,高阶算法和高阶数据结构不熟。这个时期看了很多youtube,可是写周赛和新题还是很吃力,最大的感觉就是觉得自己不够聪明,而且现在真的面试题越来越难了。因为疫情市场很一般,面了几个一线大厂都挂了,一些比较火的pre-ipo基本不给我面试机会(还是背景不好)。不甘心也没必要再跳去一个平级的二线公司,所以挣扎了几个月,最后跳去了公司X。

8. 公司X:
在公司X一年多了。在产品组,不是infra。刚入职的时候,最大的感受就是周围转码人真的很多,但是大部分还是从工程转的(之前二线公司的同事反而都是cs科班的)。公司有自己的一套系统,任何刚入职的人都要重新学,doc也很完善,对产品SDE来说,不需要底层知识,很转码友好。从onboarding到参加组会讨论和独立做项目,不特意说,peer是真的不知道我是转码,而且很多peer自己也是转码。再加上自己在前公司的两年经验和自学的知识,还可以mentor一下cs new grad。地里熟人很多,这段经历我就不多说了,到了这个阶段,基本就开始争取升职加薪,转码似乎是一段很遥远的话题了。

9. 现在和将来:
公司X名声还可以,给我的简历增色不少,而且工作满三年后(我在linkedin上把我的非cs经历都删了),recruiter的勾搭非常多,我也看到了很多很不错的机会。差不多真正到这个时候,我觉得我真的入行了,以后也更自信说自己是个qualified SDE了,也更自信跟同事share自己的非cs背景了(反正我的能力大家有目共睹)。

复盘一下自己的三年,稍微做个总结:
- 文商课转码真的不是一个遥不可及的事情,但是如果你转码入职,请一定要努力工作,努力学习,证明文商课背景也可以工作得很好,造福以后的文商课转码生。
- 刚转码比较适合去一线大厂,公司体系成熟,转码友好。
- 如果去不了一线,就去其他公司写写crud api,web api,写产品和业务逻辑代码,慎去做infra,向往infra的,可以积累点经验再转。
- java网络资料多,框架成熟,开源项目也多,适合转码并对技术有一定追求的人。
- java更好找工作,第一份工作是java的话,接下来刷题跳槽pickup会比较快。

还有什么问题,大家可以给我留言,我会尽量及时回复,再次求个大米 :)

补充内容 (2021-09-20 01:40 +8:00):
感谢大家的支持,表扬和鼓励!看到这么多肯定的回复很感动。楼里有些人问我bootcamp是什么,国内网课是什么,我的帖子不想代入任何广告,分享转码经验也不是我这个帖子的初衷,所以我决定不回复了(希望也不要私信问我)。再次感谢大家^_^
  • 355
80条回复