博碩文化

關於「八二法則」(80/20 principle)有很多說法,包括以它的發現者Vilfredo Pareto命名的「帕雷托法則」(Pareto principle)。它向你展示了一條途徑,將精力集中在少數重要的事情上並忽略那些多數對進展沒幫助的事情,能夠讓你在專業coder這條路上獲得更多的成果。

八二法則在個人生產力文獻中無處不在,它之所以如此受歡迎的原因有兩個:首先,只要你能夠找出重要的事情,即導致80%結果的20%活動,並堅持不懈地專注於這些事情上,此法則就能讓你既輕鬆又具高生產力;其次,我們可以觀察到八二法則存在於各式各樣的情況下,使其具有相當大的可信度。當然,分配比例並不一定永遠是80/20──具體數字可以變成70/30、90/10甚至95/5──但永遠是嚴重偏向「少數因素造成多數的結果」。

八二法則對coder的影響

在程式設計中,帕雷托法則結果往往比大多數其他領域更偏向頂端,其分布通常看起來更像90/10或95/5,而不是80/20。比爾蓋茲說過:「一位優秀的車床作業員薪水是普通車床作業員的好幾倍,而一位優秀的軟體程式撰寫人員的價值是一般軟體程式撰寫人員的10,000倍。」比爾蓋茨認為,優秀的軟體寫手和一般的軟體寫手之間的差距不是16倍,而是10,000倍!

以下是軟體世界容易出現這種極端帕雷托分布的幾個原因:

• 優秀的程式設計師可以解決一些普通程式設計師根本無法解決的問題。在某些情況下,這使得他們的生產力提升了無數倍。

• 優秀的程式設計師可以寫出的程式碼,比普通程式設計師快了10,000倍。

• 優秀的程式設計師編寫的程式碼bug更少。想想一個安全漏洞對Microsoft聲譽和品牌的影響!此外,每出現一個額外的bug都需花費時間、精力和金錢來進行codebase的後續修改和新增特性──bug的負面累樍效應。

• 優秀的程式設計師編寫的程式碼更易於擴展,可能會提高軟體開發過程後期數千名開發人員在處理程式碼時的生產力。

• 優秀的程式設計師會跳出框架思考,並且找到創造性的解決方案來規避昂貴的開發工作,並能專注於最重要的事情上。

在實務中,這些因素的組合會產生作用,因此差異可能更大。

所以,對你來說,關鍵問題可能是這樣的:如何成為優秀的程式設計師?

程式設計師的成功指標

不幸的是,「成為一名優秀的程式設計師」這句話並不是你可以直接優化的成功指標─這個問題涉及到很多層面。一名優秀的程式設計師能夠快速理解程式碼、了解演算法和資料結構、知道不同的技術及其優缺點、可以與他人合作、善於溝通且富創造力、受過良好教育並且知道如何組織軟體開發過程,同時擁有數百個軟實力與硬實力。但你不可能在這些方面都是專家!如果你不專注於少數重要的幾件事,就會被那些瑣事給淹沒。要成為優秀的程式設計師,你必須專注於最重要的幾件事上。

需要專注的幾個重點之一,就是編寫更多的程式碼。你寫的行數愈多,就會成為更好的程式設計師。這是多維問題的簡化方法:藉由優化代理指標(寫更多程式碼行數),你就可以增加在目標指標上成功的機率(成為優秀的軟體程式寫手)。

當你寫更多的程式碼,你會更容易理解程式碼,而且言行舉止會跟程式設計高手一樣,同時吸引更好的coder加入你的網路,並找到更具挑戰性的程式設計任務,然後繼續寫更多程式碼、功力變得更強,而你的每行程式碼會賺取愈來愈高的報酬。你或你的公司可以把許多瑣碎的工作外包出去。

這是你每天都可以遵循的80/20活動:追蹤你每天撰寫的程式碼行數並對其進行優化。讓它成為一種遊戲,而且每天都至少要寫到一定的基本行數(平均行數以上)。

現實世界中的帕雷托分布

我們將快速瀏覽一些應用帕雷托分布的實際範例。

GitHub儲存庫TensorFlow貢獻

我們可以在GitHub儲存庫的貢獻中看到帕雷托分布的一個極端例子。讓我們考慮一個廣受歡迎的Python機器學習計算儲存庫:TensorFlow。

對於該儲存庫93,000次的提交,使用者「tensorflow-gardener」的貢獻超過了20%;考慮到有成千上萬的貢獻者,該分布比80/20分布更加極端。原因是,貢獻者「tensorflow-gardener」乃是由建立和維護此儲存庫的Google程式設計團隊所組成。但是,就算跳過這個團隊好了,剩下的頂尖個人貢獻者也都是非常成功的程式設計師,留下令人印象深刻的記錄。你可以在公開的GitHub頁面上查看他們的相關資訊。在這些人當中,很多已經在熱門企業找到了令人興奮的工作機會。他們在產出大量程式碼提交到此開源儲存庫「之前」還是「之後」獲得成功,只是純粹理論上的討論而已。但從實際的角度出發,你應該開始建立你的成功習慣:每天寫更多程式碼行數。沒有什麼事能阻止你成為TensorFlow儲存庫的第二名貢獻者──在接下來的兩到三年內,每天提交有價值的程式碼到TensorFlow儲存庫兩到三次。如果你堅持下去,你可以入列地球上最成功的程式設計師,只要選擇一個強大的習慣並堅持個幾年!

帕雷托分布在生活和程式設計中有各種實際應用,但根據我的經驗,對你最具變革性的應用將是成為一名「80/20思想家」;也就是說,你不斷嘗試找出事半功倍的方法。這裡有一些例子:

 活動  你在本週完成的活動中,最有影響力的20%中的20%,通常負責80%結果中的80%。在這種情況下,0.8%的活動將導致51%的結果。粗略地說,如果你每週工作40小時,那麼其中20分鐘可能造就了你本週工作一半的成果!此類20分鐘活動的一個範例是編寫一個腳本,該腳本自動執行一項業務任務,每隔幾週為你節省幾個小時,你就可以把多出來的時間投資在其他活動。如果你是一名程式設計師,實作時決定跳過不必要的功能可以為你節省數十個小時不必要的工作。如果你開始應用八二思維,很快就會在自己的工作中發現許多這樣的槓桿活動。

 進步  無論你在任何帕雷托分布上處於什麼位置,都可以利用你的成功習慣和專注力,讓輸出呈指數性增長。只要尚未達到最佳狀態,總有進步的空間,以更少的資源獲得更多的成果──即便你已經是一個高度開發的個人、公司或經濟體。可以讓你沿著帕雷托曲線往上爬的活動未必總是顯而易見,但它們絕非隨機存在。許多人放棄在他們的領域尋找成功指標,因為他們認為結果的機率使得它完全是隨機的。這是多麼錯誤的結論!要成為一名大師級的程式設計師,每天寫少少的程式碼不會讓你達成目標,就像每天貧於練習棋藝也不能讓你成為一名職業西洋棋士一樣。其他因素也會發揮作用,但這不代表成功是一場機率遊戲。透過專注於你所在行業的成功指標,你將能夠操縱對你有利的機率。作為一個八二法則思想家,你就是莊家──而且莊家「多半」是贏家。(本文摘錄整理自《精通無瑕程式碼》第二章,博碩文化提供)

圖片來源_博碩文化

 書名  精通無瑕程式碼:工程師也能斷捨離!消除複雜度、提升效率的17個關鍵技法(The Art of Clean Code)

Christian Mayer/著;江玠峰/譯

博碩文化出版

定價:600元

圖片來源_Finxter網站

 作者簡介 

Christian Mayer

擁有電腦科學博士學位,是流行的Python網站Finxter的創始人,該教育平台每年教導超過500萬人如何寫程式。他寫了很多書,包括《Python One-Liners》(No Starch,2020年)、《Leaving the Rat Race with Python》(2021年)和Coffee Break Python系列。

熱門新聞

Advertisement