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