截至2014年7月,创立于2004年的 Facebook 已跻身标准普尔500指数中最有价值公司前20名,这家成立仅10年的软件公司与 IBM、Oracle 和可口可乐等公司并驾齐驱。3 在2014年市值增长最快的五家公司中(表1),有三家是软件公司:苹果、谷歌和微软(事实上,有人可能会说英特尔也受软件驱动,使其成为五分之四)。
优步、特斯拉和 Airbnb 等热门新兴公司正在分别颠覆传统的出租车、汽车和酒店市场,它们从根本上来说也都是软件公司。
相反,在2014年上半年市值损失最多的五家公司(表2)大多是经营了几十年的传统企业。
鉴于这些信息,一个符合逻辑的问题是:为什么基于软件的公司正在接管世界?2 答案很简单,因为通过软件驱动公司能够使它们具有响应性和数据驱动性,从而能够快速应对变化。为了解释这一点,让我们非正式地看一下控制理论。
在控制理论中,开环(无反馈)控制系统仅使用外部输入来计算系统的控制输入,而不考虑系统的当前输出(图1)。开环控制系统在完全了解静态世界的情况下运行良好,但当环境演变或没有受控系统的完美模型时,它就会崩溃。开环系统的一个例子是出租车司机,他每次行程结束后都会返回同一家酒店与他的出租车同行闲逛并抽几支烟,只有很小的机会接载新客户,而没有考虑到市中心的剧院表演刚刚结束,因此需求在其他地方。
闭环控制系统会考虑系统的当前输出,并将此信息反馈给控制器,控制器将这些测量值与当前的外部输入相结合,以持续校正和优化受控系统(图2)。例如,优步了解当前的交通状况、任何时刻运输的确切供需以及客户的历史价格弹性;因此,它可以实时优化出租车乘车的定价,并将司机引导至运输需求最高的地点。
在 Microsoft Office 中,新功能总是通过广泛的用户研究引入和测试——直到 Office 2007,当时现有的用户界面被“ribbon”取代,这让许多用户感到沮丧。当 Windows 8 中开始按钮消失时,世界上每位 Windows 用户都失去了他们积累的控制 Windows 操作系统的肌肉记忆。当公司变得老旧并对反馈和外部输入充耳不闻时,就会发生此类失误。忽略反馈的公司会变成无控制系统,其输出仅基于其内部回声室(图3)。
内部流程和控制风险的愿望开始凌驾于真正的创新之上。投资者优化季度业绩和底线的压力进一步助长了这种充耳不闻。最后但并非最不重要的一点是,由于递归反馈系统长期以来会排斥那些对外部刺激持开放态度的员工,而偏爱那些崇拜传统和流程的人,劳动力也变得僵化。
在未来十年,每个企业都将实现数字化,并有效地成为一家软件公司。利用软件以及一般的计算思维,使用闭环反馈系统使企业能够响应变化,这对于在这个业务=数据+算法的新世界中生存至关重要。以下是一些响应式公司的例子。
与传统的出租车公司不同,优步不拥有自己的车队。它的价值在于优步用来将数据转化为决策的实时数据和算法。在几年内,优步很可能会通过用自动驾驶汽车取代司机来自动化等式中的所有人类,而自动驾驶汽车本身只有在软件技术进步的情况下才有可能实现。
Netflix 不运营自己的数据中心,而是将其整个运营建立在公共云基础设施之上。简而言之,云计算将硬件虚拟化为软件。5 云计算不是拖入物理计算机或存储设备,而是通过几行软件代码来实现相同的效果,这些代码可以在眨眼间让公司添加计算和存储容量,或释放盈余。
软件通过大幅加快输出和输入之间的反馈循环来提高敏捷性。过去,公司可以每季度衡量一次绩效,这使得难以快速适应环境变化。相比之下,Facebook 每天多次发布其产品的新版本,增强功能和修复由网站实际使用的实时反馈决定。亚马逊和 Booking.com 等公司不断对用户进行 A/B 测试或多臂老虎机实验,以优化其网站上的购买率。
亚马逊甚至免费向第三方开发人员提供其 A/B 测试技术(https://developer.amazon.com/public/apis/manage/ab-testing)。Facebook 和 Netflix 等其他公司也是如此,它们将其大部分内部软件作为开源软件提供。
持续交付和 A/B 或多臂老虎机测试不仅要求快速推出新产品,还意味着可以快速回滚错误的决策。接受决策可能出错并承认错误需要勇气,而传统的规避风险的企业往往会通过引入流程来消除这种勇气。
响应式企业接受失败总是会发生,并通过有目的地制造失败来保护自己免受级联故障的影响。仅仅是创建有意的失败以使系统更可靠地应对失败的想法就会立即让许多传统的中层管理人员感到震惊。然而,在 Netflix,在数据中心“放出一群猴子”来拔出虚拟电缆并造成破坏是很常见的做法。许多敏捷开发方法建议在编写代码之前编写测试。然而,不可能在测试环境中忠实地模拟已部署代码运行的环境的复杂性。相反,软件应用程序故障应像任何其他故障一样对待,立即在生产环境中部署代码,并在出现问题时回滚代码。
基础心理学告诉我们,为了让人类学习(即进步),必须立即获得关于他们行为的反馈。吸烟者继续吸烟是因为点燃香烟可以给他们即时的满足感,但肺部疾病的反馈效应会在几年后才出现。开发人员也是人,因此,可以通过向他们提供关于其代码质量的即时和物理反馈来激励他们编写更好的软件。公司可以通过让开发人员佩戴寻呼机来实现这种反馈循环,以便在出现问题时在半夜叫醒他们,并让他们负责“整个堆栈”(也称为 DevOps 模型)。将开发过程与运营方面脱钩会消除系统中宝贵的(递归)反馈循环,从而降低系统的整体响应性。
查看闭环系统的另一种方式是将其视为(非确定性)米利机。7 这是一种有限状态机,其中下一个输出值和下一个状态由当前状态和当前输入决定(图 4)。米利机视图强调组织的“企业记忆”,并假设关于当前输入的决策可能受到使用过去的输入和输出在多次迭代中积累的状态的影响。然而,在元级别,企业运营的环境也会随着时间推移而变化;因此,企业记忆需要偶尔“重置”,因为它不再跟踪相关输入。
以微软为例,自 1975 年以来,微软积累了令人印象深刻的盒装产品企业记忆。当世界渴望盒装软件时,微软机器能够优化输出以产生惊人的利润。然而,环境发生了变化,开始需要云服务,突然,优化盒装软件的知识成为增长的障碍。微软最近不得不裁员数千人,以“忘记”过去并转向“云优先”方向。
每家公司都应该有一个“第十人”(“当九个人同意某件事时,无论这个想法多么不可思议,第十人都有责任不同意”)6 或魔鬼代言人,他们将一定程度的随机性和混乱注入到流程中。这可以防止陷入局部最优的陷阱,或者更糟的是,由于客户偏好的变化被忽略,并且没有人敢指出皇帝没有穿衣服而做出错误的决定。
从人员的角度来看,运营一家由软件驱动的公司与运营一家传统企业完全不同。一旦公司意识到成功的道路是接受响应式企业由软件驱动,它就必须应用开环反馈控制来使引擎平稳运行,而且,它必须深入地将开发人员视为增长的引擎。
软件开发人员与传统的穿着西装的企业员工截然不同,而这一方面往往是让目光短浅的老板最难理解的。也许这种差异最简洁地表达为:“你不能与绵羊赛跑,你也无法放牧赛马;”8 以及“像养蜂人驯养蜜蜂一样驯养开发人员。”1
Netflix 幻灯片演示中描述的“我们文化的七个方面”(价值观是我们所重视的;高绩效;自由和责任;情境,而非控制;高度一致,松散耦合;支付市场最高薪酬;以及晋升和发展)为以软件为中心的企业提供了人员管理价值观的清晰表述。4 以下是我们对 Netflix 七个核心价值观中四个的看法
情境,而非控制。 任何曾经进行过即兴爵士乐或即兴戏剧的人都知道,创造力只能在严格的约束下蓬勃发展。让开发人员在所有可计算函数的广阔软件宇宙中漫无目的地游荡是项目失败的主要原因之一,而不是因为缺乏流程或计划。如果我们为开发人员提供关于优化什么的严格指导和命令,并向他们提供关于他们的决策对这些目标的后果的即时和实时反馈,那么极客的竞争天性将会占据上风,系统将迅速迭代到最优解决方案。中层管理的唯一目标是提供和执行这种情境,并在这些明确定义的范围内保持开发人员的快乐和高效。我们不关心开发人员对企业长期战略的意见。
支付市场最高薪酬。 在职业体育运动中,花费数百万美元来吸引和支付顶级球员以组建一支可以在分区顶级联赛中竞争的球队是很正常的。为了吸引和留住最优秀的开发人员(并吸引年轻人追求高科技事业,而不是成为律师或股票经纪人),他们需要获得丰厚的报酬,并根据他们交付的价值和有限的职业生涯,而不是他们工作的小时数,获得很大一部分蛋糕。
高度一致,松散耦合。 在以下摘自《舰队陆战队手册 1,作战》的段落中,用软件替换战争一词,立即让人想起软件开发的日常实践:9
“软件是一项复杂的事业。它受人类意志塑造。它的特点是摩擦、不确定性、流动性、危险和混乱。虽然 软件 的本质是不变的,但它仍然是不可预测的,并且受到物理、道德和精神因素的混合影响。虽然 软件 具有艺术和科学的特征,但它主要受人类经验塑造。”
军队的师级组织结构和运作经过了几个世纪的磨练,以应对这种情况,因此,有很多东西可以从军队中学习。特别是,软件开发应遵循指挥哲学:“为了支持战场的流动性和混乱性,指挥必须分散化。下级领导者必须运用自己的主动性来完成支持其上级意图的任务。”
自由和责任。 传统,根据维基百科的定义,“是在一个群体或社会中传承下来的信仰或行为,具有象征意义或特殊意义,起源于过去。”在响应式企业中,传统没有作用。在传统企业中,传统被编码为流程。流程是导致组织充耳不闻的原因,而组织充耳不闻会导致无反馈系统的崩溃。盲目遵守流程也会驱逐有创造力的人,并奖励非生产性的会计师。流程对于在快餐行业中使用平庸的员工产生足够的结果是必要的。反之亦然,在由一流黑客组成的高科技公司中,不需要流程。
没有哪家公司比 Facebook 更能体现黑客文化,首席执行官兼创始人马克·扎克伯格在 Facebook 提交首次公开募股的投资者信中雄辩地解释了这个想法:“黑客文化也非常开放和精英化。黑客们认为,最好的想法和实施应该永远获胜——而不是最擅长游说想法的人或管理最多人的人。”10
软件是一种不可阻挡的力量。为了生存,企业必须顺应潮流,而不是抵制变革,最终与铁匠和敏捷教练一起被时代淘汰。以下是一些需要牢记的指导原则。
1. 拥抱软件是您所做一切的核心。 在19世纪和20世纪,机器和物流是大多数组织的关键。如果您在您的行业中拥有最好的机器和供应链,您就是赢家。在21世纪,拥有最好的软件是通往商业辉煌的道路——也就是说,您的软件直接且持续地受到市场实际需求和需求的塑造(闭环、数据驱动的设计决策驱动实施)。
软件消除了服务创建和更改速度的物理限制。移动设备和广泛的 Wi-Fi 技术等交付渠道消除了过去必须克服的物理交付边界。软件驱动型企业新现实的后果是,首席执行官必须深入了解软件(以及创建软件的黑客)以及如何将其纳入其商业模式,才能成功运营组织。一些最成功的首席执行官(马克·扎克伯格、拉里·佩奇、比尔·盖茨和拉里·埃里森)拥有开发人员背景也就不足为奇了。
2. 将您自己组织成一个分形闭环实时反馈系统,在组织的每个层级,层级之间具有双向反馈循环。 组织倾向于坚持使其过去成功的“已验证”商业模式,但在软件驱动型企业的新时代,过去的大多数商业模式都已失效。响应式企业背后的革命在于持续的反馈循环,它与创造力、不懈的实验和数据驱动的决策相结合,释放了企业实时学习和响应其环境的能力。组织需要开展软件驱动的商业模式,其中静态商业计划被关于市场机会的战略思维所取代。然后将这些假设转化为 A/B 实验,在实际客户的市场中进行测试,并实时分析以检查假设是否有效。
传统的商业计划基于(未经测试的)历史假设向前看,而软件驱动的商业模式则基于持续解释从实验和反馈中获得的数据。
3. 有效的组织是分层的,无论您是否喜欢。 出于某种原因,公司似乎一直在忽视军队使用的分层结构的成功,这种结构是从“适者生存”的心态演变而来的。相反,当坚持部门组织结构更有意义时,他们不断尝试新的组织结构,例如“职能型”或“扁平型”。
转化为此处介绍的概念,公司应递归分解为通信闭环控制系统,其中每个内环的情境(目标)由直接封闭的环设置,但如何实现这些目标则留给组成内环的团队自行决定。随着每个内环向封闭环提供反馈,整个组织成为一个单一的闭环控制系统。请注意,在编程中,分而治之也是解决复杂问题的最有效方法之一,因此将相同的技术应用于组织结构非常有意义。
4. 开发人员是增长的引擎,负责运营的战术层面。 随着响应式企业的递归分解,它最终归结为大约 10 名开发人员的小组,或者用 Amazon.com 的话来说,“双披萨团队”。这些黑客小组正在甲板下铲煤,保持船舶运行。他们是实际创建驱动组织运行的软件的人。因此,保持黑客快乐是响应式企业最重要的人员方面。人员管理变成了黑客管理。开发软件被比作抛鸡蛋——也就是说,为了保持高效的流程,开发人员的脑海中应该只有他们正在编写的代码。管理层应为开发人员提供完成工作所需的所有软件和硬件,不问任何问题。
开发人员的报酬应该像体育明星一样,不仅因为他们是有效创造公司价值的人,还因为编码的强度会对开发人员的身心造成损害。就像竞技运动员一样,他们通常在 30 多岁中期就会精疲力竭。
5. 中层管理仅提供将战略与战术联系起来的运营情境。 在许多传统公司中,管理通常是(微妙的)控制的同义词——控制(假设的)风险、控制行为、控制不可控制的事物。中层管理人员应该允许事情发生,而不是让事情发生,方法是设定明确的界限和目标,然后放手。管理者需要从牧羊人转变为养蜂人。这意味着没有站立会议、没有燃尽图、没有每周状态报告,尤其是没有计划扑克。
没有多少人适合成为养蜂人。他们肩负着高度负责的工作,即找到开发人员最有效率的确切约束条件。对开发人员施加太多约束会让他们不快乐,从而降低效率;约束太少会让他们失去焦点,从而降低效率。当然,开发人员在其下运营的约束条件应与公司的整体战略完美对齐,并且必须将状态信息正确地反馈到链条上方,这对中层管理人员的判断能力和即兴技能提出了更高的要求。
如果您自己不是黑客,就无法理解和欣赏黑客的思维。管理黑客只能由具有黑客背景的人来完成,就像最好的体育教练曾经是顶级运动员一样;就像成功的教练一样,如果事实证明他们无法使其团队获胜,那么成功的中间管理人员应该获得丰厚的报酬,但也要迅速被解雇。
6. 决策主要由数据驱动,而不是由地位和资历驱动。 当开发人员编写软件时,他们使用调试器、性能分析器和静态检查器等工具来提高其代码的质量和性能。当涉及到围绕代码的决策时,只有这些工具生成的数字和数据才算数。软件驱动型企业也是如此。向下传递到链条的控制信息和向上反馈的反馈信息必须以真实数据和测量值为后盾,并且必须非常小心地避免注入任何污染原始数据的主观解释——直到需要人工解释和创造力的时刻。组织中的每一层都必须有一位数据科学家/数据整理员(实际上只是一个专门的开发人员角色),以帮助挖掘、解释和可视化数据以帮助决策。
7. 高级领导团队设定战略(宏观)长期方向。 响应式企业是一个部门组织,战略方向完全来自高级管理团队。高级管理人员不仅负责确保反馈引擎平稳运行,更重要的是,还负责实施元反馈循环,以确保企业正在倾听来自不断变化的外部世界的正确输入信号,企业产生的输出仍然是期望的输出,以及最后但并非最不重要的一点是,他们收到的反馈对于他们的决策仍然是相关的。因此,高级管理层还负责整体人员管理,例如获取新能力以应对外部变化、驱逐组织中过时的能力以及清除企业记忆。
比您想象的要快,每家公司都将成为一家软件公司。运行软件公司的显而易见的方式是将其作为元软件应用程序运行,递归地构建为通勤闭环反馈系统层,使用严格的分层架构,模仿军队久经考验的分层结构,并应用软件启发的性能分析和调试技术来优化企业的盈利能力。在运营方面,公司不应谈论代码,而应遵循“黑客之道”,专注于编写代码,使用持续改进和迭代,并利用他们能够负担得起的最好的开发人员。
1. Card, O. S. 2008. How software companies die. Windows Sources: 208; http://www.netjeff.com/humor/item.cgi?file=DeveloperBees.
2. Denning, S. 2014. Why software is eating the world. Forbes (April 11); http://www.forbes.com/sites/stevedenning/2014/04/11/why-software-is-eating-the-world/.
3. Dogs of the Dow. 2014. Largest companies by market cap; http://www.dogsofthedow.com/largest-companies-by-market-cap.htm.
4. Hastings, R. 2008. Netflix culture: freedom and responsibility; http://www.slideshare.net/reed2001/culture-1798664.
5. Helland, P. 2012. Condos and clouds. 10(11); https://queue.org.cn/detail.cfm?id=2398392.
6. Legge, A. 2014. What World War Z can teach you about critical thinking. Evidence Mag; http://evidencemag.com/world-war-z/.
7. Mealy, G. H. 1955. A method for synthesizing sequential circuits. Bell System Technical Journal 34(5): 1045-1079.
8. Thomas, D. 2008. Developing expertise: herding racehorses, racing sheep. InfoQueue; http://www.infoq.com/presentations/Developing-Expertise-Dave-Thomas.
9. U.S. Marine Corps. 1997. Warfighting. U.S. Government Printing Office; http://www.marines.mil/Portals/59/Publications/MCDP%201%20Warfighting.pdf.
10. Zuckerberg, M. 2012. Mark Zuckerberg's letter to investors: the hacker way. Reprinted in Wired; http://www.wired.com/2012/02/zuck-letter/.
喜欢还是讨厌?请告诉我们
Erik Meijer ([email protected]) 是 Applied Duality 的创始人,也是代尔夫特理工大学大数据工程学教授。他以其对 Haskell、C#、Visual Basic、Hack 和 Dart 等编程语言的贡献以及他在 LINQ 和 Rx Framework 等大数据技术方面的工作而闻名。
Vikram Kapoor ([email protected]) 是 Prowareness 和 iSense 的创始人。2013 年,他被荷兰同行评选为“年度 IT 首席执行官”。Prowareness 的使命是通过共同面对挑战来提高人和组织的成功和幸福感。
© 2014 1542-7730/14/1000 $10.00
最初发表于 Queue 第 12 卷,第 10 期—
在 数字图书馆 中评论本文
Catherine Hayes, David Malone - 质疑评估非加密哈希函数的标准
尽管加密和非加密哈希函数无处不在,但在它们的设计方式上似乎存在差距。出于各种安全要求,存在许多用于加密哈希的标准,但在非加密方面,存在一定数量的民间传说,尽管哈希函数历史悠久,但尚未得到充分探索。虽然针对现实世界数据集的均匀分布很有意义,但当面对具有特定模式的数据集时,这可能是一个挑战。
Nicole Forsgren, Eirini Kalliamvakou, Abi Noda, Michaela Greiler, Brian Houck, Margaret-Anne Storey - DevEx 行动
随着领导者寻求在财政紧缩和人工智能等变革性技术的背景下优化软件交付,DevEx(开发者体验)在许多软件组织中越来越受到关注。技术领导者凭直觉接受良好的开发者体验能够实现更有效的软件交付和开发者幸福感。然而,在许多组织中,改进 DevEx 的拟议倡议和投资难以获得支持,因为业务利益相关者质疑改进的价值主张。
João Varajão, António Trigo, Miguel Almeida - 低代码开发生产力
本文旨在通过展示使用基于代码、低代码和极端低代码技术进行的实验室实验结果来研究生产力差异,从而为该主题提供新的见解。低代码技术已清楚地显示出更高的生产力水平,为低代码在短期/中期内主导软件开发主流提供了强有力的论据。本文报告了程序和协议、结果、局限性和未来研究的机会。
Ivar Jacobson, Alistair Cockburn - 用例至关重要
虽然软件行业是一个快节奏且令人兴奋的世界,新的工具、技术和技巧不断被开发出来以服务于商业和社会,但它也是健忘的。在其快速前进的过程中,它容易受到时尚的 whims 的影响,并且可能会忘记或忽略某些它面临的永恒问题的成熟解决方案。用例于 1986 年首次引入,后来普及,是那些成熟的解决方案之一。