工作3年会遇到什么事

大年初一,起草一篇总结性质的博文,太久没有写类似的文章了,感觉提笔忘语。这篇文章是想记录一下我从2017年工作至今的工作感想的,严格说到4月份才满3年,不过四舍五入也就算了。3年对于一名程序员来讲刚刚摆脱了菜鸟,是步入资深前的中间状态,还是比较资浅的,有代码总量积累的问题(到不是说一定要代码多,基本量要有保证),有遇到的情况是否充足的问题,还有各种与工程本身没太大关系的事情。因为换过一次工作,先后两个工作都有相当涉密的成分,所以技术细节不便多讲。主要是说说我自己的一些流水账吧。

从毕业找工作开始

我本科是学习软件工程的,现在学校貌似没这个学院了,可以理解为为了扩招计算机科学人才而创的一个专业,教学大纲、专业活动与计算机科学无异。研究生远渡重洋去到了英国的爱丁堡攻读人工智能,并额外接触了大量程序语言理论的内容。最开始很想找到一份用函数式编程语言的工作。

撰写了简历后开始海投很多的小众工作,也大都石沉大海,幻想初步破灭了。所以转战通用的场景,最终去到了Citigroup的投行部做Web开发。工作的寻找有很多的挑选条件,比如薪酬、工作内容、发展性等等。这些东西网上已经有很多了,我这里着重说说个性化的内容:

  • 因为老家天津的雾霾在15、16年极度严重,染上了支气管炎,吃了一周抗生素。通过调查判断,5年内无法治理干净。于是决定南下寻找工作,也就是出于个人身体健康的目的。而直到今年,2020年,冬季的北京、天津依旧有大规模雾霾的问题
  • 或许是被西方世界洗了脑,或者是留学期间确实比较刻苦,总熬夜学习、赶作业、赶论文,所以工作不想再重复那种痛苦的过去了。绝对拒绝996,所以只考虑外资企业,主要是美资。Work-Life-Balance这一点Citi是不错的
  • 个人更喜欢离老家不要太远,所谓父母在不远游,虽然天津和上海并不算太近,但是比华南地区还是近不少的
  • 还有些不太刚性的需求:工作内容多元;处在更现代化的地区;有地中海风格的气候;等等

可能到此会被觉得我「小毛病真多」,哈哈哈,无所谓的,其实每个人都或多或少在不同侧面有「小毛病」,只是我碰巧在这些方面有考虑而别人没有而已。不信,找个最亲近、最信赖的朋友或家人帮你分析分析,无论是生活上还是工作上。可别小看这些貌似鸡毛蒜皮的小事,因为也许将来的某一天正是这些小事困扰你呢,可谓人之常情,要懂得自己的人性。

而上述罗列的条件不全是满足的。

Citi时代

菜鸟的态度

有上进心的菜鸟在刚开始工作的时候都是铆足马力的,我是没有经过入职培训直接接手工作的,被当成了半个社招的员工。偶尔会有加班的情况,但也遇到了几乎所有新人都会遇到的问题。

一开始我还是不太适应的,先从最简单的环境部署开始,出于安全考虑Citi的任何需要设置环境的地方都要用一个CMP系统提交order,我疯狂的安装了很多软件后才开始正式的工作。

第一行代码是写JUnit单元测试,这也是我在第一个岗位上占用相当大时间做的事情。借此机会也学习了Mock、H2 DB等单元测试和集成测试常用的技术。刚步入工作,我对项目的印象就是规模大,惊叹项目的复杂度,也犯了很多马虎的错误,比如在本地可以跑但是部署后不能运行的问题。而且刚工作我不太明白工作中有这么多需要记住的事情,导致我总是请教旁边的大哥,弄得人家挺不耐烦。

所以饭得一口一口吃,一步登天是不可能的,即便现在回过头看我们的项目不算大,但是也非一朝一夕可以掌握的。特别是刚拿到BRD的时候,根本看不懂上面所诉说的。即便偶尔请教我们自己的BA也是一样。

某段时间甚至还产生了「都不知道自己到底是强还是弱,百无一用是书生。学校的东西能让我受益,但是至少目前不是特别见效」这样的想法。也有我的问题我自己的理解和交流确实也不是特别到位。而这样类似的问题我之后也遇到过不少,现在看来或许大部分可以通过有效的交流改善。

大概过了3个月,接到部门大老板的指示,让我在兼顾工作的同时参与人工智能的科研项目。直到最后我才明白这意味着什么,有时候不是看上去那么简单。我决定好好搞AI,便在这个项目组做了大约三个月。期间加班不断,忙忙碌碌挺充实的。

虽然半年不到的时间,对于一个菜鸟工程师所应学习的东西我都尽了力,技术上必要掌握的、人际上该如何沟通,生活上怎样合理安排时间适应不同于学生时代的快节奏。期间还是有所抱怨,对工作内容也好,对于人事也罢,总的来说能从大家身上学习到不同的东西,比如责任心、合规、对新技术的追求、好学等等。也让我明白社会与学校的诸多不同,或许这就是成长吧。一边抱怨着,一边感谢着。

裁员

到了8月份,噩耗来临,整个部门要被裁掉,我说不上是恐惧还是无所谓的感觉。也因此让我头一次体会到了危机感:永远要保持自己不被淘汰掉的价值,技术人员就要好好夯实基础。Citi对新人还是比较好的,被安排到另一个部门继续工作。

虽然工作时间不长,经历还是不少的。

转组

人生中第一次内转,依旧是开发Java,同时也要写一点JS了,不用于上一份工作的是这次的组非常的Critical,随时会有On Call的可能,因为涉及到数额巨大的转账,因此对于鲁棒性要求非常高。

在这里我专心做业务组的活,项目的规模、技术压力远超上一个组。比如我们在前一个组每次部署只要一个至多两个包,而且release的压力不大。但是在新组,每个月都有release,而且一次部署10个包很常见。

在这里,我第一次完整的实现了一个前后端的业务模块,尽管模块很小。但就是这样的小模块也会出现很多对于需求理解不到位而做错的情况,所以不要小看任何一件事,进步都是一点一滴的。大多数时间我做的事情也很杂,能感觉到项目的代码结构和技术架构都很出色,很多基础的组件都是完全自主开发的。为了能胜任工作,会抽空看书、钻研代码库,借由这个机会学会了很多常见设计模式,Workflow的实现,反射和多线程、DI、AOP、控制反转等内容。但是这个组的东西更杂乱,除了编码,我还要负责轮流进行Support,持续集成的任务。

更重要的是作为工程师,学会了很多技术,比如消息机制,我们自己实现Workflow,POJO automated test,AOP技术,封装JDBC,Java 8的函数式特性等。在后来的工作中,我做的Reconciliation协议和反序列化模块都是对这些知识的运用。一开始我曾怀疑自己的所学,但是随着工作深入发现良好的知识体系越来越重要。不断学习总不会错。

生活与梦想

换做10年前,我从没有想到过自己会考虑在上海定居。2018年的4月份,托福于留学归国人才的政策,我拿到了上海户口。差不多这个时候我们组的Leader,看起来会在花旗终老的人选择离职。虽然诧异但是也让我逐渐意识到工作的性质:又不是为国效力,我们需要做到的是尊重市场规律,我不太想继续做CRUD Boy了,就算我年轻气盛吧,觉得Web后台这个领域很容易望到天花板。一年可能太快,但我还是想做一做跟语言相关的工作。然后一边准备着,一般寻找机会,终于在入秋时收到了来自华为2012编译器与编程语言实验室的Offer。

我打了脸,去了一家可能更甚于996的公司。

转变

在Citi的一年半我转变很大,就拿接受了华为的Offer来说,我竟然接受了一家996公司。

我从一开始的厌倦应试,不愿意刻意准备面试,到被迫开始看面经。从毕业后就幻想再也不用考试,到明白人生永远都有测试,有时只是变换了形式。从不赞赏996,到明白中国当下的环境,要想活少钱多就加倍努力,努力到可以跳过这个阶段为止。而且财务自由不是打工可以获得的,但是打工这个阶段不是一般人家可以越过的。

对自己的技术更能看清其实际意义,不再只做看起来酷的事情,我可以等到时机成熟的时候将酷的事情发扬光大。没有完美的企业,也不存在完全一无是处的公司。

生活中,为了办户口也花费了相当的时间,深感比移民还难。混社会这一年半,更能放下身段做不起眼的事情。更明白先珍惜自己的付出是首要的,做好对的起自己努力的事情。

总的来说,整体还是向好的方向变化的,无谓的抱怨减少了,切合实际思考针对性的建设性的能力加强了。更能随机应变,比如在面对失败的时候,如何调整心态,活在当下。也更懂得处理人际关系,傻白甜不是做给老板同事看的,专横跋扈也更不能解决问题。或许工作的本质就是无聊,那如果这样的话应该以怎样的心态去努力呢。

雷军说过:

  1. 重点是如何选择,不要怕选错,选错是必然,关键是提高选对的成功率
  2. 顺势而为,站在风口上猪都会飞

第一份工作的经验

  1. 业务逻辑就是对所有细节的熟知,这个有一定技巧体系。即便不会反转二叉树,也能把业务逻辑分析得头头是道
  2. 好的老板不会一昧的画大饼,肯定先要体现经济利好。画大饼没有太大的实际意义,我大饼画的比你好
  3. 能做好本分工作不代表适合创业创新。工作能力的强弱也不与其为人处事的社会经验成正比
  4. 如果你温柔待人,便能得到相应的回馈。越优秀的人,所给予的反馈也越好,跟优秀的人在一起

华为时代

意想不到

意想不到自己打了脸,选择了一份996的工作。言归正传,这份996的工作一是实现了自己可以在编程语言编译器领域做事的小小梦想;二是所谓工程师,工程技术的能力一定要足够扎实,我想在先前实现业务逻辑工作的基础上更进一步了。希望可以去做技术性更强、更基础、更底层、更能锻炼自己的工作。

我于2018年11月26日加入华为,第一周是在东莞南方工厂的华为大学进行入职培训,培训期间每天早上都要进行军训,然后上一天的课,最后一天进行签约,华为在第一个月就会给员工先发一笔工资,根据入职的早晚会发半个月或一个月的数额,后来也遇到公司各种理由发个奖金的情况,比如当月双倍工资,比如20亿奖励等等。给钱多名不虚传。

也在这里收货了一份美好的爱情,😊。

前端项目组

培训过后我就回到了上海,此时已然是冬天,上海已经冷了。我被分配到了Maple前端组做编译器前端。Mentor很nice,指导到位,有些跟项目无关的技术培训课也是允许我去听的。隔年春天我搬到了外租的办公室,开始渐渐步入正轨,着手处理第一个项目,实现invoke-custom的Maple指令,其间最大的困难就是很少人对其有真正的了解,是我从论文中,从官方文档,从mailing list中一点一滴把细节抠出来拼好的。对于项目的难度预估也出现了偏差,好在最后顶住了压力交付给到了测试。

19年下半年初期开发一个前端Parser,自己设计简单的语法,无第三方库纯自研的。因为语法简单,不借助外部开源工具也不算难写,总体下来不到2000行代码。本来想试验用C++实现Parser Combinator,奈何无尽的CPS回调地狱,实现与调试的成本高,总的来说性价比过低,最终还是写了传统的解析器。期间也做了点开源整改的内容。

出差攻关

在华为出差不是新鲜事,但这个通知是在19年10月份某一周的周五,通知我时还不知道具体出发日期。转天周六我被拉到一个群里说是下周一报道。于是我在周六最后关头交接了全部的项目,并于周六晚上和周日一天收拾打包了全部行李。因为据说要来年3、4月份才回来,只好退租了房子,并把家当寄放在朋友家里。

然后风风火火飞到了攻关地(具体地点保密)。

在这里,基本上集结了实验室的精锐。大家都是计算机行业摸爬滚打过的,跟谁都有点聊头。一个刚刚入职的博士专门搞程序分析的,我们聊过抽象解释。好多专家都是来自各行各业,什么都懂一些。在饭局上大家还谈到了ACM算法竞赛,以前从没有跟同事聊过算法,其实实际工程中会有需求,华为最近也重视,全部工程师都要通过内部的算法测试。这么多学术界精英,也让我有了不断强化自己,不断学习进步的动力。

加班

19年12月,体检结果不容乐观,小毛病不断。因为出差劳累,甚至还通宵赶发布,拼死拼活解决了几十个issue发现还有很多。愈发觉得正式上版本的时候不暴雷是不可能的。更关键的是如果我累垮了,损失的是自己。所以每天晚上都去园区的健身房跑步,走椭圆机。周末偶尔也会打个篮球锻炼身体。

20年1月,如期赶上项目上线,做的是自动代码生成的技术。月底正常回家过年。

可能是加班太久,天天搞攻关,没有自己学习的时间,逐渐背离了可持续发展方针,正处在职业上升阶段,不学无术。这就是996机制的弊端之一吧。反观996,很多时候是Boss的错误决定导致的,这话听起来不负责任,可是很多时候加班确实没必要,改个方针,或者面临法务风险就要推到重来。也有非常多不是那么核心的杂活占用了80%的时间。我确实不想一整天都干活,特别是很杂的活,写着大部分人都有能力做、甚至比我做得更好的工作,因为真的太像是个工具人了。可是在团队内不得不承担很多责任,也如此才能有机会接触核心工作。

日常工作也总是会抱怨点公司的不人性之处。可还是一边抱怨,一边感谢着。现在对于工作的理解更多了,应了那句话,没有十全十美。华为的平台是真的广阔,有些事情非得是有了一定资源才能做的。比方说一个小而精的移动互联网初创公司,大抵是没有太大余力和必要去造很多的轮子。更没必要去专门开发一款通用语言的编译器(也有小团队专门开发新语言的,比如Hexa,Imandra.ai)。反观养得起研究所的巨头企业,就有很多这样的预研项目,非常适合热爱技术的人才。所以多的不说,就是鱼和熊掌的问题。

攻关结束

2020年2月,不巧又赶上了新兴冠状病毒肺炎,比SARS的潜伏期和传染性还要强。我在2月8号抵达东莞,还不清楚什么时候可以回家。这是我迄今为止做过的最痛苦的项目,项目的战略意义是非常进步的,可是用到的设计和技术专到不能再专。因为需求的独特性,充斥着匪夷所思的设计和实现,而且扮演的角色甚至还算不上螺丝钉,大概只是润滑油吧。其次是缺乏人道主义关怀,前后跨度6个月,鲜有能回常驻地的机会,更多的感受就是一种没由来的折磨。这也令我反思:如果做为员工得不到人道主义的对待时,又怎么可能全身心去完成任务呢。

2020年4月24日,终于靠自己的努力回到了常驻地。

生活

在Citi时期,每年15天年假,精神生活非常丰富。不论是Bilibili举办的演唱会,还是F1的车赛,亦或是初音未来,能去的都去了一场没落下。甚至还有自己的时间发展一项业余爱好,充充电什么的。而换工作后,一开始的的确确不适应,负能量逐渐多了起来。积累的压力多了,业余活动少了,精神上的放松也少了。可以说一夜回到解放前。

时间的压缩,不但在身体上透支,也在精神层面失调。对于自我的思索少了很多,每天就像个行尸走肉,名副其实的小螺丝。也竭尽全力的挤出来时间跟着公司大佬的脚步多学一点,业余摄摄影,偶尔外出上海转一转。

直到现在我都没有明白什么才算是规律的作息。我也达成2019全年都没有请调休假的纪录。不仅如此就连周六日都没有完整休息过,感觉周末不上班已经算休假了,甚至会遇到公假上班的情况,这一年过得可真累。

寄语

所有言论仅代表个人观点。希望在工作满5年的时候,再回过头看。技术、为人都能更上一层楼。也不要这么累了,平衡生活工作。