從程序員比電腦便宜到電腦比程序員便宜
20年前,***的程序員是那些能夠把整個程序裝配進一個64Kb的.COM文件里的人。那些對Intel 80386掌握最多的人在編程中是偶像般的存在。
那是因為在20年前的計算機昂貴了而程序員廉價。那是黑客情懷的時代。那個時代已經(jīng)過去了。那種情懷現(xiàn)在已經(jīng)不被贊賞了,因為市場狀況已經(jīng)完全相反了。
現(xiàn)在,計算機變得便宜而程序員變得昂貴了。當下的時代是設計師情懷的時代,如今我們代碼的可讀性比代碼的性能更為重要。
硬件價格 vs 工資
看這個圖表。這是最近20年來(1994-2014)兩者的對比趨勢圖。***種曲線呈現(xiàn)下降的趨勢并表明了計算機內(nèi)存和硬盤儲存器在近20年來變得很便宜。
第二種曲線趨勢演示了在同一時期軟件開發(fā)者工資上漲了多少。精確點來說,大概是***種的三倍。我沒有找到一個關于這兩者對比的正式報告,但是可以肯定程序員的工資還會增長,這對任何人來說已經(jīng)不是什么秘密了。對于高級開發(fā)者來說,年薪200,000美元不再只是個夢想。然而在20年前,在周圍的人中,年薪60K美元已經(jīng)是***的報酬了。我發(fā)現(xiàn)一篇關于這個話題的非常有趣的文章。
基本上,這意味著在1994年為了開發(fā)一個PHP網(wǎng)站,我們不得不花費比現(xiàn)在(2014年)1000倍更多的資金在硬件方面和比現(xiàn)在(2014年)3倍更少的工資給開發(fā)者。然而我們還是在這討論一樣的堆棧技術。使用一樣配有Apache Http服務器的Linux機器。
不同之處,在1994年,如果我們的應用因為硬件資源限制出現(xiàn)了性能問題,我們每次添加1G的額外內(nèi)存需要支付35,000美元,而在2014年,我們只需要支付10美元.
在1994年,相對于購買新的硬件,去聘用更多的程序員并要求他們?nèi)?yōu)化代碼或者重構代碼的收益更大。在2014年,實際上情況恰恰相反。現(xiàn)在,花錢去把服務器的規(guī)模擴大兩倍比花錢聘用程序員來優(yōu)化軟件更便宜。(特別是當服務器是虛擬云服務器時)
在1994年***的工程師擁有“黑客情懷”,而在2014年“設計師情懷”更受歡迎。
黑客情懷
擁有黑客情懷的人會認為這個輸出斐波那契數(shù)列的Java方法是一段“優(yōu)雅的代碼”(你嗎?):
- public int f(int n)
- {
- return n>2?f(n-1)+f(n-2):1;
- }
我列出了一個優(yōu)秀黑客應有的品質:
- 能夠使用一種語言中所有的別人知道(和不知道的)特性。
- 能辨別其他人是黑客還是新手還是黑客寫手
- 對規(guī)則和標準會感到無聊和厭倦。
- 不寫單元測試-資歷少時會寫
- 享受挑戰(zhàn)–他能在那展現(xiàn)它的才華。
- 喜歡討論多于寫文檔,因為他們覺得這樣更有趣
- 討厭別人修改他的代碼。
- 喜歡馬上投入一個項目里。
黑客是一個有才華的人。他想在他編寫的軟件里展現(xiàn)他的才華。他享受編程并且寫代碼主要是為了好玩。我可以這么說,他已經(jīng)和他的代碼結為伴侶了并且在與代碼離婚后他無法想象以后的幸福生活。代碼所有權是黑客所關心的東西–他知道他自己是代碼的所有者。
當我問我任意的一個黑客朋友時,“其他人怎樣才能理解這段代碼的是干什么的?”。我?guī)缀蹩偸堑玫酵瑯拥拇鸢?”他們要問我!”(通常是帶著真誠的微笑自豪地說)
設計師情懷
擁有設計師情懷的人會重構上面的代碼使它便于閱讀。他會認為這個Java函數(shù)是一段“優(yōu)雅的代碼”(你覺得呢?):
- public int fibo(final int pos) {
- final int num;
- if (pos > 2) {
- num = fibo(pos - 1) + fibo(pos - 2);
- } else {
- num = 1;
- }
- return num;
- }
我認為這些品質是一個好的設計師所擁有的:
- 傾向于使用傳統(tǒng)的編程技術
- 假定任何人都是新手并循規(guī)蹈矩地寫代碼
- 喜歡設定一些規(guī)則并遵循它們
- 喜歡寫文檔多于直接討論并且喜歡文檔自動生成多于手寫
- 把更多的編碼時間花費在單元測試上
- 討厭挑戰(zhàn)和加班工作
- 喜歡看到它的代碼被修改和重構
- 同時進行比較少的項目工作
設計師是一個優(yōu)秀的團隊角色。他對團隊的發(fā)展,標準,規(guī)則,教育和紀律的貢獻跟他對源碼的貢獻一樣多。他總是能確保一旦他離開項目他的代碼和想法依然保留下來并運行。
對一個好的設計師來說,最滿意的是能夠看到它的代碼擁有它自己的人生–被修改,被優(yōu)化,被重構和最終退休。設計師把他自己看做是代碼的父母-一旦它足夠年大去走路和說話,它不得不去過自己的生活。
未來
如果你認為你自己是一個黑客,我相信這是做出改變的時候了。黑客的時代已經(jīng)成為過去了。
在不久的將來,我們可能甚至不用考慮硬件問題并且在擁有無限大內(nèi)存,CPU頻率和存儲空間的彈性計算平臺上運行我們的應用程序。我們僅僅需要為資源使用和絕大多數(shù)性能問題付費,這僅僅是在我們每個月的賬單里添加小額的額外費用。我們將不會關心任何的優(yōu)化問題。
同時,優(yōu)秀的工程師將會變得越來越昂貴,僅僅去檢查下軟件并診斷,一個小時要收費500多美元。這就像優(yōu)秀的律師和牙醫(yī)。
這就是為什么,當開發(fā)一個新軟件產(chǎn)品時,那些付錢的客戶更關心的是它的可維護性。項目贊助人明白他們獲取利潤的***解決方案是需要一個可讀性、維護性和自動化***的項目。
原文鏈接:http://www.techug.com/hacker-and-designer-mentality