從經濟學角度來看前端和全棧
最近中美貿易戰,所以突然對經濟學產生了興趣,我想通過經濟學的原理來嘗試說明前端工程師和全棧工程師的優劣。(本文經濟學觀點基於曼昆的《經濟學原理》和亞當斯密的《國富論》)
1. 分工的重要性
分工的重要性在《國富論》的第一章裡就闡述的很清楚:
- 分工使專職工人的技巧改良,技巧改良使得他所能成就的作業量增加。分工使每個人的業務還原為某一種單純的操作,可能使這種操作成為他一生的專業,所有依然會增進工人的技巧。分工使得前端和後臺能更深入的沉浸於自己熟悉的領域,用更熟練的技巧去創造價值。
- 從一種工作轉到另一種工作時通常會損失掉很多時間。我們讓每個人進行合理分工,可以減少每個人轉換工作時不必要的學習成本,進入更大化的在相同時間內創造更多的價值。如果有一個前端想要寫後端,他可能還需要很多的時間去熟悉後端的語言,環境,程式設計思想等,這就會造成很多時間的無謂損失。
- 適當機器的利用。而一塊如果靠到程式設計的方向來講的話,這些機器就是技術大牛所創造的框架、各類庫以及優秀的程式設計思想。
2. 合作的重要性
在《經濟學原理》第三章裡,我們瞭解到參與貿易的每個人生產物品和服務 的效率都是不同的,比如兩個人之間都會有絕對優勢 和比較優勢 。
我們先來理解一個概念:絕對優勢 。
我們舉個:chestnut:,當我們把前端和後臺放在一起比較時,(為了更清晰的講解,我們把程式碼效率量化一下)前端對前端開發的程式碼效率是2個需求每天,對後端開發效率是1個需求每天(當然寫前後端程式碼是不能同時進行的),後端對前端開發的效率是1個需求每天,對前端開發的效率是2個需求每天。我們可以比較得出前端對於前端開發有絕對優勢 ,後端對於後端開發有絕對優勢 。所以我們可以通過合作將利益最大化,即後端全職做後端,前端全職做前端,那麼我們可以得到的生產率是2個前端需求和2個後端需求。
其實這是貿易帶來的好處,開發可以當做是一種服務,合作也可以當成是一種貿易。前端和後臺之間相互貿易他們產生的服務,從而使生產率最大化。
那麼如果我們改變一下每個人的效率,這時候前端是個大神,他可以以4個需求每天的效率寫前端,3個需求每天的效率寫後端,而後端還是原來的那個後端(1前2後),這個時候,他們兩該合作嗎?
我們先看看他們不合作的情況下。
12天裡前端花9天寫前端需求,3天寫了後端需求 =>36前,9後
12天裡後臺花4天寫前端需求,8天寫了後端需求 => 4前,16後
我們再來理解一個概念:比較優勢 。
介紹比較優勢之前我們還要先理解機會成本 ,機會成本是我們為了得到這種東西所放棄的其他東西。形象的來說那就是,你寫前端程式碼作業量的機會成本是你寫後端程式碼的作業量。
我們來看下前後端兩個人的比較優勢 差別。
完成一個前端需求的機會成本 | 完成一個後端需求的機會成本 | |
---|---|---|
前端 | 3/4個後端需求 | 4/3個後端需求 |
後臺 | 2個後端需求 | 1/2個後端需求 |
誰的機會成本小,誰就具有比較優勢。
我們可以得出結論,前端在前端開發上有比較優勢,後端在後端開發商有比較優勢。
如果他們合作:
12天裡前端花11天寫前端需求,1天寫了後端需求 =>44前,3後
12天裡後臺花0天寫前端需求,12天寫了後端需求 => 0前,24後
然後前端和後臺合作,交換產生的前後端服務。後端用6個後端需求和前端交換6個前端需求。
44前,3後 => 38前,9後
0前,24後 => 8前,18後
我們可以看到前端比之前多了2和前端需求,後端多了4個前端需求和2個後端需求。總體上的效率居然提高了。是不是很奇妙,合理的分工和合作可以使兩人的生產率都提升。這就是貿易和分工的好處。
3. 全棧工程師
講解完分工和合作的好處後,我們再來分析全棧工程師的效率。
從前面的例子來講,全棧工程師效率必然比前端工程師和後端工程師的合作低。
其實不是的,上面的合作情況非常理想,我們忽略了很關鍵的一項內容,那就是合作時因溝通而產生的內耗損失。這一點我們也可以用經濟學的角度來做一個類比。如果在物品和服務交易(合作)的過程中,政府需要收取交易稅,那麼這個交易稅就是我們在合作時產生的溝通內耗。
在《經濟學原理》裡詳細的講解了稅收將造成無謂損失 ,如果有興趣的同學可以去看看原作,在這裡先不詳細講解了,如果有機會會在以後的文章裡說明。
在最後,我們再來看看前端工程師和全棧工程師的優劣,其實這裡的效率優劣主要取決於合作產生的收益和溝通損失的無謂損失 之間的差別。如果合作產生的收益大於溝通損失的成本,那麼就應該分工。反之,全棧工程師則更合理。