我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。
本文为此系列第二篇内容。
第一篇:负责淘宝业务前端开发9年,聊聊我的心得
本文作者三尽17年本科毕业,兜兜转转做服务端开发5年了,“技术开发最应该做什么事”,这个问题时常在他的脑海回荡。
个人经历简述
我是一个从业经验已有5年的服务端开发,未毕业的时候就经历过创业的艰辛。毕业后,辗转几轮经历过传统互联网的沉寂,体验过直面用户的成熟toC产品,最终来到了阿里大淘宝技术做成熟的toB商家业务。在不同阶段的我,对开发岗位的理解也各不相同,以下是我的成长和收获,希望对你有所帮助。
2015~2016:不成熟的创业团队中,做唯一的技术开发
创业还是忽悠?我选择了退出
这段经历是我大三那年的经历。
在学校自学半年java的我,机缘巧合,“受邀”成为了某不知名“创业团队”的一员,抱着学习+锻炼能力的态度,一个人承担了团队对外的网站全部建设(后来才知道,当时没钱请不起外包做网站),包括前后端开发+买域名租服务器。
当时只学习了后端三板斧的我,每做一小步都得百度很久,依靠碎片线索去学习新的技术,翻CSDN,搜github,无所不用,经常从早忙到晚。幸运的是网站成功上线了,并稳定运行了半年之久,过程收获巨多。
当然散伙的原因也比较突然,某个午后,网站突然被“黑客”攻击无法访问,客户打电话投诉,而我只能频繁的去重启我那可怜的云服务器,非常尴尬(后来才知道是我那天手误开启了云服务器的某个高级安全策略,同一ip多次访问会拉黑半小时...)。
那件事之后,我意识到自身能力欠缺,也明白他们只想“白嫖”我,我立马找了个借口退出,火速散伙。随后在校招尾声中,随便投递了一家北京的公司,就只身飞了过去,进修技术。
▐ 有收获成长的地方
做技术开发,需要有迎难而上的冲劲,遇到不懂的地方,主动找方法去解决。
能够看清自己的缺陷,及时止损。
▐ 值得反思的地方
做决定太盲目,不管是没打听清楚就加入“创业团队”,还是随便找了个公司就奔去北京,都太过于仓促盲目,这样对自己是不负责的表现,需要反思和警惕。
2017~2018:传统互联网公司,做后端开发
毕业后第一份工作的无奈,自作自受
由于盲目的决定,导致我毕业后的第一份工作并没有做多久。
主要还是因为传统互联网公司的调性与我心中互联网公司的预期不一致导致的,项目节奏周期长,技术不够新颖,与外界存在明显断层,学不到心中自认为酷炫的技术等。
不过与之相对的是,因为节奏慢,所以能有充分的时间看书,我借着这段时间,慢慢弥补解决了之前碎片化学习技术,导致知识零散不连贯的问题。
▐ 有收获成长的地方
真正意识到了盲目决策的苦果
2018~2020:北京新浪微博,做toC服务端开发
怎样才能保证月活上亿的app服务稳定
2018年的时候去了新浪微博做toC互动业务,想像中从零开始撸高并发高流量系统的愿景并没有实现,原来大家都是从现有的系统架构上添砖加瓦的吗?也是啊,怎么可能每次需求都需要重新撸高可用的架构呢?不现实。
从微博多机房部署,热点事件多级降级,动态扩缩容,热门评论模型,热点微博localcache化等,我开始一点点学会了怎么去保障一个月活上亿的app服务稳定。
此时我对一个成熟稳定的服务心中有了完整的印象,那么就是在设计之初需要考虑周全:存储容量,调用限流,下游依赖,异常兜底,降级预备。
有效的存储容量评估,能极大的减少成本浪费;可靠的调用限流,能保护系统不被打垮;清晰的下游,能在出问题时,随时上下信息串联;异常兜底设置,能让系统时刻在预期内运行;降级预备,任何非核心路径功能时刻都要考虑到为核心路径功能让路,降级掉非核心的请求压力,保障最核心功能的完整性。
▐ 有收获成长的
明白了稳定服务必须具备的条件,同时明白了平台的重要性,我们搭建的服务都是依托当前已经成型的平台进行的,逃脱了平台加成,剩下的才是我们自己,不要生出膨胀的心理。
▐ 需要反思的地方
平时埋头做业务,没做出突破性的技术成果,实属遗憾。
2020~至今:阿里大淘宝技术,做toB服务端开发
正视业务才能打破技术壁垒
2020年的时候来到阿里大淘宝技术,做toB商家千牛业务。
来到阿里后第一次体会到完善且成熟的基础设施有多便利,完整的监控体系,无人值守的发布流程,一键机器置换的便利等,能让技术同学全身心的投入到业务模型的开发设计中,不需要考虑额外的负担。基于此我也开始重新思考作为服务端开发,当运维相关的负担减除后,服务端难道只干好coding就可以了吗?这个疑问在后面的时间里,与同事和TL慢慢交流沟通后有了答案。
“正视业务”是我了解到周围厉害的同事都在做的事情,站在业务的视角去考虑问题,设计方案,评估产品的设计合理性等。说实话在来阿里之前,我的业务意识非常薄弱,每次需求评审只会考虑技术方案的可行性和稳定性,很少能会聚焦到业务本身上,也不过多追究业务的走向,现在细想,这完全是错误的做法,在一步步埋没自己的职业生涯。
举例一个需求例子,业务上需要做一个收集满意度的功能。但是技术上就不能单单只考虑单点,需要多想一些扩展的能力,比如业务上后续是否要在其他场景也支持?支持横向扩展;如果能力做的完整,是否可以对外做开放?普利大众,降低重复编码成本,提高技术影响力。如果在设计之初只考虑到了“点”,没看到延展的“线”和铺开的“面”,只能看到当前的功能点,那么当业务重新提来升级需求的时候,当前的架构就容易抓瞎,只能被迫打补丁,甚至拒绝需求,这完全是不合理的,也不是一个合格的技术人员应该做的事情。
什么是好的技术方案?好的技术方案是能够贴合业务,甚至能驱动业务前进的,技术方案需要在一开始就去考虑业务的未来布局和整体方向,最好是能与业务产品一起去沟通细节,而不是坐等“投喂”。好的方案是沟通出来的,绝对不是闭门造车。
当我有意识的去将业务和技术结合后,设计方案的思路也经常会灵感爆棚,带入业务的视角评估方案,有种重新认识技术开发岗位的感觉,时刻都有收获。
▐ 有收获成长的地方
重新认识了业务和技术的关系,业务是船,技术是帆,顺势而为才能一日千里
▐ 需要反思的地方
能想到,能做到,能做好是各不相同的阶段,还需要更耐心的投入
个人感悟总述
▐ 代码方面
代码是程序员的灵魂,对代码一定要有追求,任何时刻都要对垃圾代码说拒绝,todo是骗人的鬼,不会有重构的机会的!“屎山”只会让后人反复的念叨自己!
▐ 合作方面
不自我设边界,多做事情少偷懒,不可以耍滑头,多做了一件事不算吃亏,每个人都能看到谁在付出,认可是在平时一点一点积累出来的。
▐ 沟通方面
多和老板聊天,当前如果和老板沟通有距离感,不适应,也可以多和师兄或者组长沟通交流,目的其实就是取经,能做你师兄或者组长的人,绝对有过人之处,向他们学习能少走很多弯路。
▐ 身体方面
健康的身体才是职业生涯的保护伞,每周如果能保持少量的运动,对头发也是极好的。
▐ 总结
17年本科毕业,兜兜转转做服务端开发5年了,“技术开发最应该做什么事”,这个问题时常在我脑海回荡。如果要问我现在有正确答案了吗?我的答案是看当前环境需要什么,永远做当前环境最需要,当前业务最紧迫的事情,满足了这个,那无论做什么都是正确答案。
团队介绍
我们是大淘宝-商家技术团队,用技术和产品能力,构建支撑商家持续经营的基础设施,数据化的为商家带来新的增长。
在技术上,我们精益求精,用端到端的技术平台,直面百万级别的QPS,为商家生意的爆发保驾护航。
在业务上,我们勇于突破,带领和支撑集团战略级的战役,从而推动整个淘宝天猫的增长。
在人才上,我们渴望怀揣着有技术梦想的同学加入我们团队,一起为阿里巴巴零售体系的未来布局。
¤ 拓展阅读 ¤
3DXR技术 | 终端技术 | 音视频技术
服务端技术 | 技术质量 | 数据算法