黑白色的华为(1)- 爱之初体验
引言
进入华为4年了,刚刚续签了合同,这是第一次写文章,而且是一个系列的文章。作为序言,先说清楚几个事情吧
1. 我是谁
2. 我的干啥的
3. 为啥写文章
4. 目的和主要讲什么
5. Tips
我是谁
我是熊伟,是中软欧拉架设部的工程师,是EulerOS的大SE。
我是干啥的
我算是OS领域的一个老兵了,最早在TurboLinux负责研发,后来进入了WindRiver风河公司(后续简称WR),负责WRLinux产品的研发,再后来到了华为,加入中软做OS系统。EulerOS,iSula,Hyperstack等这些就是进了华为以后做的产品和项目
为啥要写文章
1. 刚续签了合同,纪念一下,外来的高职级能活到续签是比较侥幸的事情。除了喝一杯以外还应该有些别的。
2. 对前面4年的工作做一个总结。
3. 将一些平时我絮絮叨叨,反复讲给周边人的一些话总结提炼一下,成体系的把整体的一些思路梳理一下。
4. 给出一些做软件的建议。
目的是啥
1. 码字不容易,首要的目标肯定是希望能影响到更为广泛的人。让我的一些观点和思考能在更大的范围内带来影响。工程师思维强烈的人一般都不爱抛头露面,所以写下来相对容易一些。
2. 为团队准备推出来的一个网站做一个预热和广告。至于为啥要做一个网站,这个网站干啥的我后续会逐步解答。
主要讲啥
作为一个码农,讲的自然是做软件的事情。大体讲下面的几个方面:
1. 平台软件在公司的定位。
2. 软件开发的一些要素和流程。
3. 工程师文化的构建
4. EulerOS团队准备做的一个新尝试。
Tips
Tips的目的是为了时刻提醒自己不要写着写着走偏了。
1. 软件有很多种类,不同种类的软件模式天差地别,本文的立足点主要还是基础性的平台软件。但这不妨碍文中很多的观点是普世的。
2. 文中只有华为,没有我司,目的是努力保持用一个“外人”的眼光来看待和剖析我们自己。
3. 为什么取名为黑白色的华为,黑色和白色是截然对立的两种颜色,正如中国文化代表的太极是黑白两色,对立而又统一,华为是一个充满了对立统一的复杂融合体。黑白显然没有对错之分,没有喜好之分。因此希望读者也不要以“对”和“错”这样简单的评判标准来衡量这一系列文章的内容和观点。
4. 后续的行文努力提出问题,然后给出我认为的答案。但我更希望是把很多问题抛出来,同时系统的梳理一下外部公司和行业的做法。能提供一些参考就很好了。
5. 整个系列没有经过任何一个层级领导的审阅,在华为,每经历一个领导的审阅,内容增加20%或者减少20%,思路扭转90度。当然,按照90度来算,经过4个领导后又回到了原点。这种悲喜剧每天在华为的不同角落重复上演着。为了减少剧情的跌宕起伏,我就原汁原味的发出来好了。
爱之初体验:
如果非要有一个开始的话,先讲讲初进华为的感触吧,不同于刚毕业的小朋友们,我们这些行业的老手,职场上的“老兵油子”进入华为大体都有一个共同的原因:
咬咬牙,进来看看华为咋回事,在外部世界看来,华为是一个神秘体,非常成功,低调,冷酷,寸草不生,使命必达。这都是表象,但问题是How让华为做到这些的呢?这几乎是所有外部专家来华为的理由之一。至于其它的,考虑的好像不多,因为没人知道自己能在华为生存多久。
经过几年的亲密接触,现在让我用一个最简单的词语来描述华为的话,我觉得就是两个字:独特
如果是一个新毕业的小朋友,或者是一个从来没有离开过华为的老员工,并不会有这样的感触,因为没有经历过别的公司。但是对我这样工作很久的工程师来说,华为真的非常独特,不论从宏观上还是微观上,华为都可以说很独特。
借用和其它来自不同领域的外来专家聊天时的总结,大约可以这么讲:世界上有两类公司,一类是华为,一类是华为以外的公司。
不幸的是,我在刚进华为的第一年没有及时把一些感受和细节记录下来,经过四年的浸淫,华为的套路已经埋到了我胸口,很多新鲜感和特别感都已丧失。我勉强总结一下还留存的感觉吧。
1. 层级既复杂又简单:你有很多领导,他们既管你,又不管你。你有很多的下属,他们既属于你管理,又不属于你管理。但实际上你似乎又不用太在意谁管理你和你管理谁,做事情就好了。
2. 规则很多却又很少:公司的条条框框之多就不用累述了,但是你慢慢的发现其实这些东西大多数情况下也只是一些paper work而已。
3. 既快又慢:华为几乎对所有新出现的东西都保有好奇心,对前沿追踪之快全世界也很难找到第二家,但是进展慢,决策慢,会议多,只说不练。
4. 既自信又自卑:宏观上华为具有征服世界的雄心,对任何对手都敢于亮剑,但是在微观上却又对外部的风吹草动惴惴不安,对其它公司的某些做法奉若神明。对进入公司前的“砖家”俯首帖耳,言听计从。
5. 手忙脚乱却又稳如泰山:整个公司上下都有一种焦躁的感觉,都想一招制敌,放倒对手。从微观上来看,无论产品线还是后面的支撑部门,总有种手忙脚乱的感觉,似乎从来都没有节奏感。你永远得到的信息都是:在xx点前要搞定xx。但是从宏观上,或者从外部角度来看却又稳如泰山,摧枯拉朽。
6. 既封闭又开放:华为自我封闭的体系造就了自己的一套语言体系,思维体系,逻辑体系。很多外部没有的词汇,即使词语和外部一样,但是其含义也有很多不一样的地方。但是华为对外部世界又拥有非常大的吸纳度,在每一个领域都努力吸收着外部的资源。
7. 既严酷又温情脉脉:工作的压力和严酷这个就不用讲了,但是华为却从来没有主动大规模裁过人。大多数都是自己辞职走的。从各方面来讲,其实华为是一个相当人性化的公司。
8. 。。。。。如果有新来的朋友可以继续补充下去。
如此多的对立和统一让人一开始会非常抓狂,造成的结果之一:大队培训时候我的天使,一个高职级的IBM 技术专家入职3个月后就离职了,但据反应,其实相关的部门对他的技术评价很好。到现在那一屋子新员工中的高职级留存下来的应该寥寥无几了吧。
而对我这样想“进来看看咋回事”的人来说,经过几年以后,非但没有将“咋回事”弄清楚,困惑反而更加多了。
上述的内容只是对公司的一个笼统感觉,你很难具体到某一个事情上。涉及到具体的工作,则很多具体的差异就逐步显示出来了。后面的章节就来结合我所从事的软件业务讲讲华为的“独特”之处吧。
做盒子的公司
毕竟是技术公司,自然要结合自己的专业来从技术角度讲讲这些差异性。作为一个软件工程师,进入华为后的第一个强烈感触是:
华为是一个不折不扣的硬件公司
这几乎是一句废话,但是如果从一个软件工程师的角度来看的话,做硬件的人的思路和做软件人的思路大体是两个平行线,就类似那本著名的“男人来自火星,女人来自金星”一样。刚进公司冲击确实很强烈。
我们就先看看到底是怎么不一样的吧。
其实分析的开始也很简单,我们就从公司内部很著名的一个词开始吧。即使在华为内部,很多人没有其它公司的从业经验,也能感受到公司是一个硬件导向的公司,他们将这种硬件设计的思维模式总结了一个词叫做“盒子思维”。那么何所谓“盒子思维”呢?具体的体现是什么呢?这个倒好像也没看到有人系统的总结过,只是这么一个笼统的表述。
如果认真分析一下,所谓“盒子思维”和软件思维的差别主要存在于
l 盒子的设计思路是自顶向下的分解式开发和演进。
l 软件的设计思维是自底向上的生长型开发和演进。
如果用图来表示的话,大体是类似这样的状况
从一个盒子出发的话,其尺寸,规格,输入输出等等一系列在设计之初就已经定下来了,而且无论是什么样的盒子,其规格都是一个有限集合。
因此,剩下的所有开发和设计就都依照这样的一些规格,尺寸来进行安排,无论是这个盒子上的一个螺丝钉,一块铁皮也好,还是里面的一个芯片,一个电路也好,或者是一个软件平台或者中间件也好,其核心目标都是将给定集合中的一个个指标逐一完成。No Bargaining。
技术指标制定的过于挑战性怎么办?指标还差xx%完不成怎么办?这太好办了,如果出现这样的状况,几乎是整个工程部门最激动人心的时刻。这一个个硬骨头在工程团队眼睛里几乎是一座座金山,意味着建功立业,意味着加官进爵。
我们会投入巨大的力量自顶向下逐一分解指标要求,逢山开路,遇水架桥。每一个部件都可以为某一个指标做出特殊的零件,或者变形成为这个盒子需要的样子。同时在这个过程中还需要斤斤计较成本,处理器扣到最后一个cycle,内存以bit来计算。
通过这样设计出来的东西是一个具有最低成本的脆弱的性能巨兽。
所谓脆弱绝非是华为定义的DFX里面的质量属性,而是指系统的不可变动性。这些一个个内部设计巧妙,配合严丝合缝,针插不进,水泼不入的盒子系统。他们可以在恶劣的外部环境下运行一年, 三年,十年都不出问题。直到有一天碰到一个大麻烦“升级”。
这里所说的“升级”并不特指一般意义上的升级,而是涵盖升级,业务更新,指标的变动,需求的变更,部件的更新,安全漏洞的修复等等。
当“升级”这个事情发生的时候,麻烦来了,因为系统太过精妙,设计毫无余量,已经再也腾不出来一个处理器cycle,一个bit的内存身位来调整了,所谓“升级”,在很大程度上相当于整个系统的重构。在这个时刻,整个系统的脆弱性又体现的淋漓尽致。
因此,整体上,“盒子思维”的设计逻辑是假定部件是可靠的,而且是不变的,或者是少变化的前提下,以整体架构设计来牵引部件的设计。是一种静态设计。
写到这里,我不得不加一个小tips,虽然我用了不少的形容词,用意只是想强调从软件工程人员看到的硬件设计模式,而非是一种好或者坏的断语。相反,恰恰是这样的设计思路造就了华为公司现在的成功,同时这个过程使得我真正理解了硬件的设计,甚至帮助我理解了公司的其他很多方面,甚至包括公司的开发流程等。因为这些特质就类似一个公司的基因,公司所有表象都是由自身的内在基因决定的。
甚至,我在风河的一个前同事,去了联想,做手机等业务,后来又被当时炙手可热的乐视招到了麾下负责智能电视业务。当我们两个坐在一起谈起软硬件设计思维差异的时候。这兄弟讲了一句话:在我们看来最没有技术含量,最没有技术追求的联想做硬件也比最有情怀,最有互联网创新精神的乐视做硬件靠谱。
结合华为已经取得的辉煌,我不能质疑这就是硬件合理的设计逻辑和思维。如果就是硬件设计的不二法则。我就以两个具体的设计案例来对比一下硬件和软件的开发思路的不同:
例子一:和一些人对设备设计的讨论。
例子二:关于智能摄像头的讨论。
硬件能力的压榨
曾经和不同的人讨论过上述的设计思路。大体的对话过程如下:
我:为什么要把内存等资源抠的那么紧?
工程师:为了节省成本呀?
我:一个内存条现在那么便宜,能省多少钱呢?
工程师:可是如果要是以百万发货来算,那成本就非常可观了。
我:即使这样,增加的硬件成本算起来也就千万级别,如果设备能发货一百万,这个成本并不高,而且是分摊到多年,每年就更少了。
工程师:可硬件比拼的就是性价比呀
我:可这样造成的结果是设备升级困难,更新困难,每一次动第一点东西都从上到下折腾个遍,以华为现在的人力成本,把你们硬件团队的成本,加上一大票配套团队的成本算上,这么计算的话好像感觉成本更高呀?
工程师:一直以来都这样,也都做成功了。
我:OK,这个是实锤
关于摄像头的有趣讨论
17-18年和做大视频,摄像头的部门有过合作设计。在整个讨论的过程中,确实是一个很有趣的过程。
做摄像头的SE们当然还是要以最低的成本,做出最高的性能,在指标层面要能超越众多的对手。
但是对我这样一个做软件的来说,看到的则是另外一番景象,当我了解到现在的摄像头,特别是高端摄像头内部实际已经是一个功能强大的计算机了以后。甚至它的运算能力不差于若干年前的中低端服务器,甚至会有AI芯片。一些天马行空的想法就会冒出来。
1. 如果是一个小计算机的话,是不是能把类似容器这样的基础设施部署进去。这样后续摄像头的更新,升级就和我们在云计算中心中的更新升级就一样了。
2. 所有的摄像头都逐步要和云中心连接,那么云和端业务理论上就能自由流动了。因为基础设施是一样的了。
3. 用容器标准化以后,我相当于对外界就标准化了,第三方厂商的应用也可以用容器镜像放到摄像头里,这个摄像头就不再是一个简单的摄像头,而是一个开放平台了,就类似现在广泛使用智能音箱一样。
4. 说到智能音箱,那为啥摄像头就只能当摄像头呢,加根天线,下载几个容器跑起来是不是能做5G基站呢?
5. 整点存储进去,跑几个游戏APP,AR/VR啥的,做成边缘计算的接入点好像也不错。
6. 一个城市几十万个摄像头,很多时候闲着也是闲着,特别是夜间没事的时候,能用这些闲散的资源做点大数据,AI运算,比如算点基因测序啥的。不就下发几个容器忙里偷闲跑一下么。多大个事儿。
7. 。。。。
类似的脑洞一下子就涌现出来很多很多。
在华为这几年经历过不少这样的思维碰撞。如果总结一下上述的两个例子所表现出来的差别。大概能理出来硬件人员和软件人员设计思路上的不同点,我归纳了一下,大体有如下的几点:
l 硬件人员对于部件的看法趋近于可靠的,静态不变的,但是软件人员对部件的态度是不可靠的,易变的,动态的。
l 硬件人员的设计思路总体来说是收敛的,有边界的,确定性的。但是软件人员的设计思路则是发散的,无边界的,不确定的。
l 硬件人员的设计思路总体来说是倾向于自洽的,自包含,可控制的。但是软件人员的设计思路更倾向于开放的,兼容的,容忍一些不可控制的。
l 硬件人员的设计思路总体来说是scale up的,但是软件设计人员的设计思路更倾向于scale out的。
随着对两种不同的设计思路的逐步理解,我也开始逐步了解软件在华为公司的定位和功能。下一章,我们就谈谈在华为这种硬件起家的公司内做软件会面临什么样的处境吧。
本文来自博客园,作者:易先讯,转载请注明原文链接:https://www.cnblogs.com/gongxianjin/p/15703732.html