仓库源文

.. Kenneth Lee 版权所有 2019-2020

:Authors: Kenneth Lee :Version: 1.0

产业生态的原理和作用


生态的本质是依赖,不是关联。

理解生态的这个本质是我们看待一切生态运营策略的关键。我制造汽车,你生产汽油,我 们共同构成生态,没有你的汽车,我的汽油卖不出去,没有我的汽油,你的汽车也卖不出 去。这样构成生态,即使我们互相竞争,也会斗而不破,因为破了,我们任何一方都不会 存在。

我们强调生态的本质是依赖,而不是非依赖的关联,是要避免两种无法构成生态的情形。 第一种情形是竞争:我做Android,同时做手机,而且做得贼好,别人仅仅做手机,这生态 就完蛋了。他们是怎么都不敢用Android也做手机的,因为做不过你。做Android的团队如 果同时负责做手机,这构不成生态,即使你把你的Android开源,其他人也从你这里拿代码 ,但拿完了,一定和你分裂。否则无法和你竞争。这样你们仍在某个层面构成一个生态( 不稳定的竞争态),但你的Android开源本身不是在构造生态,因为你们没有合作关系。

运作生态很容易在这个地方犯错误,你做一个开源的Linux发行版,免费使用,别人可以基 于你的版本做出商业发行版供给很多人使用,你也做商业支持,供给很多人使用。你确实 免费和贡献了,但仍无法营造生态,因为你实际上制造了竞争,而且是一个非常强有力的 竞争——一个免费的商业发行版,其他收钱的商业发行版还能活吗?被击败的竞争对手要不 离开这个生态,要不在更大领域上成为你的敌人,这就没有生态了。

第二种无法构成生态的情形是反过来的,既然不应该竞争,那就不竞争,不做别人做的东 西。但这仍无法构成生态,既然你在生态中没有价值,没有努力的目标,你就没有存在的 东西,你的投入本身将会成为破坏性因素——它是多余的,多余的东西不能创造效益,就会 变成祸害。比如,他会收纳非本生态必须的需求破坏本生态的竞争力。

仍拿这个商业Linux发行版来举例,你可以考虑做一个半成品的商业发行版,让其他人完成 最后一步,这样就构成一种配套关系了。你不靠这个商业发行版来赚钱,你投入一组人支 持生态的发展,完成商业发行版70%的工作,剩下的30%让你的合作伙伴来拿。但这个模型 是有问题的,这样一来,你就成为“工作的对象”了。你那70%的工作向谁靠拢,谁就在竞争 中占据优势,这个合作关系就不是来自生态利益,而来自和你的关系。你那个完成70%的团 队就会成为被腐败的对象,即使他们心境很好,大公无私,他们仍没有“公”可以追求。你 需要另一个业务去驱动他们,比如Android通过GMS的市场占用率控制目标,你做商业发行 版,只要保证你的数据库在这些商业发行版上都能跑,可以交付更多的用户,你的目标就 可以达成,这样这个团队才会有动力去真的“大公无私”:谁能给我打动更多的数据库用户 ,或者让潜在的用户都给我先用以这个为根的发行版,我就向谁倾斜,这样才能构成生态 。一个可以持续的生态,每个人都是有利益支撑的,没有人可以独善其身。这样你的生态 营造工作才是活的,是循环的,而不是单方面的资源流失。这就叫“上善若水,水善利万物 而不争”,你既像水一样贴紧了所有的生态伙伴,又不和他们发生冲突,因为你要得到的东 西,和他们要得到的东西是双赢的。你巴不得他们进步,他们也巴不得你成功。就算你们 口头上互相批评,实际上你们是不会对对方使坏的。除非你们蠢到一定的高度。

理解这个原理,我们再来看这个问题:为什么我们需要生态?

生态的作用是力量。这些力量都来自人数,这可以从两方面来说,一方面纯粹是人多力量 大的人数:你做数据库,仅凭这个数据库的竞争力,可能卖不进某个银行,他做发行版, 可能就是有办法卖进去,也许是因为他七大姨的儿子邻居那条狗认识银行采购经理,可能 是他们的发行版支持国密SM4算法,也许是他们欠了银行的钱还不起,拿那发行版抵债,都 行。反正多一个人就多条路。这些路可能你事先都想不到,但构成生态就构成了力量。这 种力量和国家的力量,公司的力量,朝廷结党的力量一样,都来自人多提升整体实力,从 而让每个个体分到更多。

生态的第二个力量是构架,这是对软件本身来说的。软件构架的目的是为了让软件能活得 更久,活得更久的前提就是你响应变化的能力更强,响应变化的能力更强的前提就是你预 判了未来可能面对的问题。所以,你做软件,只凭你一个领域的经验,你的预判必然少了 东西,但如果整个生态帮你做判断,你做错的机会就会大大降低。

很多人进行社区活动,上传代码到主线版本,或者为标准组织增加新的设计,觉得效率很 低,觉得只要关起门来就取得优势,不需要受到其他人的限制了。这其实没有看到生态本 身的作用,其他人限制你的那些问题,难道你未来不会碰到的?你不去响应这些质疑,你 就不会碰到这些问题?——只有你一直跟随,不参与标准制定,不独立发展一个技术,而是 依赖别人的标准和成熟技术,你才能这样活着。你要实现自主,构架是非常重要的东西。 很多人奇怪操作系统每个技术都不难,为什么没有几个公司能做出通用操作系统来,核心 问题在架构上。

说到自主一个构架,我们再讨论一个问题:每个做过新软件模块,并持续使用几年乃至十 几年的软件设计师应该都有这个体会:软件的第一个版本,基本都是会做错的。因为第一 个版本其实你就是做架构——比如仅仅把功能打通,模块的角色分配完成,仅此而已。然后 到使用的时候,那些脏问题就上来了:多线程的并行度,Cache对齐,可靠性,可测试性, 可维护性,性能竞争导致你加入的各种机巧,顺便插进来用来满足相关模块需要的各种钩 子。被集成系统使用的各种库和你使用的库的冲突,这些问题总有几个你让你万劫不复, 死无葬身之地。现在做大型平台软件,没有人敢所有部分都是新的,如果所有部分都是新 的,这个东西毫无机会。通常做法是90%是成熟的方案,然后做10%的创新,平台团队的力 量去保护这10%的创新,然后让生态去发现那90%哪里不合时宜,然后再一点点换,提高竞 争力,不行就退回来,这是现在所知的,唯一可以达成的路。那种希望关着门弄,指望一 天一飞冲天天下知的,通常就像《东成西就》里钟镇涛演的王重阳一样,闭关练成天下无 敌的神功,然后出关就挂了。而生态在构架上的作用也就在这里。细究起来,这仍是人多 的力量。

最后谈谈什么人可以成为构成生态的一部分。从前面我们已经可以看到了,生态是利益构 成的,爱好者不构成生态,利益相关人才构成生态,爱好者只能制造混乱,通常不能制造 生态。爱好者可以进来看看,弄弄这里,弄弄那里,他们并没有目标(或者说他们的目标 只是好看),因为他们背后没有利益支撑,他们可以把生态引向任何一个方向,我们前面 已经说了,生态必须被利益目标牵引,没有利益目标牵引,不形成利益动力,这个生态的 建立就没有意义。所以,你要营造生态,就算在构架初期,都不要指望做一个“玩具”出来 ,吸引别人来“玩”,因为只有爱好者才会在乎玩具,玩具构不成生态循环,你就会收入错 误的需求驱动,错误的需求驱动会大大限制你的构架生命力。因为构架生命力本质就是你 新加入的约束什么时候多到勒死你,你加入不能带来利益的约束,结果就是没有赚够钱( 利益)你就不能加需求了。而玩具的生态,通常做到好看就可以了,谁都不会去碰“脏”问 题的,只有要解决某个利益问题的才会真得不得不去碰脏问题,不碰脏问题的需求,怎么 可以打磨你的构架?换句话说,你增加一个Cool功能,哪里能比解决现有功能使用到某个 资源受限场景的优化有价值?后者解决了能带来市场和利益,前者就仅仅是Cool而已。

所以正确的做法,你要做一个长远的东西,你需要第一次出来就有90%以上都是成熟的东西 ,只有10%或者更少的创新,然后立即让生态去打磨。这个生态不见得是开源或者标准组织 ,也不见得是你所有的合作伙伴,或者你全部的目标市场,但它必须是一个真实的,背后 有商业利益的环境,一波波这样的利益推送才能保证你的架构演进是坚实的。这样的策略 ,听起来不像是软件构架演进必须的条件,其实在今天的IT和移动等市场,几乎已经很少 新软件可以越过这条路了。