生產效率
新公司到職也快一個月了,這禮拜看到同事們排排坐在辦公室裡認真的coding,心裡突然有個莫名的聯想
在亞當史密斯的『國富論』中,有一段是在描述人類工業化後,分工所產生的效率革命:
「……一個沒有受過專業訓練的工人,也不曉得如何運用機器……即使盡最大的努力,一天也未必能做得出一根針來。……」但是,經由分工的辦法,將整個製造程序「分別為十八他階段。每一個階段都雇用技藝熟練的好手……我曾看到一家很小的工廠中,一共祇雇了十個工人,但每天可以生產四萬八千根針。」他指出,「這是由於正確的分工和將他們困難的作業適當編組起來的結果。」
於是乎,分工所造成的效率革命對於原本人類的生活造成了重大的影響,人們可以用更便宜的價格享受到更好的生活物質。
這是以製造業來說,那軟體業呢?
這些年來,重心也慢慢從程式的執行效率,一部份轉移到程式的開發效率上。所以有更高層的語言被發明出來,像是Python, Ruby等。更多的framework為了解決特定目的,像是Qt, Ruby on Rails。物件導向Object Oriented也是,把抽象化的性質和方法包裝起來,其它的使用者在大部份情況下,只要知道interface如何使用就可以了,大幅減化實作和維護的時間。
然後從單純程式的開發效率上轉移到行為的自動化上,所以又有了自動化測試,自動化部署。
所以一個軟體專案的分工流程大概可以分成這樣:
- 業務接洽:決定專案目的和目標
- 技術評估:決定技術架構
- 專案管理:功能開發時間安排
- 開發團隊:實現功能細節
- 測試,佈署
一層又一層的抽象和分工,讓每個環節的人都能專注的自己的分工上面,這是不是也很像在製造業的工廠分工呢?
再深一層想,所以這個專案能不能成功,其實在前面兩個環節就已經幾乎確定了,後面的工作只要有一個運轉良好的團隊,就能順利產出。這也是為什麼總是聽到無數的管理者強調人的重要性。
回到文章一開頭,看到同事們排排坐在辦公室裡認真的coding,彷彿聽到機器的運轉聲軋軋作響