混合軟體開發角色效果更佳
![](https://linuxstory.org/wp-content/uploads/2024/06/152638jli5ohrhtoth6i0q.png)
大多數開源社區沒有很多正式的角色。當然,也有一些固定人員幫助處理系統管理員任務、測試、編寫文檔以及翻譯或開發代碼。但開源社區的人員通常在不同的角色之間流動,往往同時履行幾個角色的職責。
相反,大多數傳統公司的團隊成員都定義了角色,例如,負責文檔、技術支持、質量檢驗和其他領域。
為什麼開源社區採取共享角色的方法,更重要的是,這種協作方式如何影響產品和客戶?
Nextcloud 採用了這種社區式的混合角色的做法,我們看到了我們的客戶和用戶受益頗多。
1、更好的產品測試
每個測試人員都會說測試是一項困難的工作。你需要了解工程師開發的產品,並且需要設計測試案例、執行測試案例並將結果返回給開發人員。完成該過程後,開發人員將進行更改,然後重複該過程,根據需要來回進行多次,直到任務完成。
在社區中,貢獻者通常會對他們開發的項目負責,因此他們會對這些項目進行廣泛的測試和記錄,然後再將其交給用戶。貼近項目的用戶通常會與開發人員協作,幫助測試、翻譯和編寫文檔。這將創建一個更緊密、更快的反饋循環,從而加快開發速度並提高質量。
當開發人員不斷面對他們的工作結果時,會鼓勵他們以最大限度地減少測試和調試的方式去書寫。自動化測試是開發中的一個重要元素,反饋循環可以確保正確地完成操作:開發人員主觀能動的來實現自動化 —— 而不過於簡化也不過於複雜。當然,他們可能希望別人做更多的測試或自動化的測試,但當測試是正確的選擇時,他們就會這樣做。此外,他們還審查對方的代碼,因為他們知道問題往往會在以後讓他們付出代價。
因此,雖然我不認為放棄專用測試人員更好,但在沒有社區志願者進行測試的項目中,測試人員應該是開發人員,並密切嵌入到開發團隊中。結果如何?客戶得到的產品是由 100% 有動機的人測試和開發的,以確保它是穩定和可靠的。
2、開發和客戶需求之間的密切協作
要使產品開發與客戶需求保持一致是非常困難的。每個客戶都有自己獨特的需求,有長期和短期的因素需要考慮 —— 當然,作為一家公司,你對你的發展方向有想法。你如何整合所有這些想法和願景?
公司通常會創建與工程和產品開發分開的角色,如產品管理、支持、質量檢測等。這背後的想法是,人們在專攻的時候做得最好,工程師不應該為測試或支持等 「簡單」 的任務而煩惱。
實際上,這種角色分離是一項削減成本的措施。它使管理層能夠進行微觀管理,並更能掌握全局,因為他們可以簡單地進行產品管理,例如,確定路線圖項目的優先次序。(它還創建了更多的會議!)
另一方面,在社區,「決定權在工作者手上」。開發人員通常也是用戶(或由用戶支付報酬),因此他們自然地與用戶的需求保持一致。當用戶幫助進行測試時(如上所述),開發人員會不斷地與他們合作,因此雙方都完全了解什麼是可行的,什麼是需要的。
這種開放的合作方式使用戶和項目緊密協作。在沒有管理層干涉和指手畫腳的情況下,用戶最迫切的需求可以迅速得到滿足,因為工程師已經非常了解這些需求。
在 nextcloud 中,客戶永遠不需要解釋兩次,也不需要依靠初級支持團隊成員將問題準確地傳達給工程師。我們的工程師根據客戶的實際需求不斷調整他們的優先順序。同時,基於對客戶的深入了解,合作制定長期目標。
3、最佳支持
與專有的或 開放源核心 的供應商不同,開源供應商有強大的動力提供儘可能最好的支持:這是與其他公司在其生態系統中的關鍵區別。
為什麼項目背後的推動者(比如 Collabora 在 LibreOffice 背後,The Qt Company 在 Qt 背後,或者 Red Hat 在 RHEL 背後)是客戶支持的最佳來源呢?
當然是直接接觸工程師。這些公司並不阻斷來自工程團隊的支持,而是為客戶提供了獲得工程師專業知識的機會。這有助於確保客戶始終儘快獲得最佳答案。雖然一些工程師可能比其他人在支持上花費更多的時間,但整個工程團隊在客戶成功方面發揮著作用。專有供應商可能會為客戶提供一個專門的現場工程師,費用相當高,但一個開源公司,如 OpenNMS 可以在您的支持合同中提供相同級別的服務,即使您不是財富 500 強客戶也是如此。
還有一個好處,那就是與測試和客戶協作有關:共享角色可確保工程師每天處理客戶問題和願望,從而促使他們快速解決最常見的問題。他們還傾向於構建額外的工具和功能,以滿足客戶預期。
簡單地說,將質量檢測、支持、產品管理和其他工程角色合併為一個團隊,可確保優秀開發人員的三大優點 —— 從簡、精益求精、高度自我要求 —— 與客戶緊密保持一致。
via: https://opensource.com/article/18/8/mixing-roles-engineering
作者:Jos Poortvliet 選題:lujun9972 譯者:lixinyuxx 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive