企业内部开源经营

什么是内源?

内部开源,简称内源,英文术语InnerSource。

按照维基百科的定义: 内源就是应用了开源软件开发的最佳实践,在组织内部建立起了一种类似开源的文化氛围。组织内部使用了开放的方式来开发专有软件。 这个名词是由 Tim O’Reilly 在2000年的时候发明的。

内源是一种汲取了开源开发的经验教训,并将其应用于公司内部开发的方式。随着开发者习惯于使用开源软件,人们强烈希望将这些做法带回企业内部,并将其应用于公司内的软件。对于传统闭源开发而言,内源可以帮助打破孤岛,鼓励内部协作,增进共建共享,减少重复开发、加速新员工成长,为外部开源做好准备等等作用。

关于内源介绍的其他更多信息,可以参考 https://innersourcecommons.org/getting-started/


内源与开源的关系

简而言之,内源是一种采用开源原则,并将其纳入组织内部的开源方法。通过这样的方法,你将建立起类似于开源的协作方式和社区,其中所有代码和交流在组织范围内都是内部公开的。


在公司内部感受开源的魔力,内源社区组建经验谈

原文链接:https://opensource.com/life/16/11/create-internal-innersource-community

近年来,我们对另一种不同的开源方式越来越感兴趣——内源。简而言之,「内源」是一种采用开源原则,并将其纳入组织内部的开源方法。通过这样的方法,你将建立起类似于开源的协作方式和社区,但其中的所有代码和交流在组织范围内都是私有的。

作为社区战略和领导力顾问,我与许多公司合作来帮助建立其内源社区。因此,我会想要分享一些能够映射到我的大多数客户以及其他客户的最重要的原则。如果你正在考虑探索在组织或公司内部实施内源,这可能是一个有用的入门。


先培养文化,后关心代码

对于大多数公司而言,他们的内源之旅会从一个试点项目开始。通常情况下,该项目将专注于一些更愿意接受实验性工作的特定团队。因此,内源总是作为一种被引入的角色,融合进现有团队文化的工作流程和方法。进行这种内部文化调整是成功的关键,也是最大的挑战。

大家往往有这样的误解,就是认为做好内源的关键是专注于在公司中构建开源软件开发生命周期:开放代码仓库和沟通渠道,鼓励 Fork、代码审查和 CI/CD。这绝对是内源的重要组成部分,但这些也只是一个一个独立的积木块而已。真正的诀窍是建立一个环境,使人们拥有许可和动力去使用这些积木块建造那些优秀的工程。

因此,要做好内源,更多的是要建立一种文化、相应的环境和一系列激励措施,以鼓励团队中促进开源的行为。从零开始构建这种文化会相对容易,但是对于更传统的企业和组织,适应这种文化则是大部分工作的重点。

文化的改变不能一概而论,个体行为的融合才形成了社会习俗,从而更广泛的群体受到其影响。要做到这一点,你需要从员工的角度来思考问题。你如何使他们的工作更轻松、更高效、更有意义、协作效率更高?

当你了解现有的团队文化痛点,并且团队成员将新的内源文化作为缓解这些问题的一种方式时,适应的工作就会更加顺利。


方法论

鉴于内源在很大程度上是文化上的调整,并结合了一些经过验证的开源工作流程和方法,因此产生了一个有趣的问题:内源方法如何开始执行?

我已经见过一些团队执行内源的方法,其中有一些是好方法,也有一些方法并不值得推荐。

一些公司采取自上而下的方法,向团队成员宣布将会产生的变化,并且团队和成员需要在特定的内源计划下保持一致。另外一些公司则采用自下而上的方法,由专门的内源团队尝试性地让人们加入内源组织。

这两种方法我个人都不推荐,我认为应将这两种方法组合起来。对于任何文化上的改变,作为管理者,你都需要自上而下的方法来强调和鼓励执行团队和公司领导层采用新的工作方式。这些领导层不应该规定规则,而应该去鼓励培养环境,在这种环境中,团队成员可以以自下而上的方式帮助塑造内源的运作和实施。

老实说,每个人都讨厌这种文化上的改变。我们所有人都经历过公司高管带来的新工作方式:敏捷开发、看板方法、结对编程等等。通常,这些新的工作方式都是强加给员工的,这就给工作带来了不好的开端:你不是在鼓励你的员工塑造文化,而是在命令他们这么做。


我在这里建议的方法是定期调整节奏,以迭代你的内源实施策略。

例如,每六个月开始一个新的周期。在上一个周期结束之前,领导团队将对员工进行调查,以了解他们对采取内源方式工作的看法,查看他们的反馈意见,并确定新周期的核心目标。然后员工将采用结构化的方式来发挥作用,以帮助塑造如何实现这些目标。

再例如,这可以是专注于沟通,同行评审,QA,社区发展等的各个团队。在整个过程中,核心内源团队将促进这些沟通,指导团队,支持员工个人做出有价值的贡献,推进计划的实施。

如果你参与进了某个项目,那么你不仅可以提交代码,而且还可以在项目的运营动态中发挥作用。重要的是,你必须将这种影响力带入内源计划和员工中,员工认为他们可以用积极的方式影响内部文化的公司,才是最有价值的公司。


异步和远程工作

内源最有趣的挑战之一是,它广泛地依赖于异步协作。也就是说,你可以进行更数字化的协作,而无需参与者位于相同的时区或位置。

例如,一些公司要求所有员工在同一办公室工作,而大部分业务都是在会议室的面对面会议、电话会议和电子邮件中进行的。这可能会使公司难以雇用和培养远程工作的同事,或让员工在出差、开会或在家时都能高效工作。

使开源良好运行的一个核心要素是参与者可以异步工作。所有沟通,开发(代码提交,issue 管理和代码审查),QA 和发布管理通常可以完全以在线的方式在任何时区进行。不定期进行面对面的迭代/会议的异步方法是一种非常高效的方法。

对于公司而言,这可能是一个困难的过渡过程。例如,我的一些客户通常会举行面对面的会议来计划项目,在董事会的桌子上执行代码审查,并且没有条件来异步操作。为了做好内源,重要的是制定一个计划,使其尽可能地进行异步工作,在兼顾办公室中面对面交流的优势的同时,还支持数字化协作。

这样做还使你建立了一个可以支持远程工作的环境。任何从事技术工作的人都可能同意,很难雇佣到一个优秀的员工,而且雇佣到一位优秀员工的阻碍很多是地域问题引起的。因此,你对内源的投资也将使雇用远程员工变得更加容易,而且更重要的是拥有了一个可以使远程员工成功的环境。


同行评审和工作流程

对于想要执行内源的公司而言,最有趣的“症结”之一是同行评审的过程。

熟悉开源的人都明白,日常协作中有两个重要原则。首先,所有贡献都由其他开发者审查(包括新功能和 Bug 修复);其次,同行评审是公开进行,可供其他人查看的。对于那些刚接触开源的人来说,这种开放的同行评审可能是一个难以克服的难题。如果你的工程师没有进行代码审查,或者是以非公开形式进行代码审查,那么转向更开放的审查过程可能会给团队带来一些尴尬和不安。

这种同行评审的调整是需要小心管理的。其中很大一部分仍是培养一种文化,在这种文化中,我们欢迎批评,庆祝失败,我们珍惜能帮助我们更好做事的同事。同样,这是为了使这些调整适合员工的利益,这样虽然最开始可能很尴尬,但他们很快就能感受到这样做的好处。

你可能会看到,构建社区(无论是公司的公共社区或内源社区)的核心部分是了解社区成员的心理,并将这些心理模式转换为工作流程,以帮助你看到所鼓励的工作方式。

在同行评审和工作流程中,有两种行为经济学原理起着关键作用。


首先是宜家效应:如果你和我将完全相同的宜家桌子组装在一起(或组装其他东西),我们都会认为我们各自的桌子在某种程度上会更好或更有价值。因此,我们对自己的工作中增加了额外的价值,这种价值通常是高估了了的。

其次是自治原则。从本质上讲,选择对人们至关重要,如果我们觉得自己无法控制自己的命运,无法做出选择,那我们就会感到束手无策。

仅这两个原则就对工作流程和同行评审产生重要影响。在宜家效应方面,我们应预估大多数人的 PR 和修正对他们自己来说非常有价值。因此,我们需要使用同行评审,以一种独立且不掺杂感情的方式客观地定义贡献的价值(例如,评审差异的特定部分,需要至少两名评审,鼓励具体的实施反馈,等等)。遵循自治原则方面,我们应确保员工可以尽可能地完善、自定义其工具链和工作流程,并定期给他们提供反馈和意见机会。


声望、激励和参与

在公司中建立内源文化的另一个关键要素是仔细研究如何跟踪优秀的工作并激励和鼓励这种行为。

这部分内容由三个核心组成。

首先,我们需要有一种方法来定量表示成员的工作质量。这可能涉及到建立一个复杂的系统来跟踪个人行为并衡量其价值,或者简单到只去观察他们是如何工作的。在这里,重要的是人们应该根据他们的价值来评价,而不是他们与老板有多少交际,或者他们带了多少甜甜圈到办公室这样的因素。

其次,基于他们的工作表现,我们需要提供不同的激励和奖励来鼓励我们想要看到的行为。


奖励有两种核心类型。外部奖励本质上是实质性的,例如T恤、帽衫、礼品卡、金钱等。内在奖励是更感性的,例如尊重、认可和钦佩。两者都很重要,重要的是在这些奖励之间取得适当的平衡。基于你想要鼓励的行为,我建议将激励措施和奖励措施结合起来。

最后,根据员工的工作情况将他们细分为不同的小组,并以不同的方式让他们参与进来,这是很有帮助的。例如,新人将从指导、支持和更广泛的引导中受益。另一方面,最活跃和最有成就的员工可以成为洞察和指导的巨大源泉,他们可以在帮助进一步塑造公司文化方面发挥作用。