你屬于開源性格測試六大分類中的哪一類呢
開源貢獻者往往充滿激情——他們愿意為項目奉獻一切,這也自然會囊括相當一部分個性化因素。我們將共同了解貢獻者中的幾大不同性格類型、他們的目標所在,并如何在追求質樸與追求完美的pull請求之間做好取舍工作。在各類開源性格類型當中,您最認同哪一種呢?比如泛用型、專用型、完美主義者、概念論者、冒險主義者,還是拘泥傳統者?
在團隊當中工作必然要面臨著成員們對于特定議題的爭論,這當然并不是什么壞事。不同的意見有助于確保每位成員的思路都能得到討論,同時確定問題來源并將重點集中在手頭任務的核心矛盾身上。
然而,這一切在開源世界中卻并沒那么簡單。開源貢獻者往往充滿激情——他們愿意為項目奉獻一切,這也自然會囊括相當一部分個性化因素。這種情況雖然在其他領域也有出現,但開源貢獻者顯然更熱衷于利用自己工作之余的寶貴時間做點自己真正想做的事。
為開源企業工作則會帶來一種更加扭曲的心態組合:從業者需要在工作管理要求與項目前進方向之間找到平衡點。這很可能造就一種極具挑戰性的環境,特別是考慮到面對貢獻型項目時,企業本身往往并不一定能主導一切。
在今天的文章中,我們將共同了解貢獻者中的幾大不同性格類型、他們的目標所在,并如何在追求質樸與追求完美的pull請求之間做好取舍工作。雖然很 多朋友可能發現自己身兼多種性格類型的特質,但這些特質往往圍繞著一類中心。要實現妥善管理,訣竅在于找出貢獻者們的真正目標,并判斷其能否與項目方向保 持一致。
1.泛用型 / 專用型
這種特性集中在項目如何在各類狀態下正常起效。
泛用型性格的人希望確保項目能夠在各項狀態下全部正常起效。這往往要求貢獻者采取非常廣泛的審視角度。任何針對代碼的變更通常都會涉及字符串變更與 變量替換、新增抽象層或者將某些功能以插件形式體現——這一切都將使得項目更具定制化特性與泛用能力。盡管這類方式并沒有什么問題(事實上,我本人就是典 型的泛用型性格),但這意味著代碼的復雜性會顯著提高——可能導致編寫時間延長且難于符合既定要求。
在另一方面,專用型則專門針對特定用例。這類貢獻者往往樂于強調現有代碼成果并不需要處理其他某些用例,而且傾向于對變量進行硬編碼并利用現有代碼 實現目標,而直接忽略其在其他狀態下的可用性。專用型性格特別適合完成某種具體的任務,因為其通常能夠實現優化程度更高的解決方案。
著眼于這兩種思路對注釋以及pull請求加以權衡并非易事。我個人的體驗是,人們傾向于編寫專用型代碼,但卻提供泛用型注釋。人們在評論當中很少會 提到“現有代碼太過泛用”,而更多是在抱怨其專用型傾向太強。總結來講:具體取向要依托于項目的發展預期。泛用型性格的貢獻者希望打造出一款瑞士軍刀性質 的工具,而專用型性格的貢獻者則希望其成為一把手術刀。
2.完美主義者 / 概念論者
這類特性專注項目是否符合標準與實踐慣例。面對任何一項任務,在與相關工作團隊進行討論時,對于最終成效的判斷都是有所差異的:有些人希望保證其完美符合現有標準,而有些人則認為取中位水平即可,另一部分則樂于通過我們前所未聞的方式加以實現。
其中完美主義者會對語法進行吹毛求疵般的挑剔。他們會強調稱,完成任務的唯一途徑就是按部就班、嚴格遵循規則。他們會指出,如果想讓項目取得成功, 就必須按照他們的既定思路來推進。說實話,他們的觀點通常都是正確的。他們也會深入查看我們的代碼,并從中發現性能問題。即使是只需要運行三次的循環,他 們也會提出建議以確保它們能夠擁有更快的運行速度。這幫完美主義者希望讓代碼成果成為一種藝術品。他們熱愛優雅、高度優化且符合標準的代碼。
在另一方面,概念論者則更關注如何讓代碼庫中的組成部分切實生效。在“保證生效、加以改進、提高速度”這一循環當中,他們始終停留在“保證生效”階 段,而且對于完美主義者們對于現有方案水平的抱怨之聲充耳不聞。當然,這種堅持將能夠生效作為最終標準的思維也讓概念論者同始終堅持代碼藝術化的完美主義 者們爆發出激烈的沖突。
對二者加以平衡本身也很講究技巧——這取決于概念論者們的具體提議。有時候,時間周期可能是一項非常重要的因素,這意味著代碼達不到完美主義者提出 的標準并不一定是壞事。畢竟有時候快速上線顯得更加重要。這意味著對概念性代碼的驗證將成為必然,貢獻者并沒有時間或者其它資源將其提升到完美的高度。另 外,完美主義者的主張往往令概念論者頭痛不已,因為前者對于完善編碼規則的堅持在后者看來只是一種強迫癥。不過在可讀性方面,在絕大多數情況下完美主義者 編寫的代碼更容易閱讀與維護。總結來講,我們需要考量時間的限制以及現有資源規模,從而考慮如何更好地解決未來可能出現的問題。完美主義者希望自己的刀刃 盡可能銳利、耀眼,而概念論者則樂于利用一切刀具——甚至是某些只是看起來像刀具的東西——完成任務。
3.冒險主義者 / 拘泥傳統者
在談到解決問題時,不少人樂于將其視為嘗試新事物的好機會。冒險主義者們就屬于這類人。無所畏懼、著眼未來的冒險主義者們總是希望使用最新的技術方 案、最新的語法成果以及最具想象力的文件說明方式。他們希望項目能夠持續前進并全程為其護航,不過他們同時亦有著雄心與壯志幫助其超越極限并嘗試新鮮手 段。為什么不呢?這才帶勁!這些冒險主義者們通常會利用自己聞所未聞的代碼庫,例如mustardandcheese或者protactinum,外加各 類技術名詞。當然,一旦出了問題或者是發現代碼庫不夠成熟,那么我們該讓誰來負責?沒錯,說的就是你們,冒險主義者們!
另一方面,拘泥傳統者們則希望堅持使用久經考驗且備受信賴的固有技術。這并不是說拘泥傳統者一定沉悶無趣,他們只是更樂于利用自己已經掌握的知識獲得可預測的結果。他們希望確保一切正常運轉,同時使用他們過去一年或者過去數年中已經涉及過的技術方案。
要在二者之間取得平衡,同樣難度頗高。最重要的問題在于,我們能夠拿出多少時間用于解決由新型庫/工具/代碼所帶來的潛在問題。冒險主義者們通常會 把新鮮技術的引入形容為“雙贏”作法。不過拘泥傳統者往往對此抱有審慎的態度。總結來講:大家是否有時間學習這些新型技術?團隊中的其他成員是否認同這種 冒險?由此帶來的收益是否確實高于相關學習曲線?冒險主義者們希望使用沒人用過的鉬鋼合金刀片,而拘泥傳統者則堅持使用傳統材料制成的老牌刀具。
總結陳詞
這篇文章的主旨當然不是要挑起群眾內部矛盾,或者是把技術從業者硬性分類,顯然也不是要告訴大家該如何看待上述各種性格的貢獻者。我們只是想探討代 碼編寫環境下各位工作成員的常見心態類型。其實這種狀況在非代碼編寫環境下也很常見。各位不妨將上述分類看作一種工具,并利用它通過特定貢獻者提供的注釋 與代碼來判斷他們屬于哪種性格類別。
當然,我們不可能永遠只具備其中的某一項特質。其中總是會有一定程度的交集,而這交集往往取決于他們當前正在從事的項目、手頭的可支配時間、以及對 技術的理解水平的變化。就個人而言,我認為自己是個相當極端的泛用型/完美主義者,并在冒險與傳統方面采取中立態度。了解這些特質能夠幫助大家了解別人如 何看待我們的代碼與注釋,同意利用這些素材判斷其他人的取向。
在開源世界當中,這些特質往往表現得更加夸張。當人們把自己的時間與精力投入到開源項目當中,每個人都在真心付出并希望自己的聲音能夠得到尊重。所 以,在下一次編寫評論或者注釋時,請嘗試從這些性格特征出發理解為什么現有成果會表現出這種狀態。立足于完美主義角度者打倒概念論者毫無意見,提出各類冒 險型建議也會讓傳統型貢獻者無所適從——總而言之,在不同觀點間尋求平衡點才是明智之舉。
原文標題:Which open source personality type are you?,作者:Pete Savage
稿源:51CTO
來自: http://www.oschina.net//news/71125/opensource-personality