作者 郭蕾
开源软件是指某个由社区驱动的开放源代码的产品,而开源文化是指开源社区所衍生出的团队沟通、协作和管理的理念。在开源社区中,程序代码直接决定着项目的成败,但人更是核心,没有人便没有代码。这一点和企业是相同的。越来越多的企业意识到,开源所提倡的协作和管理方式同样适用于企业管理,开源文化能够提高员工的积极性,从而提高生产效率。那到底什么是开源文化,企业应该建立怎么样的开源文化?为了回答这些问题,InfoQ编辑采访了一直深耕于开源社区的RedHat工程师姜宁。另外,姜宁还将在ArchSummit全球架构师峰会上分享题为[《如何在企业开发中引入开源项目成功模式》](http://www.archsummit.com/speakers/201813)的演讲,敬请关注。
**InfoQ:你认为公司是否应该有开源文化?**
> **姜宁**:开源文化对公司的影响非常大,开源提倡的是开放和协作。如果一个公司不具备这样的开源文化,那就很难真正把开源项目做好,也很难真正靠开源来推动实现公司的商业目标。以我的个人经历来说,我先在国企待了三年,然后一直都在外企上班,在外企期间先后被换了三家公司(主要是公司被并购),但我做的主要工作一直都是维护Apache上面的中间件项目。在我待过的这三家外企公司中,红帽软件是一家有着开源基因的公司(本身是靠做Linux发行版起家的公司),也是一家真正把开源作为企业文化并在管理组织架构中应用开源文化来提升效率的公司。 红帽软件的企业目标和口号是『成为用户、贡献者以及合作伙伴社区的催化剂,让大家能够以开源的方式创造出更好的科技』。
**InfoQ:开源文化对公司有怎么样的帮助?**
> **姜宁**:开源打破了信息壁垒,让创新的火花四溅。在开源社区中大家通过分享收获成长,开源文化是参与开源项目的人们认同的东西,如果公司认同了开源文化并鼓励开源,相当于是公司与员工在价值观上是相互认同的。我们现在处在一个信息爆炸的时代,公司为了能够跟上时代的步伐必须通过创新来保证其核心竞争力,而开源文化能够最大限度的鼓励创新,我想这也是现在越来也多的公司开始拥抱开源的最主要的原因。
**InfoQ:要建立开源文化,是不是公司相应的组织架构、管理模式都应该做相应的调整?**
> **姜宁**:传统的公司组织架构是一个自顶向下的,这样的组织架构是为管理者服务的,对于底层的员工来说大家只需要按照领导的意志或者安排做事情就可以了。这种组织是由以前常规的制造企业创建,组织架构只需要员工按照标准重复生产就可以,所有的决策都是由高层最终决定的。这样的组织架构一旦上层做出决定,那就很难被改变,它既不适合快速的市场变化,也很难激发员工的创新热情。 反观大多数开源项目,由于做的东西都是新的,没有人在最开始就知道项目最终要做成什么样的,大部分的成功的开源项目都是先通过一个好点子构建一个原型,在社区的需求下不断激发出新的点子,不断修复原有的问题,不断演进,最终成长起来。 在开源社区中,由于大家都没有公司的层级概念,靠升职加薪来激励员工的管理方式很难奏效。开源项目的成功靠的是大家发自内心对开源项目的认同,靠的是技术领导以及开发人员、社区贡献者的热情与努力。开源的项目中没有项目经理,只有技术领导,而技术领导的话语权是通过其长期在社区中的贡献而建立起来的。由此可见开源的文化和我们传统的管理组织架构有太多的不同,红帽软件的CEO Jim WhiteHust最近写了一本叫做 《[The Open Organisation](http://www.amazon.com/The-Open-Organization-Igniting-Performance/dp/1625275277)》的书,在书中他详细阐述了红帽软件是如何将开源文化应用到公司架构中去的。
**InfoQ:红帽是一家开源文化极浓的公司,能谈谈红帽是如何管理员工绩效的吗?**
> **姜宁**:的确,红帽雇佣了大量专职参与上游(红帽提供的企业版软件基本都是是基于开源社区的项目经过打包测试之后制作的发行版,我们把那些社区项目成为上游)开发的工程师,有意思的是这些工程师大部分都是在家上班的。这些工程师如果按照传统企业绩效考核基本上都不合格,因为首先经理看不到你是否工作,也不知道你什么时候上班什么时候下班,更重要的是经理不会给你安排工作内容。红帽软件对于这些工程师的绩效考核核心内容是工程师在社区的活跃程度,以及工程师的影响力,而不是他具体完成了多少工作。红帽有一个叫做Compass的绩效考核网站,经理和员工会定期讨论工作重点,制定发展计划。有意思的是我在和经理进行绩效考评的过程中,经理问得最多的不是你完成哪些事情,而是你对自己的未来有什么规划,你打算学点什么,你的成长目标是什么。这些讨论的最终结果是将你的发展规划和公司工作目标结合起来,在保证公司目标实现的前提下,你可以任意选择你感兴趣的工作内容。在《[只是为了好玩](http://www.ituring.com.cn/article/54622)》这本书中提到了一个问题,为什么人们愿意甚至渴望在互联网上为Linux这样的项目工作?问题的答案是Linux能使人们通过挑战智力而获得乐趣,又能通过产业开发工作获得一种被社会需要的满足感。我觉得问题的答案可以比较好的解释为什么红帽的绩效考核会是这样的。
**InfoQ:公司应该如何培养员工的开源文化、开源意识?**
> **姜宁**: 我觉得首先公司管理层需要了解开源,认同开源文化。开源的核心是开放与协作。公司应该鼓励大家分享,当然是在不泄露公司商业机密的前提下。另外大部分的开源项目的协作是跨越公司边界的,公司应该鼓励大家进行跨部门的沟通与协作。 当然在参与开源过程中,有时候可能会出现公司和员工有分歧的情况,比如某个社区功能可能会很好玩,但是这项目或者这功能和公司目标并不一致,它很难直接为公司产生效益。如果公司的高层和员工在认识和处理这些差异的过程中发生了很大的分歧的话,就会给员工参与开源社区的开发带来很大的困扰。在这里我的建议是让管理层尽量少的干涉员工的具体工作,把大部分管理精力放在如何让员工认同公司的发展策略上,这样才能最大限度地将员工的发展目标与公司的发展目标统一起来,让员工能把所有的热情都投入到日常开发工作中去。
**InfoQ:相比于开源软件的开发和管理模式,你认为企业在软件研发过程中,有哪些值得改进的地方?**
> **姜宁**:传统的企业研发过程基本上就是先做需求,再做概念验证,最后实施。在传统的组织架构下,项目的参与者可能很难有机会影响到项目的决策,如果相关项目是一个比较新的项目(缺乏借鉴),往往比较容易失败。在开源项目中虽然也有失败的例子,但是这种一开始就方向性失败的例子很少见,这是因为开源项目的反馈非常及时。通过社区的使用,一旦发现设计缺陷,就会立即修正,周期不会很长。
> 如果说如何改进的话,我觉得主要是管理层需要从如何提高员工工作热情入手,创造条件鼓励员工之间协作,让创新的火花四溅。这样的改进不是一朝一夕就能完成的,我曾经帮助过一家传统的软件开发企业改进研发流程,很多时候我认为是习以为常的东西,但如果没有开源项目开发经验的话,大家接受和实施过程中都感觉困难重重。这里先做一个小小的预告,我会在这次的[ArchSummit全球架构师峰会](http://www.archsummit.com/speakers/201813)上,结合的我的经历为大家介绍如何将开源软件的管理方式应用到企业软件开发中去。
#### 受访嘉宾介绍
姜宁是红帽软件首席软件工程师,有十余年企业级开源中间件开发经验,有丰富的Java开发和使用经验,函数式编程爱好者。从2006年开始一直从事Apache开源中间件项目的开发工作,先后参与Apache CXF、Apache Camel以及Apache ServiceMix的开发。2007年开始参与Apache Camel项目开发,目前是Apache Camel项目的主要维护者。对WebServices、Enterprise Integration Pattern、SOA、OSGi有比较深入的研究。
查看原文:[姜宁谈红帽绩效考核:不关心员工具体做什么](http://www.infoq.com/cn/news/2015/06/opensource-culture-jiangning)