将精益创业原则应用于你的开源项目

精益创业原则帮助你高效且成功地管理你的开源项目。
70 位读者喜欢这篇文章。
Mobile devices are a big part of our daily lives

图片来源:Mapbox Uncharted ERG, CC-BY 3.0 US

启动一个开源项目有很多好处。总的来说,开源项目受益于协作、采纳、透明度、更低的拥有成本、最佳开发实践、更多的贡献者和审阅者,以及更好的质量。

当你为开源项目做贡献时,你可以提升你的技术和领导技能,为你的简历积累良好的经验,学习新的开发工具,了解行业趋势,与世界顶级的工程师一起工作,获得指导机会,结识志同道合的人,提高你的人际交往能力等等。

当你开发自己的开源项目时,你很像一家创业公司的 CEO,许多初创公司都使用精益原则。本文演示了如何应用精益创业原则来开发和推进你的开源项目。

提出一个好的开源想法

在头脑风暴一个好的开源想法时,考虑三个领域:行业、库存和客户。你想要提出一个处于这些领域交汇处的想法。例如,我正在做一个关于混合云的开源项目。云计算是我的行业。库存可以是云计算行业可用的 Ansible playbook 集合。客户可以是我的 OpenShift 客户,他们有兴趣使用 Ansible playbook 来设置他们的混合云基础设施。这些让我达到了这三个领域的交汇处,这可能是一个很棒的开源想法。

A good open source idea

图 1. 一个好的开源想法 (Ip Sam, CC BY-SA 4.0)

一旦你确定了你的开源想法,就开始开发概念验证 (PoC) 原型项目,将其放入 Git 仓库,并创建项目的 backlog

  1. 启动一个简单的 PoC 原型。
  2. 将 PoC 推送到公共 GitHub 仓库。
  3. 创建你的 README、LICENSE、CONTRIBUTING 和 CODE_OF_CONDUCT 文件。
  4. 在 Jira 中设置高层级的 epics 和 stories。

接下来,开始着手定位你的开源想法,以实现长期成功。考虑你的竞争对手的产品、客户的需求和公司的能力。例如,如果我知道客户想要在 OpenShift 集群中进行云自动化,我就了解了客户的需求。我的团队的能力是生产 Ansible 自动化,以自动化 OpenShift 集群的安装和升级。我需要确保没有竞争对手在做类似的工作。在我的开源项目中,我使用 Ansible 进行自动化。其他公司可能正在使用 shell 脚本或 PowerShell 脚本。即使他们正在开发自动化技术,他们的产品也不会直接干扰我的开源项目正在做的事情。因此,我可以进入下面的最佳位置。

Position your open source idea

图 2. 定位你的开源想法 (Ip Sam, CC BY-SA 4.0)

使用精益创业原则

风险管理对于开源项目非常重要。在任何时候,一个项目都可能失去资金、人员和资源。业务需求和范围可能会改变。发布计划可能会被延迟或取消。时间表可能会随着许多不确定性而改变。作为你的开源项目的 CEO,你可以使用精益创业原则来最小化风险并最大化你项目的利润。

精益创业原则侧重于开发最小可行产品 (MVP),以便尽快从生产中获得价值。它还推动更小的发布周期和快速迭代。通过来自生产的反馈循环使用验证性学习,你可以验证你的开源项目并在产品数据可用时进行修改。

在精益创业周期中,首先,你提出你的开源想法。然后,你通过做一个简单的 MVP 将你的想法转化为代码。在此期间,你设置构建阶段(你在其中构建单元测试以确保你的代码质量)、持续集成/持续开发 (CI/CD) 管道以实现自动化部署、云计算基础设施、开发者沙箱和其他最佳开发实践。这些是你构建阶段的一部分,旨在使你的开发人员能够更快地编码。

你需要衡量从编码到生产数据的每件事。例如,衡量 MVP 的可用性,以确保最终用户可以正确使用它。使用监控和警报,以便你知道何时发生生产问题。静态代码分析可以帮助你捕获代码问题和安全漏洞。最后,使用来自产品用户和利益相关者的反馈数据;它有助于你更快地衡量。

所有这些数据使你能够了解你的项目。你可以通过进行更多的客户访谈或在开发周期中与客户合作来更快地学习。你也可以通过与其它业务部门建立跨职能团队来更快地学习。当你在第二次迭代中再次经历精益创业周期时,你应该能够比第一次迭代更快地编码、更快地衡量和更快地学习。

The lean startup cycle diagram

图 3. 精益创业周期 (Ip Sam, CC BY-SA 4.0)

精益创业方法论帮助你产生一个想法,从你的想法中形成假设,创建一个 MVP,并测试 MVP 以验证你的假设。然后你回顾你所学到的东西来微调你的假设并开始你的第二次迭代。

Lean startup methodologies

图 4. 精益创业方法论 (Ip Sam, CC BY-SA 4.0)

精益创业是客户开发和敏捷开发的结合。它支持更快的迭代开发周期和增量产品开发。

利用设计思维、精益创业和敏捷

Lean startup and agile

图 5. 精益创业和敏捷 (Ip Sam, CC BY-SA 4.0)

下图显示了设计思维、精益创业和敏捷的三个周期。第一部分始终是设计思维(绿色周期),你在其中收集需求以定义你的想法。通常,这些来自产品经理。然后你进入精益创业(蓝色)周期,你在其中提出原型、做一些实验并经历学习期。根据你的学习,你可以进入敏捷(黄色)周期。这些通常涉及典型的两周冲刺,在你的产品 backlog 中提出 stories,将 backlog 中的 stories 带到冲刺计划中,进行冲刺执行,将 stories 移至完成,并通过部署将增量产品交付到生产环境。最后,你会有冲刺评审、冲刺演示和冲刺回顾。在完成敏捷周期后,你回到蓝色周期,开始构建过程、衡量和下一次迭代。

Design thinking, lean startup, and agile cycles together

图 6. 设计思维、精益创业和敏捷周期结合 (Ip Sam, CC BY-SA 4.0)

通常,在获得最终产品之前,你会有多个 MVP。使用客户反馈和产品数据来塑造下一个 MVP 版本。

Lean startup MVPs

图 7. 精益创业 MVP (Ip Sam, CC BY-SA 4.0)

项目管理三角形帮助你保持产品质量。范围、成本和时间是三角形的角。三角形的形状代表产品质量。如果你减少你的范围和成本,三角形的形状将改变,这意味着你的质量会下降。

Lean project management

图 8. 精益项目管理 (Ip Sam, CC BY-SA 4.0)

精益创业原则可以帮助你管理范围、成本和时间。通过使用精益创业原则进行每次发布,你可以获得增量更改、小的发布周期、小的发布功能集和反馈循环。对于每个想法,衡量它是否有效、是否赚钱以及是否产生商业价值。如果你的答案都是肯定的,那么开始再投资过程以产生更多新想法。

Lean releases

图 9. 精益发布 (Ip Sam, CC BY-SA 4.0)

招募贡献者并组建团队

项目营销是为你的开源项目招募贡献者和投资者的重要起点。学习如何推销你的项目,在大型会议和活动上展示它,并在本地开发者聚会上演示你的 PoC 或 MVP。如果你为大型组织工作,你也许能够将其转变为一个内部项目。

具有不同背景、工作方式和文化的不同人会加入你的项目,而你的目标是将其发展成为一个高效的团队。团队在找到如何一起工作时会经历学习曲线。例如,当你获得新的团队成员时,你团队当前的工作方式可能不太适合他们,你可能会遇到阻力。当个人不想走出他们的舒适区去学习新技能时,你也可能会遇到阻力。这可能会造成混乱局面,团队成员在如何做事上存在分歧。团队可能会分裂成具有不同想法的不同阵营。这会将团队绩效带到团队成熟度曲线的最低点。当你达到最低点时,倾听团队成员的意见,努力理解他们的想法以及人们为何抵制,然后将不同的想法转化为行动项。你可以利用投票系统或使用产品数据来验证这些想法。随着冲突得到解决,团队成员将开始更好地协同工作,并将他们不同的工作方式融入到整体团队文化中。这就是你的团队将达到新的现状和团队成熟度的地方。

Team maturity graph

图 10. 团队成熟度图 (Ip Sam, CC BY-SA 4.0)

精益团队管理方法可以帮助你实现团队成熟度。它利用四个控制杠杆:信念、边界、衡量和互动。

  • 信念: 这是你团队的一组核心价值观。例如,我的团队相信质量是每个产品的要求。因此,质量是团队的核心价值。
  • 边界: 这些与基于核心价值观设置规则有关。例如,我的团队相信质量,我们制定规则,要求在将每个代码更改提交到 Git 仓库之前,都要进行单元测试和集成测试。这成为团队的边界。如果有人在没有测试的情况下签入代码,那么这个人没有遵守规则,现在是你教育团队成员的时候了。
  • 衡量: 这包括关键绩效指标 (KPI)、目标和预算。例如,我团队的 KPI 包括衡量冲刺中的 story 周期时间、story 发布时间、缺陷率、测试覆盖率和产品问题。
  • 互动: 互动过程是指你根据上一个周期修改产品的地方。然后你开始下一个迭代,以获得下一组核心价值观。

Lean team management

图 11. 精益团队管理 (Ip Sam, CC BY-SA 4.0)

最小化浪费

开发生命周期中的八种浪费类型——缺陷、过度生产、等待、未被利用的人才、运输、库存、移动和额外处理——会损害团队生产力。

  • 缺陷: 在开发生命周期的早期修复缺陷更便宜,因此许多团队使用测试驱动开发 (TDD) 来减少缺陷。
  • 过度生产: 如果你做的比要求你做的更多,你就是在过度生产。这与 stories 中的范围有关;范围应该小,这样你就不会冒过度生产的风险。
  • 等待: 等待效率不高,并且浪费你团队的资源。在冲刺每日站会上,识别被阻塞或等待外部依赖项的 stories。作为 scrum master,你的工作是帮助升级这些阻塞问题以减少等待时间。
  • 未被利用的人才: 未被利用的人才始终是一种浪费,因此请确保团队中的每个人都有足够的工作要做。
  • 运输: 如果你将项目从一个团队转移到另一个团队,你将引入更多的学习曲线和启动时间。尽量减少项目的运输量。
  • 库存: 太多无法出售的库存是一种浪费。库存占用你存储空间并消耗管理时间。
  • 移动: 过度不必要的移动,例如去不同地点的会议甚至通勤,都是一种浪费。许多组织都有在家办公政策以减少移动浪费。
  • 额外处理: 如果你在同一产品上重复进行相同的验证测试,则这种额外处理可能是一种浪费。在你的开发周期中制定一个流程,以便你避免额外处理。

Lean waste management

图 12. 精益浪费管理 (Ip Sam, CC BY-SA 4.0)

作为你的开源项目的 CEO,你的时间非常宝贵。如果这是你的工作,你每天只有八个小时。如果这是你的副业,你的时间就更有限了。精益时间管理涉及一个非常简单的矩阵,如下所示。如果有一项任务对愿景很重要且必须由你完成,那就去做吧。如果任务对愿景很重要,但可以由团队成员完成,则委托它。如果任务对愿景不重要且必须由你完成,请尽量减少你花费的时间。最后,如果任务对愿景不重要且可以由其他人完成,那就是资源浪费。

Lean time management

图 13. 精益时间管理 (Ip Sam, CC BY-SA 4.0)

制定精益策略

精益策略是分析你的开源产品以制定长期策略的好方法。问自己以下问题:如果你的开源产品不存在,你的客户会遭受任何实际损失吗?如果是,那会是什么类型的损失?你的客户是否难以替换你的产品来满足他们的需求?例如,如果我正在为集群自动化制作 Ansible playbook,我的客户可以使用一组 shell 脚本来替换我的 Ansible playbook 吗?这对运营成本和学习曲线有什么影响?

Lean strategy questions

图 14. 精益策略问题 (Ip Sam, CC BY-SA 4.0)

精益策略层次结构是(从下到上)使命、价值观、愿景、策略和平衡计分卡。最底层是你的使命:你的开源项目和团队为何存在?你的使命宣言是什么?接下来是你的团队所相信的价值观。愿景是你期望你的产品在未来两年内如何发展。策略需要战略规划。最顶层是平衡计分卡,你在其中实施和监控你的开源项目的计划。

Lean strategy hierarchy

图 15. 精益策略层次结构 (Ip Sam, CC BY-SA 4.0)

你的精益策略声明包括你的目标、范围和竞争优势。目标定义了你的策略旨在在特定时间框架内做什么和实现什么。范围确定了你的开源产品成功的策略要求。你的竞争优势是你策略的核心。你将如何使用该产品和你的策略与竞争对手竞争以实现你的目标?

定价和差异化是实现利润的两个重要因素。你想要提供低价格和高差异化。问问自己:你的产品与竞争对手的产品有何不同?你的产品有哪些独特的功能?如果你可以最大化差异化并最小化定价,你将达到利润前沿线。

展望未来

在运行你的开源项目一段时间并跟踪所有内容之后,现在是时候考虑你作为开源项目的 CEO,下一步想要专注于哪里了。

首先评估视角、能力和盈利潜力。

  • 视角涉及你的产品如何满足客户的需求。例如,我的 Ansible playbook 能否减少 OpenShift 集群中的手动操作,从而节省客户 20% 的运营成本?
  • 能力是你的产品可以做什么以及它可以提供哪些新功能。例如,我的 Ansible playbook 能否以支持 OpenShift 3 和 OpenShift 4 集群的方式运行?本地集群与 AWS 集群?
  • 盈利潜力包括你的产品在一段时间内为你产生多少收入。你的产品是否落入上图中的利润前沿利润率?

开源是未来。开源社区正在发生很多事情,许多公司正在转向开源模式。开源是让人们参与你的项目的好方法,精益创业原则可以帮助你高效地管理你的开源项目。它将帮助你和你的开源项目走得更远。

接下来阅读

评论已关闭。

© . All rights reserved.