阿里云喻义:十年牧码,二线城市和小公司也有出路

2020 年 5 月 29 日

阿里云喻义:十年牧码,二线城市和小公司也有出路

有人会问,码农和工程师有区别吗?有什么区别?相信每个人都有不同的理解。


“你敲下的每一行代码,你想过他会如何在计算机上运行吗?你想过你的这一行代码会产生多少 cache miss 吗?你想过你的这段代码分支预测的概率是多大?你想过你这段代码是否适合在逻辑核上运行?你真的想过吗?”


给我们抛出这些问题的是刘廷伟,阿里云高级技术专家,花名喻义。在团队里接触过喻义的人都知道,他就是这么一个较真的人。也许正是因为这份坚持和信仰,才让他能从一名普通码农逐渐成长,蜕变成如今的带领数十位工程师的架构师团队 Leader。在 1024 程序员节来临之际,我们有幸能走进喻义,和他聊聊他这十年来的牧码之路。



喻义,阿里云视频云高级技术专家


码农想要成长,必须先吃透


我是 08 年毕业,数学专业。因为数学专业其实找工作不太好找,所以就从大三开始自学计算机的课程,大三下学期的时候报考了当时比较火的软件设计师考试,结果一不小心考了全国第十,当时就想看来自己还是比较适合干计算机这一行。


于是 07 年底,就拿着这个证去了一个安全创业的公司实习了。说实话虽然公司不大,但事情还是很多。当时是做软硬件一体化的防火墙,最开始参与应用层业务逻辑部分的 C、C++和 ruby 的开发。反正是新人,不管什么活都认真投入去做,有问题就问;从业务逻辑,到数据结构;从数据结构到内存和性能优化;从性能优化到编译优化;最后把我师傅都问蒙了。做了差不多半年不到,老板看小伙子冲劲不错,喜欢钻研,就把我安排到内核团队去了(后来发现,这个决定对我整个牧码生涯产生了决定性的影响)。


当时是基于 Linux 内核开发的,最开始只是做业务监控和统计,基于内核协议栈 bridge 和 IP 层的 hook 开发,真正的新的业务模块参与不多,但是从那个时候接触 Linux 内核的那一刻开始,就深深的吸引了我,从来没有见过这么庞大的代码,而且代码风格非常好,可以用秀色可餐来形容。(那个时候对于整个内核的框架还没感觉,只是对代码感觉很舒服)。


因为一开始都是做非核心内核业务,当时也觉得自己学的差不多了,就开始给公司代码库提交 patch,现在还记忆深刻,是内核鉴权的系统,结果我提交后系统回归测试就搞出了一个 bug,整个公司研发 20 多个人,debug 了一周没找到原因,但是我始终感觉不是我代码的问题,但是没办法,是我的代码触发的问题,只能是把我的代码给回滚了(后来证明是供应商提供的网卡驱动有问题,我的代码逻辑恰好触发了那个 bug)。当时真多很伤心,但是没办法,我自己也没法证明到底哪里出了问题,只能先回滚。那个时候我发现,必须系统化的把 Linux 内核搞懂才行。


于是那段时间就开始看各种内核的书,《Linux Kernel Internals》、《Linux 内核驱动开发》、《深入理解 Linux 网络技术内幕》、《Linux 内核网络源代码情景分析》,其实从刚刚那个 debug 的场景就能想象到,当时整个 team 到同学在内核这块功力都不太够,而且在 青岛 这种二线城市,做内核研发的同学更少。但是这些书和代码啃起来很难,有些时候一个锁的使用,为什么需要关闭软中断,好几个晚上想不明白,周围也没有可以讨论的同学,于是就开始去混内核社区和论坛,后来成了 ChinaUnix 内核社区源码版 的版主,网名“瀚海书香”。那个社区前后有 4 个版主,现在有 3 个已经都在阿里云聚首了。


那段时间很累,但心气很足,每天都能感受到自己的 成长。而且内核这块熟悉后,看问题的时候,除了业务层面,你还会从整个系统的角度来思考问题。因为内核里面有很多涉及驱动和汇编的事情,于是又开始研究编译原理,让自己更好的理解整个系统是怎么用在这个硬件上 run 起来的。从防火墙产品线,逐步拓展到 VPN、上网行为管理、NGFW 等产品线,从 2011 年的时候,就是那个公司的研发总监了,负责整个公司所有产品线的研发工作。


这段经历给我很深的认识,码农要想成长,第一阶段就是做深,你所负责的业务和技术,必须吃透,能挖多深挖多深,切记不要浅尝辄止。只有这样,当你的业务调整和发展的时候,你才能看出来哪些是本质的不变,哪些是需要调整的。


另外就是要有系统的眼光,不能只看到你一个模块,你要看的整个系统是怎么运作的。2012 年的时候,对于这种单机设备的发展前景不太看好,于是跳槽到了一家国企,做智能设备云平台。


坚信技术的方向,你努力的方向就不会错


加入国企的时候比较有趣,因为国企要求是 985 毕业,但是我毕业的学校不是。可能当时面试我的老板看中了我这个人吧,所以就签订了外包合同才进去的,哈哈。但是不到 1 年就在公司得到了认可,董事长审批后转为了正式员工。


我是依靠安全能力加入的,所以一开始是在安全团队。但是加入公司后,相邻的存储团队遇到了内核 panic 问题和性能瓶颈,而这两块工作对于系统的理解能力要求很高,庆幸工作的前几年基础打的不错,于是很快帮助这个 team 解决了几个困扰许久的 panic 问题,同时将当时分布式存储的性能提升了 30%多。


工作能力得到认可,差不多 13 年开始,就开始负责一个系统软件所,包括安全、存储、内核和 BI 团队。那个时候的 BI 团队还是使用的 Oracle Datewarehouse,遇到了性能瓶颈,经常出现 1 天的数据第二天无法计算完成的情况。那时候的我对于大数据一无所知,于是又开始跟行业里面比较优秀的同学聊这块的方向,当时就认为我们需要转型了,不能在用这种单机模式了。于是就组建团队,建设公司的大数据平台。


说实话,刚开始的时候自己也不知道能不能搞成,但是坚信这个方向是对的。差不多半年多的时间,真的搭建起了公司内部的大数据集群,水平扩张能力完全满足了当时的业务增长需求。


后来又开始逐步将业务云化,真正实现了智能设备的云平台。这段经历给我的成长是,码农走向工程师的关键一步,就是你要认清和坚信技术的方向。只要技术的方向不错,你努力的方向就不会错。2016 年的时候,个人遇到了管理瓶颈期,同时也想到一个更大的业务平台上发展,于是跳槽来到了杭州-阿里云。


每一个工程师都是对业务场景极其了解的码农


加入阿里云后,作为视频云的产品架构师,开始更多的与行业客户沟通视频业务的解决方案,拓展云的边界。如何利用阿里云的技术能力,更好的服务客户业务,服务客户。


这个时候很大的转变就是,之前更多的考虑技术怎么实现,而现在更多的是考虑技术如何解决业务问题,创造技术红利,拓展商业边界。你需要深入到不同行业不同客户,去深挖理解他们的场景,跟他们一块分析解决客户的痛点。你会很好的理解到,所有的技术都是为业务服务,而业务的发展又给了技术更新演进提供的场景。没有业务,技术都是虚的。


没有双 11、世界杯的洪峰流量,你很难凭空设计出流量调度的算法,也更没有业务场景去验证你的技术。所以每一个工程师都是对业务场景及其了解的码农。


后记


接触过我的同学都说我是工作狂,当你的工作就是你所兴趣的方向,工作可以给客户、社会和公司带来价值,你就会非常享受这个过程。当然对从工作中对收获,会有对家人照顾对遗憾。我非常感谢我家人对我的支持,从 16 年只身一人来到杭州追逐梦想,到现在厦门研发中心开启新的篇章,她们都是我坚强对后盾。


最后期待更多的行业和业务与云发生化学反应,一起让技术业务化,让业务技术化。


2020 年 5 月 29 日 15:30114

评论

发布
暂无评论
发现更多内容

阿里架构师花近三个月时间整理出来的Java独家面试题(Java岗)

Crud的程序员

Java 编程 架构 java面试

第六周作业

Griffenliu

一枚程序猿的MacBook M1详细体验报告

Zhendong

区块链电子票据解决方案--区块链赋能纳税服务

13530558032

数字货币——货币的第四次革命

CECBC区块链专委会

数字货币

Vim - 可能是投资回报率最高的 Editor

star_fx

vim

Arthas 实践——生产环境排查 CPU 飚高问题

阿里巴巴云原生

开源 云原生 中间件 Java 25 周年 Arthas

顶层设计已基本完备 数字货币将进入加速推进阶段

CECBC区块链专委会

数字货币

免费下载O’Reilly出版社全新之作《建立机器学习流水线》

计算机与AI

学习

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

小Q

Java 数据库 学习 面试 算法

怎么保护自己的音乐作品不被盗用,用FL制作防盗水印片段。

奈奈的杂社

架构师训练营第十一周作业

邓昀垚

使用 Go 实现 Async/Await 模式

Roc

go golang channel goroutines Async

CPU飙高问题排查

程序猿玄微子

架构师训练营第 1 期 - 第 10 周 - 学习总结

wgl

极客大学架构师训练营

区块链如何助力精准扶贫?

CECBC区块链专委会

区块链 扶贫

Scala语法特性(三):面向对象的独特点

大规模数据处理学习者

特质 样例类 case class Traits

LeetCode题解:121. 买卖股票的最佳时机,暴力法,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

智慧警务大数据决策指挥平台,警务大数据可视化平台开发

13530558032

利用 Arthas 解决启动 StandbyNameNode 加载 EditLog 慢的问题

阿里巴巴云原生

阿里云 开源 云原生 中间件 Java 25 周年

架构师训练营第十一周总结

邓昀垚

架构师训练营第二周框架设计学习总结

Geek_xq

Nginx的反向代理与负载均衡--配置Nginx

Linux服务器开发

nginx 负载均衡 反向代理 后端开发 Linux服务器

甲方日常 59

句子

工作 随笔杂谈 日常

我是如何使计算提速>150倍的

Lart

Python 代码优化 Numpy

【行业分享】叮咚课堂邱明丰:在线教育的最终形态的探索

ZEGO即构

区块链商品溯源系统开发,区块链防伪追溯系统

13530558032

第六周学习总结

Griffenliu

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

小Q

Java 学习 架构 面试 JVM

多线程源码明白了吗?不明白的话来看腾讯大牛给你画的面试重点

996小迁

Java 学习 编程 架构 面试

RocketMQ 很慢?引出了一个未解之谜

阿里巴巴云原生

开源 云原生 中间件 Java 25 周年 Arthas

阿里云喻义:十年牧码,二线城市和小公司也有出路-InfoQ