近年来,越来越多的组织(通常是非技术公司)密切关注开源。 尽管他们可能无法在产品和服务中最大限度地使用开源,但他们有兴趣将开源原则引入到他们的组织内部。 这种“内部开源”概念可以提供许多组织优势。
作为一名帮助公司构建内部和外部社区的顾问,我发现组织面临的主要挑战是如何实施内部开源计划、有效地部署资源以及发展壮大该计划。
为了帮助您入门,我提供了一个高级模型,展示了如何构建一致、可预测和可持续的内部开源计划。 采用此模型,进行调整以适应您的需求,并在您的组织中建立一个蓬勃发展的社区。
了解
从根本上说,内部开源对于公司来说是一种文化变革。 尽管许多人认为这是一个传统的软件工程工作流程挑战,但您需要专注于构建一个异步、宽松、精英管理和协作的环境。 当然,这包括开发工作流程,但不限于此。
文化变革的挑战在于,文化是由想法、观点、习惯、恐惧、梦想、价值观等组成的无定形群体。 在将内部开源整合到公司之前,您必须了解现有文化中的驱动因素,然后确保在推出内部开源计划时考虑这些因素。
1. 了解流程和协作
人们如何协同工作的核心是协作基础设施和流程。 这些包括代码托管、同行评审、持续集成、自动化测试、文档创建、知识库、激励计划等等。 您应该了解所有这些细节,它们如何组合在一起,以及这些组件的更广泛执行以及员工使用这些组件的体验方面的不足之处。
我建议将组织按团队划分,然后创建一个地图,显示:
- 每个团队消耗什么
- 每个团队生产什么
- 每个团队如何工作
- 他们如何与其他团队互动
- 当前系统的优点和缺点
2. 了解人员和驱动因素
除了事情完成的协作方式外,了解相关人员也同样重要。 一个公司汇集了众多的人员、个性和观点。 您需要了解他们、他们的目标、他们的恐惧以及他们的议程。 文化变革必须考虑到其运作环境的现实。 您不能通过命令人们来构建内部开源计划,而是需要构建人们想要使用的东西,并鼓励您希望看到的行为。
我建议构建您自己的组织结构图,显示:
- 影响力的分解(关键利益相关者和决策者),
- 人员交付工作的地方(团队和关键员工),以及
- 每个人的个人议程和目标(停止能量,人们追求某些结果,内在和外在奖励动机等)。
计划
在充分了解当前环境的基础上,您可以构建通往顺畅、高效、包容和愉快的内部开源环境的路线图。
3. 制定战略计划
您的第一步是制定一个总体战略,这是一项复杂的任务,您可以想象。 在公司中整合开源原则涉及大量不同的考虑因素,例如开发人员工作流程、基础设施、沟通、政策(例如开放性和透明度)、激励模型、分段参与、更广泛的消息传递、治理等等。
您不仅有很多事情要做,而且由于您的工作优先级会有所不同(有些项目比其他项目更迫切需要),您的资源将受到限制,并且公司中的一些同事的购买意愿有限,甚至会试图阻止该项目。
为了让人们加入并参与其中,您需要:
- 制定战略;
- 确定优先级;
- 了解资源;以及
- 考虑每个部分的消息传递、参与和推出。
我建议制定一个涵盖未来一两年总体战略计划,涵盖重点领域。 接下来,将该计划分解为更短的执行周期,在这些周期中,您从更广泛的计划中提取关键目标,并将它们映射到具有指标的实际可交付成果。 这将形成您的待办事项列表。
4. 构建待办事项列表
从根本上说,战略是一张地图,告诉你你想去哪里。 战略需要转化为您可以应用资源(例如开发时间、资金等)的实际项目和可交付成果。 挑战在于,每个战略目标都将不可避免地涉及大量的子项目和目标。 管理这种情况的最佳方法是使用待办事项列表。
简而言之,待办事项列表是一个大型共享待办事项列表。 构建战略后,将所有单独的项目映射到待办事项列表。 这提供了一个您可以讨论、改进和完善单个可交付成果的地方。 当某些可交付成果准备好实施时,可以将它们从待办事项列表中拉到活动工作计划中并分配资源。 这意味着您可以不断改进待办事项列表中战略的实施,即使未积极应用资源也是如此。
5. 制定成熟度模型
当与想要在组织中构建内部开源的客户合作时,我经常看到的一个挑战是他们不知道成功的样子。 现在,这句话听起来像商业书籍中的废话,但这个问题是真实的。 例如,如果您想提高开发人员在代码审查方面的效率,您如何确定实现了该目标? 您如何衡量工作并确定哪些衡量标准意味着您已经成功? 对于许多这些问题,您正在构建定性的文化变革。 我们如何衡量这个?
不同的受众加剧了这一挑战。 尽管参与这项工作实施的人员会想要了解成功的细节,但高级管理层和利益相关者不希望了解详细信息,而只希望了解重要趋势的信息。 一种有用的方法是“成熟度模型”。
成熟度模型将解决方案的不同发展阶段分解为一系列对成功的期望。 我倾向于按时间顺序考虑这些不同的阶段:
- 未意识到:公司没有意识到该解决方案。
- 已探索:正在探索该解决方案。
- 已定义:已定义并执行该解决方案。
- 已采用:公司已采用该解决方案。
- 已优化:正在优化和改进该解决方案。
对于每一个,您都会说出期望什么。 例如,如果您在公司中构建代码审查,“已探索”的条目可能是“一小部分团队正在非关键代码库中积极试验代码审查。”
执行
有了战略、待办事项列表和成熟度模型,您就知道需要做什么了。 现在您需要使这些项目发生。
6. 交付优先项目
有了待办事项列表,您的第一步是决定将哪些项目命名为工作计划中的优先级。 决定这一点取决于哪些工作必须最紧急地执行以及当前有哪些可用资源。 尽管工作的紧迫性很重要,但资源才是真正决定性的标准——我们不能凭空构建东西。
我建议您按节奏(每两周、每月、每季度等)执行此操作。 将该计划的关键负责人聚集在一起,审查待办事项列表,定义资源,然后最终确定工作计划。
7. 与不同群体沟通
有了您的工作计划,您就可以开始交付。 您应该定义里程碑、指标并定期审查可交付成果。 鉴于这项工作的文化影响,沟通——在某些情况下,过度沟通——至关重要。 我们希望确保更广泛的公司、主要利益相关者、领导层和其他人对以下内容有一个很好的了解:
- 什么是战略,
- 什么是工作计划,
- 如何交付这项工作,以及
- 这项工作的结果是什么。
请记住,这些不同的受众将有不同的沟通需求。 高级领导层将需要概述和结果,关键领导者将需要更多的深度,而团队领导将需要详细信息。
您将需要创建一种提取这些总体详细信息的方法,为合适的受众设计沟通方式,并定期更新您的受众(例如,每周报告)。 此外,请务必在适当的情况下定期向整个公司传达消息。
审查和改进
将内部开源引入公司是一门不完美的艺术和科学。 公司各不相同,人员各不相同,方法也各不相同。 您必须推出一个满足您在此过程开始时试图理解的特定需求的计划。
因此,定期评估您的工作并评估其进展情况至关重要,因为您需要进行适当的更改。 进行这种评估并不容易; 它可能会触及人们对失败的恐惧,但克服这种恐惧很重要。 您所做的一些事情不会顺利进行,而另一些事情则会产生次优的结果。 找出对您的工作产生负面影响的缺陷并纠正它们是您分析的目的。
8. 收集定量数据
第一步是收集数据——换句话说,数字。 对于您从事的每个项目,定义一组您想要跟踪的指标,以及您将如何读取这些指标以确定成功。 这些指标的示例包括使用率、贡献、代码、消息、参与度和其他示例。 除非您有衡量它的关键方法,否则您绝不应该将项目纳入工作计划。
9. 调查您的用户
分析数字很方便,因为我们通常让计算机完成所有工作,但我们还需要跟踪人为因素,例如幸福感、授权、包容性和其他领域。 非经验分析很难做到,因为这些事情通常不能很好地映射到数字。
获取数据的一个有效方法是定期进行匿名调查,询问人们对内部开源体验中这些人为因素的感受。如果员工要提出批评,他们必须感到自在。您需要明确允许他们提出批评,而不会产生任何后果。
与调查的执行同样重要的是,问题和选项的措辞也很关键。措辞和选择常常会在不经意间影响回答,因此我建议您让几个人参与调查结构的制定。
10. 更新策略
一旦获得这些数据,请扪心自问并与团队一起深入探讨这些数据所反映的趋势和模式,以及如何改进整体策略、重新组织待办事项列表以及调整项目优先级、构建和管理方式。当然,将内部开源引入公司是一项复杂的任务,涉及无数不同的细节,但我希望本文提供了一个整体框架,您可以在其中填补与您的特定组织相关的部分。如果您遇到困难,请随时与我联系,我总是很乐意提供帮助!
5 条评论