作者 郭蕾
開源軟件是指某個由社區驅動的開放源代碼的產品,而開源文化是指開源社區所衍生出的團隊溝通、協作和管理的理念。在開源社區中,程序代碼直接決定著項目的成敗,但人更是核心,沒有人便沒有代碼。這一點和企業是相同的。越來越多的企業意識到,開源所提倡的協作和管理方式同樣適用于企業管理,開源文化能夠提高員工的積極性,從而提高生產效率。那到底什么是開源文化,企業應該建立怎么樣的開源文化?為了回答這些問題,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)