国内计算机界「跟随」了很多年了,很多工程师并没有和竞争对手「正面竞争」的准备。这是合理的,弱就是弱,强就是强。弱就应该用弱的策略,强就应该用强的策略。你月入三千,还要思考「如何引领消费风潮」,这毫无意义。你从来就没有见过计算机长啥样的,要做一个比快排更好的演算法,这也没有意义。你没有见过计算机,就好好读计算机说明书,按前辈的规矩来做软体,混口饭吃就对了。

大国以下小国,乃取小国。小国以下大国乃取大国。

共同取利而已。

但这个心态是不能用于竞争的。也许我们不想竞争,但竞争到了面前,竞争就是竞争了。跟随是无法赢得竞争的。最近在看一个国内晶元的方案,其中有一个策略是:二进位兼容(或者可翻译)到其他的指令集。这种想法乍看很吸引人:这样可以复用别人的生态,大大加速整个发展,有什么不好?

从眼前来看,一切挺好,但从架构竞争的角度,这是死路。有兴趣的同学不妨去看看这本书《Perspectives on Soviet and Russian Computing》,然后去调查一下Elbrus现在的状态。它为什么会死得渣子都不剩?因为你很快地追到了最前面,但你也锁死了再向前进的方方面面了。你从介面一级就依附了别人的生态,在一个别人的地盘上和别人正面竞争,这在逻辑上就不会赢。就好比你一个羽毛球运动员,跑去和另一个乒乓球运动员重新训练,竞争乒乓球比赛,你的赢面就几乎没有。你从一开始就拦住了找到对方破绽的可能性了。

请注意,我没有反对做这样的特性,把这个作为某种很特殊的战术,在一定的范围内实施是可以的,但作为战略,这是非常危险的。

同样的,当我们做一个竞争性的架构设计,我们的心态也必须非常开放,从一开始,就需要完全站在:我有什么筹码,对手有什么筹码,我怎么在整个游戏中可以发挥我的优势,让游戏规则向我倾斜。这才是正面竞争的态度。如果你还指望对手做了什么,所以我也要做什么,把他们做过的事情重新做一次。那你选择了一条必死的道路。

在架构上,确定这一点非常重要,因为每个特性的好,我们都知道他好,但构架上,把什么都好都做了,就失败了。正面竞争的逻辑和跟随的逻辑是不同的。所以,收起你们那些「谁谁谁有XXX」的逻辑,收起对手的手册(没说不要看,不要拿来做证据而已),我们确实应该研究对手,也应该使用对手的最佳实践,但在做自己的设计的时候,请保持在我们自己的逻辑链上。在确定要竞争的时候,你就已经没有办法依附了。


推荐阅读:
相关文章