创新性系统设计的三种避雷方法 - Apenwarr


研发创新性产品或系统之前必须考虑的三个问题:第二系统问题、鸡与蛋问题和分布与集中的选择问题。
有两种创新:持续创新和颠覆性创新。
可持续发展是大公司最擅长的一种。如果您想制造最快的x86处理器,没有人会比Intel做得更好(AMD有时会紧跟其后)。英特尔竭尽全力使他们的x86处理器变得更好。他们还收取最高的利润,这意味着最大的利润,这意味着可以将最多的钱投入到更具可持续性的创新中。没有两难选择。他们浪费了金钱和工程师,并为此付出了很多时间,而且他们大都实现了目标,并且得到了回报。
“颠覆性/破坏性/disruptive”创新的意思是专门指那种类型:一种全新事物被压抑了很长时间,然后突然爆发把猪都能吹飞的那种。
如果您是一家初创公司,并且认为自己具有真正的颠覆性创新,那么对您来说是个好消息。这是一个尴尬的投资者问题的完美答案,“如果(大公司)也决定这样做呢?” 因为诚实的道理是“他们自己的政治将把这种主动性从内部撕裂”。
 
第二系统
第二系统效应,这个术语来自Fred Brooks的出色著作《神话人月》。
通过以下步骤产生第二种系统效果:

  • 最初的产品从小规模开始,然后逐步构建,开始时预算较低且用户很少。
  • 随着时间的流逝,该产品越来越受欢迎并开始盈利。
  • 系统不断发展,越来越多的黑客入侵,早期的设计折衷开始成为瓶颈。
  • 工程师们想出了一个新的设计,可以解决我们所知道的所有错误,以及更多的错误!(他们可能是正确的。)
  • 由于该产品已经很受欢迎,因此很容易证明花时间“这次做对”和“为未来10年构建一个强大的平台”是合理的。因此,启动了一个项目以从头开始重写所有内容。预计需要几个月,甚至几年,以及一支庞大的工程团队。

听起来有点熟?早在1975年撰写本书时,人们就在尝试这种方法,而现在仍在尝试。它很少进展顺利;即使它确实起作用,也非常痛苦。
第二系统不仅仅是昂贵的,或可能会使您的公司破产或破坏您的用户社区。对Perl 6的关注严重削弱了Perl的进度;关于Python 3的工作使python社区破裂了十多年(现在仍然如此);尽管25年后创建的IPv6问题已经过时,但IPv6仍顽固地仍在尝试弃用IPv4。
至于解决方案,除了要尽最大努力防止第二种系统影响外,没有太多要说的。这完全是自欺欺人的。重构代码。即使似乎增量主义会做更多的工作,这也是值得的。
并行维护两个系统比您想象的要昂贵得多。
弗雷德·布鲁克斯(Fred Brooks)在他的书中故意将其称为“第二”系统,因为他认为,一旦经历了一次,任何设计师都将逐步构建其第三和以后的系统,因此他们知道后也许不必再经历这一过程。
一个更尴尬的相关问题是,大公司试图为自己的第一个系统构建替代产品,但是第一个系统的开发人员已经离开或已经学习了第二个系统课程,并且不愿意玩这种游戏。
这样,就组成了一个新团队来制造替代产品,而没有建立第一个替代产品的经验,但是拥有一组对其表面缺陷有深刻经验的用户的所有信心。无论如何,如果您发现自己正在构建或使用这样的产品,我表示哀悼。您可以期待数年的痛苦。
 
鸡蛋问题
原型系统设计中的另一个问题是“鸡-蛋问题”,简称:先有鸡还是蛋?
在构建软件或发布产品时,鸡蛋问题一直存在。HTML5 Web浏览器或HTML5 Web内容哪个先出现?当然没有。它们以松散同步的方式发展,追溯到HTML本身之前的第一个HTML实验和方式,然后慢慢发展,然后迅速普及。
由于采用新技术不是免费的(以美元,时间或两者兼而有之),因此除非人们看到了一些价值,否则人们不太可能采用它,但是反过来,也只有当他们看到了价值,价值才会存在的。这就是鸡与蛋问题。
办法是:降低采用成本,并在用户较少的情况下提供更大的价值。
视频游戏机制造商(任天堂,索尼,微软)已经熟练掌握了这一技术。他们是我认识的唯一每隔几年就故意这样做的人。他们使用的一些技巧是:
  • 补贴早期游戏机销售的成本。
  • 向后兼容,因此购买者甚至可以在没有太多本机内容之前就使用较旧的游戏。
  • 在新游戏机上“基本相同”但“看起来更好”的游戏。
  • 两代人之间兼容的游戏手柄,因此开发人员可以更轻松地移植旧游戏。
  • “独家发行标题”:联合营销,可确保为消费者(新游戏!)和内容制作者(游戏邦注:补贴,免费广告,更高的价格)预先提供价值。

IPv6除非100%全部部署它,否则几乎对任何人都没有任何价值(价值就是因此我们最终可以关闭IPv4!),但是却立即增加了复杂性和维护(构建和运行整个系统)并行互联网)。(banq注:5G问题是不是也类似这样呢?)
如果您的产品或公司遇到鸡与蛋问题,而您又不能清楚地阐明解决问题的具体计划,那么投资者绝对不应该投资于您的公司。解决鸡蛋问题应该是您列表中的第一件事,而不是事后的想法。
还有更多更高级的鸡蛋问题:Facebook是基本形式:使用Facebook人越多,用户彼此之间获得的价值就越大;类似传真是基本形式:拥有传真机的人越多,用户彼此之间获得的价值就越大。(如微信)
下一个升级是双向市场,例如Uber或Ebay。除非有司机,否则任何人都无法搭Uber车;但司机除非他能上班赚钱,否则不愿为Uber工作。优步必须吸引这两种用户(更糟糕的是:在同一地理区域!在一天中的同一时间!),然后再从这两种交易中获得任何收益。这很难。他们决定用自己的方式走向成功。
我知道最困难的水平是三边市场。例如,UberEats将消费者,驾驶员和餐馆联系起来。进行三方市场滚动非常复杂,昂贵且容易失败,因为:Uber优步已经在其网络中拥有了消费者和驱动程序,只需要在市场上增加“更多方面”即可。
如果您要建立一个单面,双面或三面市场,则最好了解系统设计:鸡肉和鸡蛋。
 
层次结构和权力下放比较
让我们从一个显而易见的问题开始:集中式控制结构与分布式控制结构的问题。如果我问您什么是更好的组织结构:一个层次结构组织或扁平组织,大多数人都被灌输说后者。同样,如果我问您是应该使用旧的集中式数据库还是精美的分布式数据库,那么每个人都希望构建后者。
我听说,货币的未来是分布式去中心化加密货币。如果您想击败审查制度,则需要一个分布式的社交网络。趋势很明显。有什么要辩论的?
实际的结构要比这复杂得多。关于这个主题,我所知道的最好的介绍性文章是乔·弗里曼(Jo Freeman)的 The Tyranny of Structurelessness,:这种明显的权威结构背后存在一种非正式的、未得到承认的和不负责任的领导,这种领导由于其存在被否认而更加有害。
“非正式,未经确认和不负责任的”控制在分布式计算系统中和在人类社会系统中一样普遍。
设计无层次、“扁平”控制系统的尝试都只会移动中央控制点直到您看不到它为止。人类社会结构都有领导者,无论是隐性的还是显性的,显性的领导者往往更加多样化。
互联网取决于中央控制的DNS和中央批准的TLS证书颁发者;全球互联网依赖于一个小团体来解决路由问题;区块链取决于那些可以决定在本周是否分叉的人!谁来经营受人欢迎的交易所;分布式无线电网络取决于中央政府频谱许可证。民主取决于行使您的投票权的人。资本主义取决于执行“自由”市场规则的人。
在我的第一家初创公司中,我们试图将开发团队作为一个统一的组织来运作,在这里,每个人都听取了他们的意见,每个人都可以辩论做某事的最佳方法。总体共识是,我们大都成功了。但是,当我的一位同事随后对我说:“我们的团队感到平等,但是,您永远不会忘记那只是您被强迫成那样的。“
确实存在分布式系统。地球的生态系统也许就是其中之一(尽管它变得越来越脆弱,并依赖于人类不破坏它)。使用Raft共识或类似算法的真正分布式数据库肯定存在并且可以正常工作。分布式版本控制(例如git)实际上是分布式的,尽管讽刺的是Git最终还是通过Github之类将其用法重新集中了。
CAP定理也许是分布式系统中一致性,可用性和“分区容忍度”之间折衷的最著名说法。通常,我们认为CAP定理适用于数据库,但适用于所有分布式系统。集中式数据库在一致性和可用性方面做得很好,但在分区容忍度上却很烂,威权结构都是如此。
在系统设计中,很少有适用于任何地方的正确答案。但是对于集中式系统还是分布式系统,我的经验法则是完全按照Jo Freeman的建议进行操作:至少确保控制结构明确。当它是显式的时,您可以调试它。
详细点击标题!