当前位置: 首页 > Linux

阿里云宇一:牧码十年,码农到工程师的进化之路

时间:2023-04-06 19:49:13 Linux

有人会问,码农和工程师有区别吗?有什么不同?相信每个人都有不同的理解。“你敲的每一行代码,你有没有想过它在电脑上会如何运行?你有没有想过这行代码会产生多少cachemiss?你有没有想过这段代码分支预测的概率是你的??你有没有想过你的代码是否适合运行在逻辑核心上?你真的想过吗?”正是阿里云资深技术专家刘廷伟向我们提出了这些问题。在队里接触过于毅的人都知道,他就是这样一个认真的人。或许正是因为这份坚持和信念,他才能够从一个普通的码农,逐渐成长为如今带领数十名工程师的架构师团队的带头人。值此1024程序员节之际,我们有幸能够走进余毅,和他聊聊他过去十年的田园代码。码农要想成长,首先要明白我是2008年毕业的,专业是数学。因为数学专业其实不太好找工作,所以大三开始自学计算机课程。大三下学期报了当时流行的软件设计师考试。结果,我一不小心就考上了国考。看来我还是比较适合计算机行业的。于是在2007年底,我拿着这个证书去了一家安全创业公司实习。说实话,公司虽然不大,但是东西还是不少的。当时我在做一个软硬件一体化的防火墙。一开始在应用层的业务逻辑部分参与了C、C++和ruby的开发。反正我是新人,不管做什么工作,我都会认真去做,有问题我可以问;从业务逻辑到数据结构;从数据结构到内存和性能优化;.工作不到半年,老板看小伙子干劲十足,喜欢学习,就把我分配到内核组(后来发现这个决定对我整个coding生涯有决定性的影响).当时是基于Linux内核开发的。一开始只是为了业务监控和统计。基于内核协议栈桥接和IP层hook的开发,真正涉及到的新业务模块并不多,但是从我当时接触linux内核的那一刻起,深深地吸引了我。从来没有见过这么庞大的代码,而且代码风格非常好,可以用漂亮可口来形容。(当时并没有感觉到整个内核的框架,只是觉得代码很舒服)。因为一开始做的是非核心内核业务,觉得自己学的够多了,就开始给公司的代码库提交补丁。我至今还记得很深。它是一个内核认证系统。我提交后,系统回归测试就完成了。有个bug,全公司20多人开发。调试了一个星期,一直找不到原因,但总觉得不是我代码的问题,但是没办法,是我的代码触发了问题,所以只能把我的代码回滚了(后来发现是供应商提供的网卡驱动有问题,而我的代码逻辑正好触发了那个bug)。当时真的很难过,但是没有办法,也无法证明哪里出了问题,只好先回滚。那个时候我发现系统地了解Linux内核是很有必要的。所以那段时间开始看各种内核书籍,《Linux Kernel Internals》,《Linux内核驱动开发》,《深入理解Linux网络技术内幕》,《Linux 内核网络源代码情景分析》,其实从刚才的调试场景,我可以想象整个团队和同学都在努力在内核上的技能还不够,在青岛这样的二线城市,做内核研发的学生比较少。但是这些书和代码很难读懂。有时候在使用锁的时候,为什么需要关闭软中断呢?几个晚上想不通,身边又没有同学讨论,就开始混内核社区和论坛,后来成了ChinaUnix内核社区源码版的版主,网名“韩”海书乡”。那个社区原来有4个版主,现在3个版主都聚集在了阿里云。那段时间很累,但我精神饱满,每一天都能感受到自己的成长。而且当你熟悉了内核之后,你看问题的时候,除了业务层面,你还会站在整个系统的角度去思考问题。因为内核里面有很多驱动和汇编相关的东西,所以我又开始研究编译的原理,以便更好的理解整个系统是如何在这个硬件上运行的。从防火墙产品线,逐步扩展到VPN、上网行为管理、NGFW等产品线。2011年起任该公司研发总监,负责整个公司所有产品线的研发工作。这次经历让我有了深刻的认识。如果你想成长为一名编码员,第一步就是深入。您必须对您负责的业务和技术有透彻的了解。只有这样,当你的业务在调整和发展的时候,你才能看到本质上什么没有变,什么需要调整。另一件事是要有系统的眼光,不仅仅是一个模块,而是整个系统是如何工作的。2012年,我对这个单机设备的发展前景不是很看好,于是跳槽到一家国企,做智能设备的云平台。坚信技术的方向,努力的方向就不会出错。进国企比较有意思,因为国企要求985毕业,而我毕业的学校没有。可能当时面试我的老板看中了我,所以进去之前签了外包合同,哈哈。但是不到一年的时间,他就得到了公司的认可,经过董事长的认可,转为正式员工。我加入是基于我的安全能力,所以我一开始是在安全团队。但是在加入公司之后,相邻的存储团队遇到了kernelpanic问题和性能瓶颈,而这两项工作都需要对系统有较高的了解。好在前几年工作基础不错,很快帮助这个团队解决了几个困扰很久的panic问题,同时分布式存储的性能提升了30%以上.工作能力得到认可,从业近13年,一直负责一个系统软件研究所,包括安全、存储、内核和BI团队。当时BI团队还在用OracleDatewarehouse,遇到了性能瓶颈,经常会出现一天的数据无法计算到第二天的情况。那时我对大数据一窍不通,于是开始和业内比较优秀的同学一起探讨这个领域的方向。当时我觉得我们需要转型,不能再用这种单机模式了。于是组建了一个团队来搭建公司的大数据平台。说实话,一开始不知道能不能做,但坚信这个方向是对的。将近半年的时间,公司内部的大数据集群真正搭建起来,横向扩展能力完全满足了当时的业务增长需求。后来开始逐步将业务云化,真正实现了智能设备的云平台。这段经历给我的成长是,一个coder成为工程师的关键一步,就是你要认清并坚信技术的方向。只要技术方向好,你努力的方向就不会错。2016年,我个人遇到了管理瓶颈期。同时也想在更大的业务平台上发展,于是跳槽到杭州-阿里云。每个工程师都是码农,对业务场景了如指掌。加入阿里云后,作为视频云的产品架构师,开始更多地与行业客户交流视频业务解决方案,拓展云的边界。如何利用阿里云的技术能力,更好地服务于客户的业务和客户。这个时候比较大的变化是,之前更多的是考虑技术如何落地,现在更多的是考虑技术如何解决业务问题,创造技术红利,拓展业务边界。你需要深入不同行业的不同客户,深入了解他们的场景,与他们一起分析和解决客户的痛点。你会很明白,所有的技术都是为业务服务的,业务的发展为技术的更新和演进提供了场景。没有商业,技术都是虚构的。没有双十一和世界杯的洪峰流量,你很难凭空设计一个流量调度算法,也没有业务场景来验证你的技术。所以每个工程师都是懂业务场景的coder,他们的理解。后记认识我的同学都说我是工作狂。当你的工作是你感兴趣的方向,并且你的工作能够为客户、社会和公司带来价值时,你会非常享受这个过程。当然,对于工作的收获,也会有照顾家人的遗憾。我非常感谢我的家人的支持。从2016年独自来到杭州追梦,到如今厦门研发中心开启新的篇章,他们是我坚强的后盾。最后,我们期待更多的行业和企业能与云产生化学反应,一起把技术业务化,业务技术化。欢迎关注我们的产品:阿里云视频云产品系列,https://promotion.aliyun.com/ntms/apsaravideoall.html本文作者:山哥阅读原文在此)本文为原创内容云栖社区,未经允许不得转载。