草庐IT

吴军《浪潮之巅》阅读随笔(二)信息产业的规律性

靠谱杨 2023-03-28 原文

在这本书上册的最后一章《信息产业的规律性》中,有几个问题让我很感兴趣。

1、70-20-10 律

在信息科技某个领域发展成熟之后,一般在全球容不下三个以上的主要竞争者,这个行业一定有一个老大、是这个行业的主导者。但是他一定会遇到一两个主要的竞争者,其余的是一大群小商家。老大是主导者,占据着一半以上,通常是百分之六七十的市场,并且制定并解释了这个领域的游戏规则。老二、老三有自己稳定的百分之二三十的市场份额,有时老二老三会挑战老大,但是总的来说还是受老大欺负的时候多,其余的小商家占很小的市场,对老大马首是瞻,老大老二不太在意这些小商家,这就给了他们有挣小钱的机会。老大密切关注老二,防止老二做大。这样一来,老大70,老二20,其余10,在信息产业领域大抵如此。

个人电脑领域:微软老大,苹果老二

个人电脑处理器领域:英特尔老大,AMD老二

全球网络设备领域:华为老大、思科老二

互联网领域:谷歌老大、Meta【Facebook】老二

IT服务领域:IBM老大,甲骨文和惠普是老二老三

(书里是这么举例的,这个排名要结合作者成书的年代背景,仅供参考)

2、为什么信息产业领域的公司比传统工业的公司更容易形成主导优势呢?

比如传统工业里,石油领域,尽管埃克森美孚的营业额和市值都很高,但是市场份额却远远占不到百分之六七十,Shell石油、英国石油【BP】都可以与之分庭抗礼。再比如汽车工业里,不管是通用还是丰田,都没能像信息领域中的公司占到这么高的市场份额,其他的诸如金融、医疗、零售都达不到信息领域的程度。作者大概从这几个角度做了分析:

  • 传统行业研发成本低,但是制造和销售成本高,所以研发成本可以通过规模经济来抵消,但是制造成本不可以。而信息产业的某些产品的制造成品是很低的,比如对于甲骨文公司来说知道一个软件和拷贝一万份其实成本并不是很高。
  • 信息产品生态链耦合度高。比如一旦某个操作系统开始领先,那随之而来的一系列配套软硬件都会出现,这使得其他竞争者很难取胜。但是传统工业的生态链耦合度就没有这么高,比如你这一次买了通用的车,下一次可能就想买福特了。
  • 不同用户对于不同的传统工业产品,用户的品位不同,对性能的要求也不同,所以很难出现某一款牙膏席卷全球,达到百分之六七十的市场份额占比,这是很难很难的。但是对于信息产品,好就好,不好就是不好,从价格和功能上看都是硬性的,所以用户在选择科技产品的时候的想法会和选择传统工业产品时有所不同。

3、诺威格定律

一家公司的市场占有率超过百分之50之后,就无法再翻番了。

简单理解就是当你走到了最高点的时候,不管你再往哪个方向走,那一定是下坡路。

这个定律决定了一个在市场占主导地位的公司必须不断开拓新的财源,才能尽可能做到长盛不衰。

有两种方式可以做到开疆扩土,

一是扩展,即把公司现有的技术和商业优势横向扩展到相关市场。

二是转型,这就比较难了,而且风险非常大。


书里有一段话写的非常好,就引来做一个小结吧。

科学技术无疑是我们这个时代推动社会前进的主要动力。一次次技术革命的浪潮造就出浪尖上的成功者,淘汰掉赶不上大潮的失败者。当一些人还在为那些伟大的公司的消亡感到可惜的时候,我想说的是,任何过气的公司退出历史舞台,是它们对世界做的最后一次贡献,唯有如此,才会有更多的资源分配给新的公司、新的行业。

一点补充:

1、科研必须与产品相结合。

2、摩尔定律:每18个月,计算机等IT产品的价格就会下降一半,或者说他们的性能会翻一番。

3、安迪-比尔定律【英特尔的安迪·格鲁夫和微软的比尔·盖茨】:简单来说就是硬件虽然在摩尔定律的影响下会降价,但是用户还是不得不更换自己的设备,因为新出现的软件会吃掉硬件性能提升带来的红利,让我们不得不买新的硬件来支撑现有的软件,就比方说用十几年前的手机打王者可能游戏体验就极度一般了,甚至可能是完全带不动。

4、反摩尔定律:一个IT公司如果今天和18月前卖掉同样多的、同样的产品,那它的营业额要降一半。这逼着所有的硬件设备公司必须要跟上摩尔定律规定的更新速度才可以实现盈利。

5、成功的关键不在于做对了多少事,而在于少犯了多少错误。【巴菲特】

6、什么是一个IT员工最看重的?一个技术人员是否愿意为自己的公司尽全力,很大程度上取决于他是否得到了重视。重视一方面体现在收入,另一方面体现在他在公司有多少发言权。

7、如果羡慕成功者的富贵,请别一味模仿他们富贵后的事,那些名牌表呀包呀酒呀车呀,都是他们富贵后的事,硬撑着模仿了,也只能图个穷开心而已。要模仿,就模仿他们富贵前的事,他们那鹰般的探查、蛇般的专注、蚁般的搜括、蛹般的耐心,全是些风吹日晒、灰头土脸的事啊。

8、硅谷对叛逆者的宽容和正确引导与帮助:硅谷的叛逆者们所做的是有节制的颠覆行为,他们更多地显示出建设而不是破坏的特点。

9、宽容叛逆者,引导他们成为建设者。

10、凡是现实的都是合理的;凡是合理的都是现实的。【黑格尔】任何事情都有它发生、存在和发展的理由,当然如果这个理由不成立了,它终究会消亡。【恩格斯】

有关吴军《浪潮之巅》阅读随笔(二)信息产业的规律性的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  4. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  5. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  6. ruby - what is - gets is a directory - 错误信息 - 2

    我遇到了这个奇怪的错误.../Users/gideon/Documents/ca_ruby/rubytactoe/lib/player.rb:13:in`gets':Isadirectory-spec(Errno::EISDIR)player_spec.rb:require_relative'../spec_helper'#theuniverseisvastandinfinite...itcontainsagame....butnoplayersdescribe"tictactoegame"docontext"theplayerclass"doit"musthaveahumanplay

  7. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  8. ruby-on-rails - 在 irb 中阅读文档 - 2

    我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby​​有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef

  9. ruby - rspec: raise_error 用法来匹配错误信息 - 2

    我使用raise(ConfigurationError.new(msg))引发错误我试着用rspec测试一下:expect{Base.configuration.username}.toraise_error(ConfigurationError,message)但这行不通。我该如何测试呢?目标是匹配message。 最佳答案 您可以使用正则表达式匹配错误消息:it{expect{Foo.bar}.toraise_error(NoMethodError,/private/)}这将检查NoMethodError是否由privateme

  10. ruby - 为什么要使用嵌套的 Ruby 模块来获取版本信息? - 2

    我最近一直在查看一些gem的源代码。我经常看到的一个习惯用法是使用嵌套模块,其中包含连接到版本字符串中的版本常量,即围绕此类事物的变体:moduleChunkyBaconmoduleVersionMAJOR=0MINOR=6TINY=2endVERSION=[Version::MAJOR,Version::MINOR,Version::TINY].compact*'.'end以这种方式存储库版本信息有什么好处(如果有的话)?为什么不这样做:moduleChunkyBaconVERSION='0.6.2'.freezeend 最佳答案

随机推荐