低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

华为 IoT 首席架构师王启军:全栈工程师“养成记”

2020 年 3 月 25 日

华为IoT首席架构师王启军:全栈工程师“养成记”

在王启军的公众号里,有一篇《My Team》的文章,里面记录了早年他所带团队成长的心得。


这个被他称为完美组合的团队,并不是来自大厂名企,彼时王启军给不起高待遇,团队核心成员中还有很多人是专科学历。


但就是这样一支团队,建立了 IaaS 平台,搭建了私有云,云缓存,分布式文件中心……甚至还有自己的开发框架,工作流平台,配置中心,而彼时,是在 2013 年前后。


王启军在文章里写到:


给不起高薪,就挑选潜力股,用成长来吸引人。


最后,王启军确实也兑现了承诺,团队成员工作一年以上的,出去后薪酬基本都翻倍,并跳槽到国内知名互联网公司的不在少数。



如今,王启军已成为华为云 IoT 首席架构师,尽管“捉襟见肘”开不起高薪的烦恼不再,但他认为挑战依旧,因为在云计算时代,很多颠覆性的工作正在等待他去做突破与创新。


拥抱开源,要做颠覆性的云

今天,全球正进入了一个开源的大时代。可以看到,目前全球软件行业有两个重要的趋势:


一是“软件现正在吞噬一切”,每一家公司都正在变成一软件公司;


二是“开源也在吞噬一切”,越来越多的公司都在使用和拥抱开源软件。


同样,对于开源的关注,也始终是王启军工作重心中的一部分。据他介绍,目前华为云很多产品线的目标都是希望做“颠覆性”的产品,而不是只考虑跟竞争对手持平。因为即便超越了对手,但是还是可能会输给时代。所以华为云的产品考虑必须长远。


在云的领域,根本的问题还是要做到成本足够低廉,就像水电煤一样。当云产品的功能做到一定程度后,成本就会成为最大区别点。


对华为而言,云服务器基于兼容 ARM 架构的鲲鹏来做,从底层开始自己做,这样成本能控制住。但是,很多软件是长在 x86 平台上,实现平台的迁移必须要依靠生态。


因此,华为云未来要不断成长,就需要把生态做好,同时还必须支持开源,把更多的产品开源出来,培养、催化、拥抱这个开源社区,这样整个生态体系才能建立。一旦建立起来生态。


王启军说:


我相信华为云对行业的颠覆性非常大


他认为,从商业的角度考虑,开源的产品与公有云联合,对客户对华为都有好处。客户用开源的东西,对客户来说能节省很多工作量。尤其是很多小公司,自己没有能力开发一个开源框架,或者开源的中间件,用开源的东西能加快开发进度,还可以让系统比较稳定。


比如,华为云会开源一个微服务务框架,这个微服务框架在华为内部用得比较成功,现在开源出来给外部去用,客户就可以联合华为公有云和开源框架,基于微服务框架的应用就很容易上到华为云上,华为云上有很多中间件可以整合,让客户觉得非常合适。


王启军认为,不管是做开源框架还是用开源框架的人,都是巨大的生态。在这个生态里面有很多商业思考,可以做很多事情,有很多想象空间。


软件开发,一门妥协的艺术

当然,要真正做好基于开源的云计算产品,其实也面临技术、制度、文化三个方面的挑战。



王启军说,过去华为做产品,开始就要规划好。立项的时候对技术市场竞争会分析得比较清晰明白,然后按照计划去执行,执行过程中不会有太大的变动。产品立项到交付,会有比较长的周期,比如 5G、6G 的研发,都是要经过很多年的开发才能出产品。


但现在,华为公有云会要求快速迭代,产品快速上线。在这样大背景下,一个产品一年上线十次和一年上线一万次,会有根本的区别。


首先,从流程制度看,过去,上线次数少,可以依靠严格的开发制度,测试制度和上线制度,制度对每个环节会卡得很严,以此来确保产品质量。


以测试流程为例,过去测试环节中,会有很多的测试人员,甚至上线的时候,一个人来负责操作,还会有另一个人来审核监管。但是当一个产品一年有很多次上线后,依靠这种传统的制度确保质量是不可行的。


因为频繁的上线,再让测试人员把全部功能都覆盖测试,在时间上不可行。这就要求有流水线的自动化检查,自动化编译验证测试等等。所以要求提交的代码也有更高的质量。从制度流程角度讲,这跟原来方式完全不一样。


其次,从文化上来讲,在这种频繁迭代快速上线的环境下,也要求公司内部更加透明,更加扁平化,组织结构不能过于复杂。还有就是要求开发人员对产品和技术有更全面的了解,用一种小团队合作的方式来解决问题,而不是传统方式靠组织的精细分工来开发产品。


以代码的 review 为例,在新的文化背景下,开发人员会把请人 review 代码当成自己的责任。会变成一种自主的工作模式。而不是因为代码没有 review 就上线,因为违背制度而受到惩罚。


从王启军的自身体验来看,华为云的开发模式更接近互联网公司的开发模式,而跟华为传统产品开发有较大差别。


王启军说:


做好云产品的开发,关键还是要把握好妥协的艺术。


因为产品是快速迭代,频繁上线。所以不能等到做到满意才来发布。软件就是不断改进的过程。很难一下子做到特别满意的地步,基本上都是不满意的状态。假设所有的地方都满意了,说明系统已经过度设计了,完全都满意了说明系统成本非常高。比如说像可靠性、性能等各个方面都达到了高的要求,成本就非常高了。


他说:


软件架构它也是妥协的过程,会跟需求、跟成本,跟研发,还有质量,各个方面不断的权衡,去选择其中比较重要的方面。


把重要的几个方面做得比较好,其他几个方面只能妥协。第一就是考虑满不满足当前的要求,等以后需求变大了,或者是业务要求的比较多了,再去补齐短板。比如说可靠性,从三个九到四个九,或者从四个九到五个九的时候,每前进一步,成本是指数级的上升。在这种情况下,满意的标准其实需要根据阶段去调整。


最后,从技术角度来讲,王启军认为做好云产品,技术上的挑战并不是那么大。大多数挑战大家都差不多,某个部门解决不了,到公司层级就可以解决了;整个公司解决不了,寻求外部资源也能解决。


但是从团队和文化层面,会遇到更多挑战。在做这些事情的时候,不是说一个人想做就能做成的,需要跟团队的文化和团队的制度碰撞,去磨合。要把想法传递给所有的人,而且所有人都认同这个想法,这非常有挑战。


从这个角度来说,王启军认为这不仅仅是华为的挑战,很多公司都有很多改进的空间。大多数东西推行起来,遇到一些没那么满意的地方,多多少少都是因为团队,因为各种各样的原因做了妥协。


因此,在这种情况下做开发,开发人员和所谓架构师的区别会越来越模糊,对开发人员的要求越来越高。


比如很多业务,是需要去看别人的代码,大家有更多的交流。也要求自己的代码要给别人去看,在这种交流的过程中,发现自己的代码不够好,会有一种羞耻感,形成这种文化氛围后,自我激励,主动学习就会成为必然。


全新时代,全栈工程师的养成

回顾过去多年的从业经历,王启军认为,现在行业变化非常快,技术变化也很快。


过去一种框架用十几年没什么变化,现在基本上不可能。经常是今天用这个框架,明天又得用另外一个框架。但现在不但框架多,而且变化还特别快。比如,微服务框架,每个公司都有很多自己私有的框架,开源的框架也能找到七八种。


再如,以前大家在建私有云,现在公有云会越来越多的使用。


公有云的特点,就是应用跑在公有云上,中间件和基础设施这些,都交给云去解决。跟传统最大的区别,就是使用公有云需要的所有基础设施都是通过代码的方式构建。


这样,传统做运维做测试的人会极限压缩,这两方面的人会越来越少。传统上做一个应用,需要产品负责人启动,产品经理开始计划,接着是架构师做架构,然后开发人员开始开发,开发完成交给测试做测试,最后在由运维上线,这个流程会非常长。


这里面会有很多决策,公司内会有很多角色来完成这些决策。但是现在使用公有云,所有的基础设施都通过云来搞定,剩下的应用开发由开发者来搞定。


这时候开发者就得变成全栈工程师,一个人能干很多事情,既能干前端,又能干后端,运维工作也能干,甚至一些需求分解,架构也要由开发人员来做。这样对开发人员得要求就会越来越高。从目前趋势看,大厂对开发人员得要求越来越高,不会像以前那样做非常细的分工。


面对这种挑战,王启军建议,像应届毕业生刚开始进入开发,在来之前就要做非常充足的准备。不像以前一个应届毕业生到了开发岗再学。本来这个行业要求就很高,发展速度很快,更多优秀的人投入进来。很多开发人员入行就已经具备了很高的能力,各方面的技能已经很高了。


以前公司内会有很多培训,还有外部的培训。现在开发人员更多的靠自身成长,靠业务的压力推动成长。


比如用微服务架构,就得自己研究微服务架构,用到数据库要研究数据库。另外还有很多业务,要求开发去看别人的代码,别人也会看你的代码,大家互相交流,这种交流的过程也是一种学习的过程。


王启军说:


现在网上能获取的知识挺多,如果自身有动力想学习会非常容易。不管是书,还是博客,还是公众号,还有技术大会非常多,都是学习通道。如果有学习的想法,有驱动力,知识来源非常广。不一定非得有一个专门阶段性的培训,更多的还是靠自己驱动去学习。


对于学习和提升,王启军认为,好奇心和学习能力最重要。不论之前懂了多少,会了多少,更重要得有一个持续学习的能力,解决问题的能力。


行业变化太快了,即便学到很多,也知道很多东西,过一年两年很多东西就会落后,很多东西已经变化。现在全栈工程师工作范围很广,涉及的点特别多,所以一定要有好奇心,去解决这些问题,这样才能发展得比较好。


不仅如此,全栈工程师需要考虑问题更全面,关注更宽的领域,而不是限制在眼前工作。原来架构师跟开发工程师是分开的,现在又要做开发,又要做架构,还要做测试,这就要求工程师涉及更多的交叉领域,要学会更全面更系统的思考。而不仅仅是只考虑写写代码。


王启军根据自身的经验最后总结说:


全栈工程师必须保持专注

例如,生产环境遇到问题,故障没有定位出来,就需要不断的想,不断的分析,去找这些问题。在这个过程中时间会过得非常快。这样就不会感受太多的压力,不会受外部干扰。专注于问题解决,不会感觉到特别累特别失望。


但是,如果是一种被动的状态,不管学习还是工作,一会做点这个,一会做点那个,时间没有分配好,这样就会感觉特别累。当一个工程师做的都是重要但是又不是特别紧急的事,这个时候效率会很高,绩效也会很好,也就成了一个优秀的全栈工程师。


后记

王启军的公众号,最新更新时间是 2020 年 1 月 10 日。在采访中,他告诉我,未来还会继续把最近做 IoT,还有 PaaS 相关的想法和经验,总结记录下来,时机成熟时可能也会写写书。


而对即将于 2020 年 2 月 11 日-12 日在深圳举办华为开发者大会 2020(Cloud),王启军也希望有更多的开发人员来亲自参加和体验。


他强调说:


华为云这两年发展非常快,华为云今年更多的是一种挑战者的身份,做的很多东西跟开发者更贴近,想的会比较多,比较灵活,思维会比较活跃,会解释为什么会做成这样,会有更多背后的思考。我相信,大家来参加这样一个大会收获会比较多,会遇到跟你的想法比较接近的人,然后大家一起碰撞,由此催生出更有创意的火花。


2020 年 3 月 25 日 20:27247

评论

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

Spark提交后都干了些什么?

小舰

大数据 spark Spark调优

GO训练营第12、13周—— runtime

Glowry

【得物技术】TDengine在得物的落地应用

得物技术

数据库 tdengine 数据 sentinel 得物技术

10.4|PPT 教程|内容页之表格使用

青城

利用区块链技术,打造绿色发展的中药材生态链

CECBC区块链专委会

中药材

深入剖析数据库事务的隔离级别

小舰

数据库 事务隔离级别 数据库事务

大专生阿里/腾讯/京东面经分享:Java面试精选题+架构实战笔记(技术狂补)

比伯

Java 编程 架构 面试 计算机

2021吊打面试官必备!居然真的有人把1000道对标阿里P7面试真题最优解收录成册,全网开源!

Java王路飞

Java 程序员 架构 面试 分布式

融合发展是区块链的未来 数字通证新模式具有划时代意义

CECBC区块链专委会

数字通证

面面俱到!阿里分布式全栈系统设计实录Github仅上线6天星标已经高达68K!

程序员小毕

Java 架构 面试 分布式 高性能

冰河公开了其总结的一项重要的编程技能!

冰河

Java 正则表达式 程序员

我从外包辞职了,10000小时后,走进字节跳动拿了offer

云流

Java 编程 程序员 架构 面试

盘点一下数据库的误操作有哪些后悔药?

程序员小毕

Java MySQL 编程 程序员 面试

如何在 Spring 生态中玩转 RocketMQ?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

安全高可用通信背后的 MySQL 优化实践

融云 RongCloud

打击虚拟货币洗钱:中国破获比特币跨境洗钱案

CECBC区块链专委会

虚拟货币

Github上堪称最全的面试题库(Java岗)到底有多香

云流

Java 程序员 架构 面试

SpringBoot配置文件数据加密自定义开发详解

程序员小毕

Java spring 程序员 面试 springboot

白话讲解,拜占庭将军问题

架构精进之路

分布式 算法 3月日更

使用 Arthas 排查SpringBoot诡异耗时的Bug

互联网架构师小马

MySQL自定义变量?学不废不收费

Java王路飞

Java MySQL 程序员 架构 面试

标准引领 浪潮工业互联网助力澳门质量品牌国际认证联盟成立

浪潮云

工业互联网

朱嘉明:全面认知区块链的科学特征

CECBC区块链专委会

区块链

初识Golang之安装运行篇

Kylin

golang新手 3月日更 21天挑战

备战一个月,四闯字节跳动,终圆大厂梦!(附面试经历+复习笔记)

Crud的程序员

Java 编程 程序员 架构

我是如何拿到5大银行offer

小舰

面试 银行 笔试 校园招聘

微信小程序开发:如何快速实现添加一条分割线的项目需求

三掌柜

微信小程序 3月日更

高质量、高并发的实时通信架构设计与探索

融云 RongCloud

SpringBoot + Mybatis实现动态数据源切换

互联网架构师小马

实时数据流计算引擎Flink和Spark流计算对比

小舰

大数据 flink spark 流计算

你真的懂Spring解决循环依赖吗?

云流

Java 架构 Spring Boot

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

华为IoT首席架构师王启军:全栈工程师“养成记”-InfoQ