企業若要擁抱開源,離不開自身就是開放、共享文化的倡導者與實踐者,如果沒有這些內在文化基因,則就需要改變,改變文化、改變風格。那麼內部開源就是這樣一劑良藥,讓員工很舒服的接受變化,進而擁抱變化。你所在的公司準備好迎接內部開源了嗎?不妨試試本文的方法。
最近幾年,對開源產生興趣的組織和公司逐漸的增多,而且還發生在了非技術的公司,雖然他們可能並不一定在其產品和服務中最大程度上使用開源,但是他們對引進開源的文化到他們的組織中非常的感興趣。類似的「內部開源」能夠給他們帶來諸多益處。
作為一名資深的社區顧問,在幫助公司構建內外的社區時,發現企業面臨的最大的挑戰是如何制定內部開源的程序、有效的部署資源、並實現有條不紊的增長。
為了幫助這些欲實現內部開源的公司,我構建了一個高層次的模型,即如何構建一致的、可預測的、可持續的內部開源計劃,這些公司可以直接採用此模型,對實際情況稍作調整,即可以在公司內部創建一個蓬勃發展的社區。
理解萬歲
從本質上來說,內部開源對於公司來說是一個文化轉變的問題。儘管很多人也認為這就是傳統的軟體工程流程的變動,人們需要專注於建立一個異步的、寬容的、精明的和協作的環境。當然,內部開源 會包含開發的工作流程,但是遠不止此。
改變文化的挑戰在於:文化是思想,意見,習慣,恐懼,夢想,價值觀等等無定形的東西。在你打算將 內部開源 集成到公司里,你必須明確的了解現有文化的驅動力在哪裡,然後在根據這些推行 內部開源。
1. 理解流程和協作
人們能夠在一起工作的核心就在於協作的基礎設施和流程,其中包括有:代碼託管、代碼revierw、持續集成、自動化測試、文檔創建、知識庫、獎勵計劃等等,你必須去了解其中的每個細節,並確定他們是如何在一起工作的,也要了解其中的不足之處,如大範圍的使用以及工作人員的個人經驗。
我建議由團隊打破組織,然後重新組合一張地圖:
- 每個團隊消耗的是什麼?
- 每個團隊生產的是什麼?
- 團隊如何工作?
- 他們如何與其他團隊接觸?
- 當前系統的優缺點分別是什麼?
2. 理解人本身,驅動力
除了協作的事情之外,了解人本身同樣重要。一家公司讓來自不同背景的很多人聚集起來,他們擁有完全不同個性和觀點。你需要真心的理解他們、知道他們的目標、他們害怕什麼、甚至是他們的規劃,文化變遷必須注意其運作環境的現實。你不可能僅從命令上構建內部開源的文化,你需要建構的是人們想用的東西,是被鼓勵的行為。
建議您建立自己的組織結構圖:
- 影響力的分解(主要利益相關者和決策者),
- 人們在哪裡交付工作(團隊和核心員工)以及
- 個別人的議程、個人目標(負能量、人們為某些目標而傷害他人、內在和外在的獎勵動機等)。
規劃
在理解了公司的當前的環境的情況下,接下來你要做的就是構建藍圖:達到平滑、高效、包容、享受的 內部開源 環境。
3. 制定戰略計劃
第一步要做的事情是建構整體的戰略,一個很複雜但是仍在你的想像範圍之內。將開源原則整合到公司中涉及到一系列不同的考慮,諸如開發者工作流、基礎設施、溝通、政策(如開放度和透明度)、激勵模式、分段參與、更廣泛的消息傳遞、治理等等。
你不僅要做很多工作,而且因為你的工作重點會有所不同(其中一些項目相比其他項目要更為迫切),您的資源有限,公司的一些同事可能會拖慢甚至阻止該項目。
想要讓人們參與進來,你需要做下面幾件事:
- 構建一戰略;
- 定義優先級;
- 獲得資源;以及
- 在消息、約定、以及推出等每個細節因素
我建議制定一個整體更廣泛的戰略計劃,映射到未來一兩年,涵蓋關鍵的重點領域。接下來,將該計劃分解成較短的執行周期,從更廣泛的計劃中提取關鍵目標,並將其映射到具有指標的實際可交付成果。這將形成你的Backlog。
4. 構建Backlog
本質上來說,戰略就是一張告訴你去哪裡的地圖。戰略需要轉換為實際的工程,以及利用某些資源來交付的成果,資源的話,諸如開發時間、資金等。而挑戰在於每個戰略規劃都涉及到眾多的子項目,以及各種目標。此種情形下,最好的辦法就是使用backlog。
簡單來講,backlog就是較大的、共享的要做的事情列表,當你制定好了戰略時,就可以將所有的獨立的項目轉換為backlog了。這就為大家提供了一個可以討論、重新定義、改進個人成果的地方。當這些可交付成果中的一些可以實施時,人們就可以從backlog轉化為實際的工作計劃,並分配相應的資源。這也就是意味著你可以在backlog中逐步實現你的戰略,哪怕是沒有資源積極的跟上。
5. 定義成熟度模型
據我個人的和客戶打交道的經驗中,其中最大的挑戰是,他們要在自己的組織中構建內部開源,但是對於內部開源成功是什麼樣子沒有任何的概念。現在,這句話聽起來像是商業書籍的廢話,但這個問題是真實的。舉例來說,如果你打算改進開發者的效率,比如代碼review,你是如何知道這個目標實現的樣子?你如何衡量工作?並如何得知那些指標是需要緊盯的?對於許多這些問題,您正在建立定性的文化變革。我們如何衡量呢?
對於不同的受眾團隊,這個挑戰還可能更加的劇烈。雖然參與執行這項工作的人們希望能夠獲得成功的成果,但高級管理層和利益相關方不會想要細節,而只是要求有關重要趨勢的信息。對付此種情形的一個有效的方法就是:「成熟度模型」。
成熟度模式,能夠將解決方案的不同的進化階段打破,成為成功應該是個什麼樣子的一組期望。我傾向於考慮這些不同的時間順序階段:
對於每一個階段,都要有著明確的期望。舉例來講,如果你想將代碼審核帶入到公司來,那麼在「探討期」就意味著「一小部分團隊正在積極地在非關鍵的代碼進行嘗試性的代碼審核。」
執行
有了戰略、backlog、和成熟度模型,你已經知道了你要做什麼了。接下來就是要真正的動起來——執行。
6. 交付優先項目
隨著backlog的就位,你首先要做的事情就是在你的工作計劃當中決定那個項目是優先級較高的。決定這一點取決於最緊迫的工作和目前可用的資源。雖然工作的緊迫性很重要,但資源是這裡的真正定義標準 – 巧婦難為無米之炊。
我建議你有一點的規律來做這件事(每兩周,每個月,或每個季度)。彙集計劃的關鍵帶頭人,審核backlog,定義資源,然後確定工作計劃。
7. 和不同的團隊進行溝通
隨著你的計劃逐一到位,就開始到了要結果的時候了,你需要定義里程碑、指標、並定期審查可交付的成果。鑒於對這項工作的文化影響,溝通 – 在某些情況下,要更多的溝通 – 才是關鍵。我們要確保在公司範圍內,關鍵的干係人、帶頭人、高層等擁有一個好的感覺:
- 策略是什麼?
- 工作計劃是什麼?
- 工作是如何交付的?
- 工作的結果如何?
請記住,不同的團隊有不同的溝通需求。高級的領導者需要的是概覽和結果,關鍵帶頭人會要求更為深度的,而團隊的帶頭人則需要每一個細節。
你需要創建既能深入又可以拔高概覽的方法,從而能夠和正確的團隊溝通,並定期的更新(可以採用周報的方式)。另外,請務必定期向整個公司發信息。
審查並改進
商業公司引入內部開源,還遠遠沒有完善,方法論和實踐都很欠缺,公司各不相同,人也各不相同,方法也會各不相同。但是你必須去自己動起來,從而尋求在此過程開始時想要了解的特定需求。
因此,定期評估你的工作並評估其進展情況至關重要,因為需要進行適當的改進。做這樣的評估並不容易,它可能會引起人們對於失敗的恐懼,但是征服這樣的恐懼又是非常重要的。開始做的一些事情可能不順利,而其他人將提供次優的結果。確定對工作產生負面影響並糾正這些缺陷的缺點才是你的分析要點。
8. 收集定量數據
第一步就是收集數據,換句話說叫收集數字。你每工作的項目,定義一系列打算追蹤的度量值,你將能夠通過這些指標來確定項目是否成功。舉例來說,這些指標有:使用量、貢獻量、代碼、消息、參與度、等。除非有一個關鍵的測量方法,否則不應將項目帶入工作計劃。
9. 進行用戶調查
分析數字是比較方便的,畢竟現在我們人人都擁有計算機來做日常工作的。但是冷冰冰的數字未必就是全部的事實,我們也需要跟蹤一些人本身的因素,如幸福感、賦權、包容等等。非經驗分析很難做,因為這些東西通常不能很好地映射到數字。
解決此類問題的一個實用的辦法是進行定期的匿名調查,即詢問人們有關上內部開源的一些行為、情感上的感受,那些相關的工作人員必須是感到很舒服、順暢的,否則就問題大了。你需要做的是賦予他們明確的權限,而不去理會後果。
和調查執行一樣重要的是,所問的問題和選項,這些都是非常關鍵的。措詞和選擇往往會無意中影響回應,所以我的建議是要找一組人來設計調查。
10. 更新策略
一旦你擁有了這些數據,就可以詢問你自己和團隊一些難一些的問題了,即關於這些說明的趨勢和模式。你如何改善整體策略、如何重新組織backlog、調整項目的優先級,構建和管理與他人。要記住:幫助一家公司實施內部開源是非常複雜的,有著數不清的細節需要處理,但是我希望本文提供了一個大體的框架,至於具體的工作,請根據實際情形自行定奪。