有人会问,码农和工程师有区别吗?有什么区别?相信每个人都有不同的理解。
“你敲下的每一行代码,你想过他会如何在计算机上运行吗?你想过你的这一行代码会产生多少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、世界杯的洪峰流量,你很难凭空设计出流量调度的算法,也更没有业务场景去验证你的技术。所以每一个工程师都是对业务场景及其了解的码农。
在此我向大家推荐一个架构学习交流群。交流学习群号:736220120 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多。
后记
接触过我的同学都说我是工作狂,当你的工作就是你所兴趣的方向,工作可以给客户、社会和公司带来价值,你就会非常享受这个过程。
当然对从工作中对收获,会有对家人照顾对遗憾。我非常感谢我家人对我的支持,从16年只身一人来到杭州追逐梦想,到现在厦门研发中心开启新的篇章,她们都是我坚强对后盾。
最后期待更多的行业和业务与云发生化学反应,一起让技术业务化,让业务技术化。
网友评论