在本系列的第一篇文章《开源是一种开发模式、商业模式,还是其他什么?》中,我介绍了开源是软件产品供应链一部分的概念。但是,要真正理解开源作为供应链,您必须对产品是什么有一个充分的理解。产品可以被认为是一项业务,正如传奇商业大师 彼得·德鲁克 所说,“商业的目的是创造和留住客户。” 德鲁克的说法意味着业务或产品必须足够有用才能获得报酬,否则它将失败。产品差异化是创造和留住客户的关键。
软件产品中有什么?
即使在 1999 年的石器时代,当我开始我的职业生涯时,软件产品的概念就已经存在了——您可以去商店购买盒装的 Red Hat Linux 光盘(尽管软盘仍然非常流行)。软件产品存在的想法可能听起来像个笑话,而且确实如此,但在 20 世纪 40 年代和 50 年代(当我们所知的计算机被创造出来时),软件并不是一种被买卖的价值组成部分。当时没有软件市场。您无法购买、出售或在线访问它。
与其购买软件,不如选择构建或购买物理计算机;无论选择哪种方案,您都为该特定计算机编写了软件。
那… 特定… 计算机…
不是开玩笑。在计算机的早期,软件除了您编写它的计算机之外,无法在任何地方运行。事实上,在早期,您甚至无法在两台不同的计算机上使用相同的编程语言。但是,随着计算机的发展,创建了系统软件,例如操作系统、汇编器和编译器。随着这种系统软件的出现,应用程序代码变得更具可重用性和可移植性。
在 20 世纪 60 年代,跨平台编译器和操作系统催生了可重用代码的概念,例如宏和最终的库。在每个项目的开始,您都会构建自己的可重用函数和库。(计算机科学课程仍然强迫您这样做,以便您了解幕后发生了什么。)同时,处理器和操作系统标准化,实现了计算机之间的可移植性。
在早期,这些组件在单个组织(例如,政府、大学、公司等)内部使用,但是组织之间共享软件的愿望很快就出现了。如果您有兴趣了解从第一台计算机到容器的代码可移植性历史,请参阅 "Fatherlinux" 的 容器可移植性 系列或 编译器构建历史 维基百科页面。可以肯定地说,在任何人拥有软件产品、开源甚至容器之前,代码必须是可移植的。
可重用和可移植的软件
一旦代码变得可以在组织之间移植和共享,下一个合乎逻辑的步骤就是出售它。在早期,拥有 *有用的* 软件在市场上是具有差异化的。这是一个突破,因为如果您需要计算器、编译器或文字处理软件,购买它比编写它更便宜、更容易。因此,软件产品应运而生。
这种模式实际上只适用于解决许多人共享的通用问题——例如计算数字、编写文档或编译软件;这些都是业务问题。通用软件很棒,但它不能优雅地解决与单个行业或组织内的业务规则相关的特定问题,尽管您可以非常努力地滥用 Excel 或 Google Sheets。对于特定的业务问题,编写自定义代码更有效。这种需求导致了中间件的兴起,例如 Java、服务总线和数据库。中间件被买卖以协助自定义软件开发。
代码可移植性导致了软件应用程序和中间件的市场。软件公司开始提供具有差异化价值的竞争解决方案。您可以根据功能选择您想要的编译器或计算器。竞争解决方案的存在对消费者来说是好事,因为它促使软件公司创建更专业的解决方案,每个解决方案都具有独特的价值。无论产品是否基于开源构建,它都必须在市场上提供独特的价值。
理解差异化价值
为了解释差异化价值,我将使用汽车的比喻。家庭需要汽车、运动型多用途汽车 (SUV) 或小型货车。他们可能想要舒适的座椅、信息娱乐系统或安全功能。他们通常对颜色有偏好。每个家庭都是不同的,并且有特定的需求,因此完美的汽车将是家庭作为一个项目共同建造的汽车。
大多数家庭没有时间、愿望、金钱或信用来购买从头开始建造完美汽车所需的所有组件,更不用说在给定的生命周期内维护它所需的时间了。对于家庭来说,这不是经济的时间或金钱投资。这将花费他们更多的钱,并且需要很长时间才能建造。相反,家庭从现有供应商处购买汽车,作为他们交通问题的内置解决方案。虽然购买的汽车并不完美,但它将在投入更少的时间和金钱的情况下大致满足他们的需求。
汽车供应商将未差异化和差异化的组件组合在一起,形成一个解决方案。这包括从汽车中的发动机、燃油喷射器、轮胎和座椅,到经销商处的购买体验、融资以及汽车拥有的服务计划。所有这些功能和体验都是家庭在寻找汽车时购买的解决方案的一部分。所有这些事物的组合产生了在市场上与众不同,并有望更好的东西。我们称之为 *差异化*。竞争解决方案越多,市场上的差异化就越大,家庭就越有可能找到更接近其需求的汽车。
开源中的差异化
在传统的制造产品或服务中,供应商提供的价值与直接向消费者销售的公司提供的价值之间存在区别。您可以进一步区分企业对消费者 (B2C) 或企业对企业 (B2B) 产品和服务,但这超出了本系列的范围。
敏锐的读者可能已经在想,“是啊,但是对于传统产品,供应商也是销售具有差异化产品的公司。” 这完全正确,并且在这方面,开源项目没有什么不同。社区驱动的开源项目没有昂贵的营销活动、焦点小组和销售团队来教育客户的优势,但它们也必须在市场上实现差异化。
差异化对于产品经理、开发人员甚至系统管理员来说都是一个重要的概念。即使在更广泛的背景下,任何类型的知识工作的输出——代码、写作、音乐或艺术——差异化才是为我们的工作带来价值和意义的东西。差异化是创造价值的关键,无论是软件产品还是服务、劳动,甚至是音乐。
在下一篇文章中,我将更深入地探讨软件产品团队如何将其解决方案与供应商提供的开源组件区分开来。我们甚至将介绍软件即服务 (SaaS)。
评论已关闭。