看到最近流行起來的「打工人」的梗,在鬨堂大笑之後,我也開始嚴肅地思考程序員這個工種的本質,開始思考「爲何程序員薪資那麼高」。如今將思考結果寫出來與各位交流,歡迎與我分享你的思考。程序員
咱們程序員在自嘲的時候,總喜歡自稱「搬磚工」、「手工藝人」、「和流水線工人沒什麼區別」。我曾經也悲觀地認爲這其實就是事實。可是最近通過仔細思考之後,感受程序員這個工種其實仍是有一些不一樣之處的。運維
一句話總結:程序員生產出來的是資產,通常流水線工人生產出來的是商品。設計
資產是一個不斷增值的東西,資產是能源源不斷產生收入的。而商品的價值在生產出來之後就基本固定了,正常的商品是不會增值的。開發
程序員的生產成果是代碼。代碼,只須要以很是小的代價(電費、機器運維),就能夠不停運行,一直提供服務,於是不斷產生收入。所以代碼是一種資產。產品
而普通的工業產品是不會增值的。對於生產它的公司來講,生產商品就是爲了銷售出去的。當一個商品被賣出去的時候,它的價值就被所有兌現了,後續不會再給生產者提供價值。自動化
舉一個極度簡化的例子,一個公司僱傭了一個程序員,用1個月的時間寫出一個軟件,能夠爲客戶提供服務。這個服務最終運行了2年。軟件
對於員工來講:互聯網
對於公司來講:循環
得到了代碼資產bug
第二個月,公司繼續僱傭這個程序員,用1個月增長了一個feature,能夠爲客戶提供更大的價值(所以爲公司提供更多的收入)。這個feature最終也運行了2年。上面的付出收入表格再次出現。
在這裏咱們忽略了代碼的修bug成本。在管理得當的狀況下,軟件維護(僅指修bug,不包含增長feature)的成本相比初始開發,以及將來收入來講,是極低的。
循環往復,公司積累了愈來愈多的資產。而且,公司能夠招募更多的程序員,擴大生產(這裏的生產指的是生產資產!),所以資產自己的積累速度也會愈來愈快。
對於傳統工業品生產企業來講,這種資產積累速度只能可望不可即。
或許這就是當下互聯網公司願意給程序員支付高薪資的緣由吧。公司僱傭程序員的時候只須要按照工做時間來支付薪酬,而程序員產生的資產可以
所以,嚴謹地說,將程序員類比成流水線工人的說法,既是正確的又是錯誤的:
更恰當的類比,應該是將程序員類比成自動化工廠流水線的設計師。他們設計出來的自動化流水線,只須要提供少許電力和人力就能運行。