程式開發是一種難以管理的創意工作?
從工業革命開始,工作被分成了幾種類型,為了量化生產,以供給滿足客戶大量的需求,所以生產實體產品這樣的工作,被拿到生產線上進行最佳化,目標是在最短的時間,最低的資源投入與成本耗費之下,做出一樣品質的產品。 從這個概念開始,很多管理技巧衍生出來,例如我們熟悉的SOP,我們過去常用的甘特圖,計算績效的KPI…凡此種種,都是從這種基礎概念產生的理論。 但,有一種類型的工作很難被SOP規範、很難用KPI管理、也幾乎無法被甘特圖預測,那就是創意工作,諸如,藝術品、歌曲、文章…的生產。而我得說,程式設計,其實也是其中之一,但往往被忽略的很徹底。 為何這類的創意工作不能被傳統管理工具有效管理,本質原因很簡單,因為能透過標準作業程序管理的生產行為,大多是追求著產出"完全一樣"的"實體成果",小到一顆螺絲釘,大到一台BMW汽車、在生產規劃的那一刻,其目標就是希望生產出一模一樣的東西,沒有人希望這類產品的產線在生產的時候,出來的每一個成品都有自己獨一無二的特色,如果是,哪怕只是多了一兩克重量,都會讓人難以接受。 但創意工作不是,沒有一首曲子100%完全一樣,如果有,就變成了抄襲,藝術品、創意工作所產出的成果,之所以有其價值,就是在那95%類似的元素之外,那5%的一點差異。 藝術品和創意工作,容或製作生產的流程相同、投入的資源類似,但一旦落入模仿或臨摹,其價值就一落千丈,和這市場上其他的商品不同,其差異就在於對價值的認定。 很不幸的是,電腦軟體也是如此。天下沒有兩套完全一樣的軟體,因為不需要,如果完全一樣,你copy一分就可以了。電腦"可程式化"的目的就在於面對變化,面對差異,然而麻煩的地方就在那5%的差異。這5%的差異,讓程式設計從工業工作變成了創意工作,而”人”在其中就變成了一個很大的變數。(如果完全一樣,就不會有問題,也不需要額外寫程式,就是因為不完全一樣,才需要再次撰寫程式碼) 過去20年,軟體工業一直企圖把程式設計(軟體開發)變成一個標準化的動作,我們夢想著用OOP,就可以讓一切變的組件化、好讓程式的組成變得容易。我們從工業管理生產線上學來SOP、KPI、Gantt Chart,想要用一樣的方式管理程式設計師的產出,用同樣的方式提高產量,但努力了20年,卻發現離理想越來越遠(早期軟體生命周期很長,半年才一