首页 > 2021:毕业一年总结
头像
mio4
编辑于 2022-09-22 15:06
+ 关注

2021:毕业一年总结

2021:毕业一年总结

距离20年本科毕业接近一年了,本篇是关于过去一年搬砖经历的思考和总结,并且对后续工作的规划。文章准备保持每年更新一次的节奏,汇总在Github:https://github.com/mio4/Java-Gold 

0x0 新手村

对于后端开发而言,很多学生在准备校招的过程中,都会参考培训视频或者网上的视频资源,手动实现一个电商秒杀项目、图书管理项目或者个人博客。在这个流程中,别人现有的课程已经给出了前端接口,也明确了要实现怎样的功能,我们不需要关心需求是否合理的问题,在完成项目编码之后(即在本地成功运行前后端工程项目),大部分人也不会将项目部署到云服务器,从用户的角度验证功能是否符合预期。

上述过程从根本上可以被定义为单人编程,在毕业之前大多数人的开发能力就停留在这个水平。当然,企业级项目的开发和这种玩具项目(toy project)是存在很大差距的。

比较幸运的是,在2020年毕业之前,我在三家所谓的大厂都实习了一段时间,在校招正式入职前,已经经历了三次入职、离职的流程,各种手续也轻车熟路了。实习经历对我最大的帮助就是对企业开发的流程有比较粗糙、浅显的理解,也对不同的工作氛围都亲身体验了一遍(双休、单休、大小周)。

前段时间和各种猎头交流之后,发现大部分公司都讨厌频繁跳槽的候选人,甚至会有一些强制的规定,例如每年5年不超过3跳,否则不给过简历关。所以还在校的同学可以尽量多跳槽,多去各种不同风格的公司体验,等正式工作之后,这种跳槽行为就很奢侈了。

0x1 挖坑与填坑

过去一年,基本上踩遍了各种新手阶段的坑:和产品需求沟通出现理解的偏差导致代码返工,忽略了业务逻辑的核心模块导致出现资损级别的线上bug,本来以为肯定不会出问题的几行代码修改也出了线上bug,以及冗余编码导致后续维护非常困难。在经历了各种给自己挖坑以及卖坑的过程,目前也自认为是一个手艺熟练的CRUD搬砖工。

相对于学生时代的玩具项目,企业开发在各种流程和规范方面严格很多。

在每次开发时,都严格遵循开发流程,如果保证每个流程都符合预期,那么对于整体结果的品控就不会存在严重问题。

一个完成的开发流程可以抽象为:核对需求、编码工作、测试工作、正式上线以及指标观察几个步骤,每个步骤都有注意的细节。

① 确认需求:如果通过简单的修改可以实现功能,那么可能不需要产品给出辅助图表。如果是接入一个新的功能,并且涉及到多个业务方的交互,那么一般需要push产品给出业务交互图、请求时序图,方便核对自己的理解是否符合产品规划,如果对于细节处理存在问题,尽量要在进入开发流程之前核对清楚。为了让沟通不存在偏差,拉群是必不可少的过程,开会以及直接电话one-one都是常见方式。

这个步骤还要确认代码预计上线时间,前端、后端、测试对应负责人。

② 方案评审:对于小白来说最常见的问题在于确认需求之后就立马上手coding,对于几行代码的修改可能没啥影响。但是对于涉及几百行代码的修改,一般都需要经过方案评审流程,通过文档的形式,从需求分析、预计的修改方案(如果有多个,评估不同方案的优劣,例如选择使用MySQL作为存储还是选择Hbase作为存储,各自有什么好处、短板),会议直接拉上部门领导,让上级拍板(这样做的好处是工作多年的上级肯定经验更丰富,看待问题更加全面,退一万步说即使出问题,方案层面不会给你背锅的理由,)。

③ 业务开发:经过上述两个步骤之后,才进入业务开发,到这个步骤我们已经非常明确我们写的代码是为了干什么,以及要在哪些服务、模块写代码,每一行代码都具有目的,避免临时头脑发昏,写出杂乱的代码。

④ 测试环境上线、联调:一般来说,大企业都有自己的测试环境,或者叫做sandbox沙盒环境,都是方便程序员模拟线上环境测试使用。这个步骤需要注意尽可能全面测试,如果有对应的测试人员,也要配合给出不同输入条件的case。如果是HTTP接口,需要和前端进行联调,注意返回JSON是否符合预期。

⑤ 正式环境上线:正式环境上线之前,需要明确后端服务的依赖关系,是否需要在其他服务上线之前再上,明确上线步骤。这个步骤如果出问题,影响的就是线上环境,需要格外注意,例如前端先发版了但是后端并没有发版,新接口调用会直接调用失败,是非常严重的线上故障。

⑥ 线上指标观察:尽管我们在之前的步骤在尽量保证代码符合我们的预期,但是实际上所有的工作必须要经过线上严重之后,才能说明是真正的没有问题。上线之后需要观察接口TPS、QPS,核心逻辑的埋点、以及数据库压力是否符合预期。举个简单例子,如果我们保证了代码逻辑没有问题,但是接口扛不住线上实际的并发流量,也可能直接挂掉。

0x2 宏观成长

我觉得从学生转换到职场人之后,对于差不多起点的码农,最大的差距,第一是眼界的差距,第二是执行力的差距。

大部分的程序员都写不出vue.js这样优秀的开源框架,大部分的程序员也没有幸运到进入14年的头条、15年的快手、16年的拼多多、17年的zoom,大部分的程序员都会面临职业生涯的35岁危机,大部分人的日常工作都是CRUD,大部分人都是普通人。

只要毕业进的不是外企,不管是第一份工作,还是第二份工作,做满三年的都是少数人。而且从统计规律看,程序员跳槽是涨薪的最快方式。所以从入职的那天起,lastday就命中注定了。

从宏观的角度看,入职到离职的两三年时间内,如何从日复一日的工作中获取成长?

第一点是关于自我价值的思考:

① 自己每天做的工作,在公司整个系统中充当的作用是什么?对于公司整体和团队业务发展,自己扮演了什么角色?

② 自己的价值,在这家公司是否可以发挥?如何才能让自己的价值最大化?

情况很明显,应届生或者一年经验的员工,都是可以被无情替代的螺丝钉。

第二点是形成自己的方法论

每一件工作,都花时间去归纳总结,看看做的事情,对自己有什么提升,是否能为自己以后想做的事情,打基础。

未来的趋势是什么?

因为互联网的普及,以及程序员喜欢攀比package,四处宣扬行业的时代福利,我看到的是越来越多的跨专业学生来咨询如何零基础转码,因为国内互联网流量从增量时代转换为存量时代,对高级程序员的需求维稳,但是对低端码农的需求增长见底。

逆水行舟,不进则退。

就算是在大厂,到了一定的年龄段没达到一定的水平还是会被逐渐淘汰。30岁的p5,35岁的p6,未来的发展也非常受限了。

最好的办法就是从毕业开始就认清现实,按步执行计划。

PS:最近在看的,质量比较高的书单:https://github.com/mio4/Java-Gold/blob/master/010-social/%E6%8A%80%E6%9C%AF%E4%B9%A6%E5%8D%95.pdf

全部评论

(17) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐