有人会问,码农和工程师有区别吗?有什么区别?相信每个人都有不同的理解。
“你敲下的每一行代码,你想过他会如何在计算机上运行吗?你想过你的这一行代码会产生多少 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 年只身一人来到杭州追逐梦想,到现在厦门研发中心开启新的篇章,她们都是我坚强对后盾。
最后期待更多的行业和业务与云发生化学反应,一起让技术业务化,让业务技术化。
评论