从象牙塔学生到美团开发社畜,工作一年,谈谈经验及感想
前言
2019,不知不觉已经给上海某厂搬砖一年多了。打开牛客讨论区,看着大家从投简历、跑面试、刷面经、选Offer……两年,回到更加热闹的讨论区也丝毫不感到陌生。
2018年入职某厂后,回牛客只发过几次内推帖,也推了不少同学🤣。这次回来想给即将成为社畜走向人生巅峰的大家写点东西,无奈腹中无诗书,不知从何下笔,只得拼凑一些文字,碎碎道来。
简介
本人2018年本科毕业入职上海某厂从事基础架构已逾一年,先后负责公司中间件与治理系统的开发。由于是在基础研发部门,日常的工作与一般业务部门有些出入,本文主要给大家分享一下。如果有对基础研发感兴趣的同学可以私聊我哈~
关于工作
技术体系
在学校的开发真的很随心所欲,想用啥用啥。
但企业里一般都有严格的规范,作为一颗螺丝钉,我们只能选择融入。
比如我做SDK开发时,为了考虑兼容性,必须使用JDK7开发(大学时就用8了没想到这辈子还有机会用7。。。)。以前喜欢用开源组件换着用,现在企业开发一般有统一组件,比如消息必须用Kafaka,配置中心必须用zookeeper等。甚至对于变量的命名,都要与团队保持一致。
大厂一般还会有一大堆自研组件,比如阿里的sofa,美团的cat,这些组件可能在外面完全没有机会接触,都需要慢慢上手。甚至很多时候觉得自己比新员工的唯一优势就是,更熟练地使用公司系统🤣。
技术包袱
承接上一个问题,大厂一般不太喜欢直接用开源组件,因为他们用不了。在学校做项目的时候,一般选最流行的架构,Kubernetes 配套搞起来。在公司呢,发现连docker都用不起来😅(公司当时还在用vm)
。
大厂的架构一般成型很多年了,开源界很多新东西新概念不一定能兼容老架构老系统,再加上一堆自研组件的存在,大厂身上的包袱越来越重。而且不同于学校的小项目,这些包袱清理起来涉及到很多部门的利益(很多组件按开源架构做就被取代掉了),甚至不是领导一两句话就能解决的问题。
工作节奏
成为一个社畜不是一个渐进的过程,从签合同的那一刻起就已经把自己卖了。刚毕业那会儿,某日早上醒来非常非常想睡回去,非常非常不想工作的那种。但是不行😫,想到不上班就要扣钱,就会乖乖爬起来去上班。一周5天工作日,不带休息,项目比较累的时候确实会喘不过气,但是没有办法,签了合同就只能好好工作。
假期真的很少很珍贵,工作之后没有寒假暑假,过年甚至只有一周假(超级不适应!!),所以每个周末都十分珍贵。
在学校的时候可以学累了摸鱼休息一会儿,在公司就真的不行。感觉领导和同事随时盯着你(然而并没有),看着旁边专心敲键盘的同事,非常不好意思开小差。这种节奏很累,但就是社畜的责任吧,毕竟拿钱办事。
加班
互联网大多要加班,不加班的同学真的很幸福。8点以后才下班的人,基本丧失了白天的活动能力,因为下班时间比较晚很多事都做不了,晚餐跟朋友聚一聚,回家打几把dota,都成了奢望。特别有时候加班到10点,一般通勤到家差不多11点了🤣,基本就洗洗睡了。熬夜?不存在的,第二天还要上班呢!
在此墙裂建议大家租在公司旁边,减少通勤成本。我刚毕业的时候下班需要坐地铁,回家大概需要45分钟,加了一天班拖着疲惫的身子挤地铁真的身心俱疲。
可能有的人比较崇尚奋斗,为公司奉献,相信努力一定有回报,但我觉得社畜和公司就是简单的雇佣关系,没必要搞太复杂。同届进来一个同学在业务那边天天加班到深夜,结果18年寒冬试用期前一周被公司优化掉了,下午收到通知,第二天直接走人,资本就是这么无情。
兴趣与钱
上学的时候真的很喜欢编程,经常研究各种新技术、新特性。曾经破解过校园网、搭过博客(现在还在写咕咕咕🤣)、写过爬虫,满腔技术热情。但工作跟兴趣真的是两回事儿,工作后基本就缩在项目的技术圈子里,没有接触其它技术的机会,可能很快就会失去新鲜感。下班到家,敲了一天键盘的我看到代码就想吐,已经无力再捣鼓自己感兴趣的东西了。
而支撑这种工作的动力非常简单而粗暴——钱。互联网确实是高薪行业,但程序员真的有钱也没时间花。以前认为年轻可以为钱多吃点苦,现在想想多那点钱换自己自由时间不一定值得,因为多的钱也没时间花。
薪资方面,互联网行业是真的会倒挂!而且非常严重,可能明年新员工入职的时候我的薪水才涨到跟他们差不多的程度(是真的)。
健康
做开发的长时间面对电脑,眼镜真的挺难受的。久坐+没时间锻炼很容易发福!键盘敲多了手指真的会酸,办公室待久了皮肤容易出油长痘痘,外卖吃多了营养很差,大家一定要注意身体。
关于基础研发
底层知识
在基础研发的工作主要是跟各种架构、中间件打交道,比如 Kubernetes、注册中心等,可能很多同学在学校中就听说过或者用过它们来开发,但估计很少人直接参与过这些组件的开发。
我刚进公司就参与到公司的RPC框架开发中,在此之前我对RPC的了解仅仅局限于使用。是的,好用就完事儿了,好的基础组件就是能对用户屏蔽技术细节,但开发人员则不同。RPC的开发需要对网络、序列化有深入的了解,我不得不翻出大学时的计算机网络,再去看tcp协议,三握四挥,捡起这些业务开发中“不常用”的知识。
所以做基础组件开发所获得的技术成长是毋庸置疑的,在这里你永远不用担心成为 CRUD boy。但相比之下缺少业务接触,容易绑死在技术这条路上。
严格要求
一个业务的bug,可能会影响一个业务功能;一个基础组件的bug,可能会影响公司的所有业务。但凡基础组件出了事故,都是灾难性的。基础组件的开发就是在针尖上跳舞(所以基础组件删库也是最容易的),所以谨小慎微也不为过。
做基础研发还容易被业务的同学甩锅(逃),在出现性能问题总是会先想到我们😂,所以基础组件的日志、埋点都非常详细,就是为了确保每一个问题都能定位,防止用户甩锅。
鞭策
基础组件很容易被拿来比较,比如RPC框架有很多,做得不好用户就会喷,还不如直接用开源的xxx呢🤣。所以做基础组件是一直被用户鞭策着前进的,因为你的用户就是公司的同事,那天伺候不好说不定就找到你工位来了hhh
甚至新组件开发完后,业务同事不一定愿意用🤣,还得像推销一样到处宣传,拉客户,毕竟没人用的组件没有绩效的。
需求
基础组件一般没有做不完的需求,甚至经常愁需求🤣,这跟业务开发差别很大,所以我们可能相对地轻松一些些(年终奖可能也少一些)。
基础架构 VS 业务开发
这应该是问得最多的……实在没法一两句话讲清楚,两者只是各有千秋,并无孰优孰劣。我们部门的对外资料有一句话非常形象,“基础架构就是公司的水和电”,我们提供最底层的资源支持业务开发。基础架构面向的大多是公司的开发同事,所以在研发流程、质量要求、业务价值上都有别于一般的业务开发。
不过这都是理论上的理想情况,实际各厂的对基础架构和业务的划分五花八门。很多厂发展时期人力紧张、业务繁忙,没有专门划分基础架构,很多架构都使用开源组件,简单设计,这一般与业务开发是同步进行的。只有现有的架构不足以支撑日益增长的业务需求时,才会抽调人力搞基础架构。所以很多中小厂的基础架构部门非常简单,甚至没有基础架构部门,大家就不必纠结啦。还有某T厂因为历史原因,各事业群泾渭分明,都发展了自己的基础架构,这样的结构导致了T厂内部架构一直很混乱,也是从今年开始号称要着手统一各事业群内的基础架构(据说)。
另外,是不是业务部门就不能做基础架构开发呢?当然不是啦,业务同学奋战在一线,往往更能发现开发中的痛点,我厂就不乏许多诞生于业务部门,后期再交接到架构部门的架构组件。此外,上文讨论的都是比较泛用的基础组件,某些业务(如金融业务)需要业务特定的一些基础组件,他们也会组织业务线内的“业务基础架构部”。
上海租房
真的很贵,仅次于北京吧大概。一般都是合租,合租小次卧2k3k,主卧2.6k3.5k这样(体感)。一居室比较贵,一般3.5k+。
来租房最简单是找中介,链家、自如等房源很多。想要找性价比高的可以到豆瓣上找找个人转租的房子,比较随缘。
了
链接:https://www.nowcoder.com/discuss/332659?type=0&order=4&pos=7&page=2
本文首发于微信公众号:程序员乔戈里
如果是头条用户,可以在我的头条号程序员乔戈里后台回复 资源获取价值59998元的编程和考研资料
觉得文章不错的欢迎关注我的WX公众号:程序员乔戈里
我是BAT大厂后台开发工程师,,专注分享技术干货/编程资源/求职面试/成长感悟等,关注送5000G编程资源和自己整理的一份帮助不少人拿下java的offer的面经附答案,免费下载CSDN资源。