黑白色的华为(5)- 外来的药方

软件公司的发展趋势

前面四个章节主要是对公司软件层面做了一些分析,提出了问题,这一章我们探讨了一下这些问题如何解。

 

结合我前面所述亲身经历,到这里我们可以再看一下世界上软件公司的一些有趣的变化。先看几个问题:

1.       你能想到的排名前几位的软件公司是哪几个?

2.       你还能数出来的独立存在的只做软件的公司还有那几个?

3.       你上一次为软件付钱是什么时候?

4.       你所在的公司为什么样的软件付钱?

 

问题1大多数人的回答估计是微软,oracle,vmware等公司,即使是最年轻的vmware也有20年的历史了,也就是说,传统意义上的软件公司在近20年间没有再出现了任何新的知名公司了。

问题2估计大部分人数出来都不会超过5个。

问题3估计绝大多数人都回忆不起来是什么时候了。

问题4依照不同的公司回答会有不同。也就是在细分的专业领域市场,还是存在一些收费的软件的,但是这些软件公司规模都很小了。新兴的公司更多是依靠购买云服务,或者依赖开源软件。

 

整体上看,以售卖license为商业模式的软件公司早已经是过去式了,就我所在的OS行业来说,随着Redhat被IBM的收购,甚至是比单纯license更进一步的所谓的订阅付费,也就是靠卖服务为生的公司也已经被整合到了更大规模的公司中。成为这些公司的基座。

 

基本上从2010年以后,已经不再可能存在任何垂直领域的独立软件软件公司存在的可能性了。大型的软件公司要么转型,要么被整合到更大规模的公司内成为大战略的一部分。而小公司除了破产和被收购,已经不可能有第三条道路了。

 

软件卖钱,软件直接获得收益的时代已经结束了。

 

既然软件都不收钱了,或者并不直接和钱打交道,而且成规模,成型的软件最终都会成为巨头公司的一部分,那么软件现在的商业意义何在呢?这些纳入巨头麾下的软件系统的任务和定位应该是什么呢?这些巨头公司内的软件平台何去何从呢?

 

软件开发的四个层次

 

我对平台软件在大公司的定位做了四个层面的总结:

 

这张图应该是非常清晰了,无须更多的解释。整体上业务和平台部门的配合分为4层,目前华为的软件部门是处于最下面的两个层面,也是最传统的两个层面。我举例子讲讲上面的两个层面。

1.       第三层:例如redhat对我们的IT部门,芯片部门都有很强的钳制能力,如果EulerOS这样的平台能够在一定程度上打破这种钳制,使得我们的IT部门和芯片部门能够获得一些制衡的能力,我认为这就算是能达到第三个层次了。

2.       第四层:这是所有做软件的人最梦寐以求的层次。典型的平台如微信,Android。我重点来讲讲这两个平台。一个和华为息息相关,一个看起来和华为毫无交集,从这两个非常成功的平台软件来说起。

 

大道至简的平台软件设计

微信和android是让我顶礼膜拜的两个软件平台,从一个程序员的角度来看这两个软件非常有趣:

 

1.    他们都是从巨头公司成长起来的软件平台。

2.    一个是闭源的,一个是开源的。

3.    微信的功能简单到极致。

4.    Android的质量很烂。性能?你还要求性能,18个月不卡顿已经是华为对这个行业顶级的贡献了。

5.    微信就算现在源代码都开源给百度和阿里,你觉得BA有机会夺取微信的市场么?

6.    Android虽然开源?有谁能拿走android的任何东西么?换句话说,google要问大家要钱的时候,谁能不给?

7.    他们是免费的,甚至开始阶段还倒贴给钱让你用。

8.    Android过去,现在和未来看起来都不收费,但是google永远拥有收钱的权利。

9.    微信过去,现在和未来都不会收钱,但是你花的每一笔钱都和他有关系。

10. 。。。

 

如果按照上述描述来衡量微信和android,我可以肯定,这两个软件想要在华为立项甚至连Charter预审都过不了。

 

但是更有意思的是,如果延展对比思考一下,如果把微信、android和我前面章节描述我在WindRiver搞WRLinux时的设计思路做一个对比,相信大家自己会总结出很多共通的地方。其中最为重要的设计思路就是:

l  我们都是在试图在不同的用户之间,或者是用户和设备之间建立起一个桥梁,便于用户和用户之间,用户和设备之间的沟通和交流。

 

一旦建立起来这样的桥梁,并形成标准,或者是形成垄断,基本上就能达到软件开发的最高的层次。

 

解题的关键

结合四个层次,软件公司的变化。回到我们之前的核心问题:公司软件平台部门的任务是什么,如果平台软件部门的定位是最下面的两个层面,在公司的初期以及规模还没有达到一定程度的时候,是合理的,而且华为也是按照这种思路实现成功的。但是当公司的体量和规模发展到一定阶段的时候,如果还是处于最下面的两个层面,显然锦囊窘境和人力陷阱就很难避免。

 

那么如果我们平台部门的定位是最上的两个层面,那么锦囊窘境和人力陷阱就能避免了么?

1.       锦囊窘境很大程度能避免。如果我们在不同的领域能够拥有微信和android这样当量的软件平台,能够决定其它公司的生和死。这核心竞争力应该不会被任何部门挑战了。同时,各个业务部门也能逐步拥有了开发的节奏感,google的android团队做roadmap的时候会来征询华为CBG么?当做到行业“我就是我,不一样的烟火”的境界,这才是我认可的真正的“锦囊”。

2.       人力陷阱在很大程度上能缓解:目前很多我们的软件都是以开源软件为底子来进行构筑,如果这些软件是自研的,而且是引领行业的,行业标准的。自研的任何特性与生俱来都是这个软件的先天特性,那么很大程度上也就不存在“定制”这个名词了。同时也不存在随着外部的升级而被迫进行移植。但是为什么在这里我要说“一定程度”呢?因为这里面牵涉到另外一个话题:大型软件的设计模式。减少人力消耗并不是单单一个定位所能决定的。这个话题后面再进一步展开。

 

目前公司已经开始向3000亿美元的目标进发。要支撑未来3000亿的达成,那么,从我上面的分析可以看出来。应该对平台软件的定位做出调整:

 

平台软件在公司的使命应该从支撑产品能力这个初级定位向打破行业垄断,乃至建立行业垄断的高级定位进行转变。

 

我们做软件的目标就是要做出:

1.      简单如微信:微信简单到几乎所有功能是都“友商”提供的,但是它只是帮忙收钱而已。

2.       开放如android:开放到google把android的一切都交给所有人,但是却没有任何人能拿走google的一分一毫。

 

How

“在股市里赚大钱很简单,低买高卖,难的是How”,没有how的定位就瞎扯淡。讲上面的大道理很容易,难的是如何做到“我就是我,不一样的烟火”的境界。很难讲不同的业务有统一的How。让我们从一次欧洲之行开始。

 

我们需要的是产品,不是部件

2017年去德国参加Kubecon并拜访DT系统部,在这次旅程中,收获了两个至理名言,分别来自德电系统部和一个业界的大佬:

1.       我问:我们能提供DT系统部什么核心竞争力?DT系统部兄弟:我们现在需要的不是(WTF)竞争力,我们需要的是产品。(WTF是心里所念,口中未讲)

2.       我问:如何保持代码的干净和整洁?圈中大佬:只有没人用的东西代码才会干净整洁。

 

改变的起点要先把软件从一个个零件转变成一个个产品。

 

软件首先要是一个产品!

 

这里的产品并不是指一定要上市去销售,明码标价。一个产品可以销售只是产品的一种属性,并不是唯一的属性。微信,android不卖,单你无论如何不能否认他们是最优秀的产品。归纳一下一个软件产品所需要的几个特征:

 

1.    要有一个名字。比如1620不是产品名字,RTOS不是产品名字。ShitDog是一个很棒的产品名字。

2.    要有一个图标。

3.    功能要完备,不是一个玩具。

4.    至少有一个地方能下载。

5.    下载以后要能安装,而不是WTF需要一个工程师帮我再编译一下。最好白痴也能安装上。

6.    要有手册,至少有一个quick start

7.    要有tutrial

8.    最好有一个网站。

9.    要有white paper

10. 要好用,易用。

11. 最好有认证,越多越好。

12. 要有反馈的通道,比如bugzila,不是WTF welcome to join the conference….。

13. 要有roadmap。

14. 要有成功案例。

15. 最好有培训。

16. 最好有发布会。

17. 最好把top 3的工程师的头像显示在about上。

18. 要有合作伙伴,越多越好,用我的和我用的。基于我开发的和我基于开发的。

19. 可以考虑开源。

20. 也许加入某个基金会。

21. 可以卖钱,免费更好,甚至可能给用户补贴。

22. 。。。。

 

所有的要素都是要将一个平台软件做成一个产品,产品的目的好用,易用,让别人用起来,越多的人用越好。本质上,这就是一个构建平台生态的过程。

 

好了,终于说到生态了,这个在华为人人都在讲,没有一个人讲清楚的词语。

 

滥用的生态

具体到软件平台,没有比华为讲生态更多的公司了,但是也没有一个人真的认为华为在构建生态,我也不认为华为真的有人懂如何构建软件生态。因为所有人把一个简单的道理讲复杂了。所谓生态,要弄清楚两个根本性的问题:

1.    何谓构建生态?

2.    构建生态的目的是什么?

 

所谓构建生态其实就是“用我的人越多越好,所有人都用我是最终目标”。

 

有很多用户未必有很好的生态,但是没有很多客户一定没有生态。

 

获取足够多的用户是生态的第一要务。为了得到更多的用户,可以无所不用其极。

 

1.       开源本身不是目标,开源只是建立生态的一种手段,是为了更多用户使用。

2.       免费本身不是目标,免费只是建立生态的一种手段,是为了更多用户使用。

3.       送钱本身不是目标,送钱只是建立生态的一种手段,是为了更多用户使用。

 

1.               还有什么能比世界上所有的公司上了华为的贼船下不来更让我们高兴的事情呢?

2.               还有什么比全世界都使用华为的软件更能保证华为业务连续性呢?

3.            还有什么能比华为拥有摧毁你的实力但却承诺从不使用更具威慑力的事情呢?

 

生态的目标

上面的鸡血有点煽情,也有点空洞,通常在华为,除了老板和高层次的领导,没人关心半年以后的事情,对于生态带来的好处其实也说不清楚。

 

我不妨结合我的实际经验给出一个小的场景来说明一下吧。

我们先来看一张图片

 

https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3836497896,145874913&fm=26&gp=0.jpg

 

几乎每一个码农都相信自己拥有图片中的能力。

 

除去rm –rf /* 这样一秒钟改变世界的方式以外。大部分工程师团队都信心满满的坚信自己做的竞争力是公司在市场上攻城略地的最大功臣。同为工程师的我当然也希望事实是这样的,但是不幸的是,真相是残忍的。

 

如果真正上过战场,打过单子,见过客户的兄弟们大致应该同意我下面的说法:

“技术在竞标过程中的占比通常是在20%以下,甚至只有10%”。

虽然残忍了点,但世界真相确实是这样的,工程师视若生命的性能,功能在竞标中并不占主导地位。假定真的性能,功能在评标的过程中所占分数超过50%,这个世界上就不存在市场,销售这样的职业了。

 

码农真正的坚强是认清了世界残忍的本质以后依然保持乐观的精神。如果我们只是把技术单纯的认定为性能比拼,功能对决,自然会得到残酷的答案。但实际上,软件技术的内涵不仅仅是性能,功能。软硬件认证体系,售前售后服务网络,文档的全面性,技术的开放性,安全合规性,上下游的生态关系,甚至开源参与度。。。等等都是技术的一部分。其重要程度绝大多数时候要高于性能和功能。

 

在竞标中,可以有短板,不能有死穴,同时代的产品,除了开始阶段iphone这样石破天惊的划时代之作以外,大部分的产品在性能和功能上都是各有千秋,多数情况下很难拉开很大的差距。即使有一些小的弱点,也可以通过销售的“客户关系”等手段抹平。但是,只有一种情况下,任你是多高明的销售都搞不定的。那就是对手将你没有的一项资质,一个认证,一个certification写入到了招标书中。那连标都不用投了。这就是“死穴”。(当然,让对手把这个死穴写到招标书中,相关市场和销售可以打C了吧)。

 

认证也是平台软件的重要技术,是生态的一部分。

 

平台软件从来都不是一个单纯体,它的设计初衷就是一个生态复合体,我这里只用认证做了一个很小的例子。但是从这个例子中我们应该能得出这样的结论:

生态的目标不是让自己变得更强大,而是让对手变得更弱小,钳制对手的发展和壮大。

生态这个词,自打它被应用到IT行业的那天开始就不是一个防守性的词语。生态的本质是进攻。

 

l  不要认为获取认证对平台软件是一个很low的事情,做软件的,每获取一个证书,你的对手就会少一批。客户对你的信任感就会加一分。

l  不要害怕所谓的核心技术被泄露就把平台软件藏起来,每多一个客户用我们的软件平台,对手就少一个客户。每多一个基于我们平台开发的工程师,对手就少一个工程师。

 

平台软件所有的威力都来自于开放,在于敢于,乐于将我们做的东西让别人用起来。这种思维逻辑和华为传统上做盒子中藏有很多不为人知的“黑科技”完全不同,甚至是背道而驰。这是一个痛苦的思维转换的过程,但我相信华为早晚都要,而且必然走到这条道路上去。

 

如果我们明确了软件生态的本质,目标。然后呢?具体怎么搞呢?生态是不是就该开源,开放,拉合作伙伴。这些都很重要,但是做生态归根结底还是在做品牌。

 

做生态其实是做品牌

在华为,作为硬件和业务的附属品,软件本身是没有自己的属性的,更没有品牌意识。在公司里,一旦说到做生态,做软件平台,想到最多的词语是“开源”。其实本身开源不是一个多么高大上,超脱世俗的意见事情。简单说只是一种“促销手段”而已。而且仅仅是手段而已。

l  架构可以变,品牌不会变。

l  版本永远是品牌后面的一个数字而已。

l  有了品牌才可能被认证。

l  有了品牌才能认证别人。

l  有了品牌才能开放。

l  有了品牌才能被集成。

l  有了品牌才能集成别人。

l  。。。。

 

所以,当公司任何一个软件团队宣称要做平台,做生态的时候,我只想问三句话:

l  你是一个产品么?

l  你的产品名字是类似shitdog这样的么?

l  你的产品有一个图标么?

 

如果你的答案是“Yes”,那剩下的事情就很简单了,使尽一切手段让名字和图标名扬天下。大家都上了你的贼船后,怎么宰割就很随心了。

 

一管鸡血差不多打完了,谈完了生态,品牌,我们还得回答下一个问题:是不是所有软件都适合做生态?什么样的软件应该做生态,做品牌。这个问题在下一章会做出探讨。在此之前,谈一下最近公司炙手可热的安全可信问题。

 

 

关于安全可信

 

最近公司被安全可信搞的焦头烂额,在这里我们稍微探讨一下这个话题。

 

安全可信是一个很大很大的课题,首先这不是一个纯技术问题,我只是从我的经验角度来讲一下我对这个事情的理解。

 

安全&可信

现在公司对安全可信做了非常多的定义,包含的内容非常广泛,包括安全,可信,可靠,韧性,等等等等。我倒是觉得安全和可信这两个东西相对是一个维度,其它的衡量标准是另外的一大类维度。不妨先把安全可信这两个先讲讲,因为这个似乎更是贴近公司现在所面临的挑战。

 

即使是安全可信,实际上也是两个不同的概念。安全+可信。我不知道学术界如何定义这些东西。至少我的认知中,安全和可信是两个不同维度的事情。

 

l  可信更多强调的是过程的透明,产品的可回溯行,也就是说“你给我的东西一定是你所宣称的东西,而且我可以有手段来检查”

l  安全是保证系统不出安全漏洞,尽可能的不出安全风险。为什么是尽可能,因为完全没有安全漏洞,完全不被攻破的系统在这个世界上根本就不存在。所以说,即使我可信的把我的东西都给到你,而且你也确信你所得到的东西就是我所宣称的东西,也没法说这东西是安全的,没有漏洞的。因为这根本是两件事情。

 

对于安全这个问题,既然根本就做不到100%的安全,这个话题就不讨论了,这个是留待安全专家来解决的问题。我们讲讲可信这个维度把。

 

可信有两个维度,一个内部可信,一个是外部可信。内部可信更多是我前面所讲的大规模软件开发中的一些原则。这些原则本质上是发布的产品具有可追溯性,可审计性,而且这些可追溯,可审计不是针对公司内部,针对公司外部的第三方机构也是可以做到的。

本质上内部可信是为了保证自证清白,就是我自己觉得我自己是清白的。但是自证清白是无论如何也无法取信他人的。取信他人核心的目标是达到外部可信。外部可信的唯一方法就是旁证清白。之前总结过一页PPT,贴上来供大家参考

基本手段说白了就是多交朋友,多拿认证。

 

而要达到这一点的前提就是“软件首先是一个产品”,任何一个认证机构,任何一个合作伙伴,认证,合作的基点是你得是一个完整的产品,没有一个组织会对一个无法拆解出来的零件进行认证的。这就又回到了前面讲到的内容。

因此,从上述的角度来讲,软件产品化是解决可信的一个必要条件。本身安全可信是一个产品的属性,当软件成为一个正式产品的时候,这种属性就自然成为团队需要考虑的一个天然的工作,而不是自上而下的一种工作要求。这也是这一章为什么要强调产品化的一个重要方面。

 

如果明确了平台部门的定位和任务。下面自然要讲讲什么样的系统才适合这种做法,具体的做法是什么了:不是银弹的银弹

posted @ 2021-12-17 20:26  易先讯  阅读(68)  评论(0编辑  收藏  举报