2020年3月14日

閒聊 | 當80-20法則套用在程式開發 | 很多事情本來就是徒勞無功的呀

80-20法則是什麼?

不曉得大家有沒有聽過這個法則?應該或多或少有聽過,那我自己對80-20法則有這樣的解釋方式:

80%的產出,來自於20%的時間/心力。

更進一步說80、20對我來說只是虛數,其實可以翻譯成:

大部分的產出,來自於少部分的時間/心力。

或是反過來說:

大部分的時間,花在無產出的事情上。

正式的定義可以參考維基百科:帕累托法則

帕累托法則(英語:Pareto principle,也被稱為 80/20 法則、關鍵少數法則、八二法則)指出,約僅有20%的變因操縱著80%的局面。

舉例來說

不知道大家平常開發的時候,有沒有覺得大部分的時間都花在無關緊要的事情上,真正重要的事情反而不會花太多時間?

我覺得這樣的情況就很符合80-20法則。

像是:

  • 開發的時候常常一下子就把大架構或主要功能寫完了,但是卻要花大量的時間de小bug或是補完細節判斷。
  • 很多小功能都用不到,大部分的使用者都只會用到少部分主要功能。(而且這些小功能花超多時間實作,維護成本也很高)
  • 有些一些特殊情況只有某個使用者會遇到(用一個超舊版本的瀏覽器之類的),卻被主管要求要改寫程式去相容。(舊瀏覽器一堆新的做法不支援,要改寫超多)
  • ...

諸如此類情況,常常都會讓我想到80-20法則。

時間分配與資源管理

雖然說80-20法則不一定可以完全套入現實情況,但是我覺得它是一個很好的決策工具,或者是說:它是一種看待世界運作的方式。

畢竟專案時程、開發人力總是有限,而且一個人的時間、精力、動力也不是無限的。在決定做某件事之前,我通常會想一下:這件事是很重要嗎?如果一點都不重要,卻會花掉大量時間,是不是可以考慮一下改變作法?或是先解決更重要的事情?

用比較消極的角度來看,一開始就認知自己大概有80%的時間,做出來的事情都沒什麼效益,那工作起來心情也應該會比較順暢,反正世界就是這樣運作的,那就接受吧。

用比較積極的角度來看則是可以幫助自己釐清事情的輕重緩急,選擇最有效益的事情來做,更妥善地利用時間。

最後

其實我覺得寫程式或是開發工作,就是一種資源上的管理,不論是在開發產品上時,必須使用現有的運算能力、記憶體、儲存空間去滿足使用者的需求,或是人力上,如何分配人員去實作需求,這些資源資源的分配,就是一種管理。

而80-20法則對我來說,就是其中一種幫助我思考如何管理資源分配的工具。