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

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:30 50

评论

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

卧槽!牛逼了!40K+Star!Mall电商实战项目开源回忆录!附源码、教程合集

云流

架构师 计算机 程序员成长 编程学习

HTTP必知必会

陈靓-哲露

银行数仓体系发展之路

易观大数据

面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

小林coding

乐观锁 高并发 操作系统 计算机基础

为什么企业需要CRM系统?CRM的作用及其重要性分析

力软.net/java开发平台

软件开发 信息化 CRM

本以为自己MySQL够牛逼了,直到亲自去阿里受虐了一次!

Java架构师迁哥

数字经济时代来临 区块链护航数字资产安全

CECBC区块链专委会

金融 数字时代

Spring Boot CLI 介绍

hungxy

Spring Boot Spring Boot CLI

AWS在线技术峰会2020探班回顾,四大看点不容错过

Yumiko

云计算 AI 云原生 金融 医疗

入行架构师之前,这7项技能你要先了解一下

华为云开发者社区

架构 架构设计 架构师

QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考

科技缪缪

架构 编程语言

天猫成立房产部门,利用区块链承载交易多项服务功能

CECBC区块链专委会

区块链 房地产

DDD+微服务实战:什么是DDD?

深度码农

微服务 领域驱动设计 DDD

git的几种实用操作(合并代码与暂存复原代码)

良知犹存

git

实战案例丨GaussDB for DWS如何识别坏味道的SQL

华为云开发者社区

数据库 sql 算子

Java异常面试题(2020最新版)

Java架构师迁哥

未来已来!全球一流科技盛会——云栖大会9月17日线上隆重举办

北柯

当代开发者的好帮手,浅析.NET敏捷开发框架的优势与特点

Philips

敏捷开发 软件开发 .net core 开发工具

从想当亿万富翁到职场、创业、爱情、抑郁、学医学武,我的程序人生

陆陆通通

Java 创业 程序员 爱情 程序员生活

智慧公安重点人员管控系统平台开发,智慧警务系统

13530558032

区块链技术智能合约有哪些实际的应用场景

CECBC区块链专委会

智能合约 区块链技术

区块链支付系统开发技术方案,USDT支付系统搭建

13530558032

数字资产钱包开发方案,区块链数字钱包软件源码

13530558032

Java-技术专题-AQS和Volatile和Synchronized实现原理

李博@Alex

易观方舟Argo+CRM | 让企业数据发挥更大价值

易观大数据

TCP和HTTP中的KeepAlive机制总结

陈德伟

nginx TCP 性能 网络 HTTP

Java-技术专题-JMX超详细解读

李博@Alex

跨专业学习6个月,成功上岸阿里|滴滴,分享学习路线供大家参考

小Q

Java 学习 架构 面试 基础

Spring-boot 单元测试

陈靓-哲露

LeetCode题解:622. 设计循环队列,使用双向链表,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

数字货币交易所技术开发,交易所源码

13530558032

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

跨越计算鸿沟:如何靠软硬件协同突破算力瓶颈?

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