本文翻譯自:http://www.yegor256.com/2014/10/26/hacker-vs-programmer-mentality.html
二十年前,最好的編程者是可以將整個APP編程64KB大小的人。這些能夠從有限的intel80386處理器上運行到最大性能的人是編程界的牛人。
這是因爲在二十年前,計算機是昂貴的編程者卻要便宜得多。那是一個“黑客思維”主導的時代,但時過境遷,現在已經不一樣了。這個思維現在已經不再有價值,因爲市場已經完全反轉過來了。
如今,計算機變得便宜,開發者的價值增加。當代碼的可讀性比性能顯得更重要時,就已經是“開發者思維”的時代了。
價格VS薪資
看下這個圖,它是在過去的20年(1994-2014)的兩個趨勢對比圖。兩個下降的曲線顯示了計算機的內存和存儲硬盤已經變得很便宜了。
另一個趨勢是同一時期開發者的薪資水平,精確地說,是三倍的增長。關於這個,我沒有找到官方的報導,但確定的是,作爲開發者的每個人心裏都有數的吧---對於一個初級的開發者來說年薪$200,000已經不再是夢,而二十年前$60K已經是最好的報酬了。關於這個問題這裏有一篇有意思的文章。
基本上,這意味着在1994年爲了建立一個PHP網站,相對於2014年,需要1000倍的硬件開銷和少於3倍的開發者開銷。這只是一個比方,linux方面的Apache HTTP服務器開發也如此。
不同之處在於,如果APP有性能上的問題,1994年會位每1G的RAM花費$35,000,而2014年是$10。
1994年僱傭更多的開發者去優化甚至是重寫代碼比買一個新的硬件要更合適,現在卻正好相反。現在一個兩倍大的服務器(如果服務器是虛擬的雲端的話更甚)也比位優化代碼的開發者付薪水要更便宜。
1994最好的工程師是“黑客思維”的,現在“開發者思維”更加適合。
黑客思維
黑客思維的的人會把下面用java寫的斐波那契算法的代碼成爲“優雅的代碼”(你呢?):
public int f(int n) { return n>2?f(n-1)+f(n-2):1; }
下面是我總結的黑客的特點:
使用編程語言所有著名或不著名的特性:
歧視其他的黑客或新手
厭倦規則和標準
不寫單元性測試
喜歡解決問題– 展現他們的天分
更喜歡討論而不是寫文檔
不喜歡代碼被別人修改
喜歡一個時間段只沉迷於一個項目
黑客是一個有才華的人。他想在自己所寫的代碼中表現其過人之處,因此他大多時候是從中獲取樂趣。我想說,他其實已經是和代碼結婚並且無法想象自己離婚後還怎麼快樂的生活了!
因此,代碼的所有權是僅屬於黑客的。
當我問我的一個黑客朋友——“別人怎麼理解這些代碼的意圖呢?”,回答總是——“問我”(說這句話時他們總是帶着真誠的微笑,並且非常自信)。
開發者思維
開發者思維表現在會將上述代碼更具有可讀性。所以下面的代碼纔會被認爲是“優雅的代碼”(你呢?):
public int fibo(final int pos) {
final int num;
if (pos > 2) {
num = fibo(pos - 1) + fibo(pos - 2);
} else {
num = 1;
}
return num;
}
一個好的開發者的特點是:
趨向於使用傳統的變成技巧
會假設每一個人都是初學者並依此來編程
喜歡制定規則並遵循
喜歡文檔而不是討論,通過文檔來實現自動化(如果有問題,看文檔就行了,不需要來問我)。
大多數時間用來進行單元測試
討厭問題並且依據時間來工作
樂於自己的代碼被修改或重構
同一時間參與幾個項目
開發者更適合團隊工作。他在編碼的同時,可以爲團隊提供進度,標準,規則,培訓和準則。並且會在離開後讓自己的工作和思想繼續發揮作用。
開發者最樂意看到的就是自己的代碼“獨立生存”——被修改,提升,重構甚至退出使用。他將自己看做代碼的父母——一旦長大,就要自己獨立生存。
未來
如果你認爲自己是一名黑客,那是時候改變了,因爲黑客確實已經是過去式了。
在不久的將來,我們甚至不在考慮硬件的存在,將我們的APP運行在具有無限內存,CPU和存儲容量的動態變化的計算平臺上了。我們會爲使用的硬件資源付費,並且如果需要性能提升也僅僅是額外的在月支出上增加幾美元而已,而不需要再去優化硬件了。
同時,好的軟件開發者會越來越有價值,檢測一個軟件並給出方案的小時費用就可以達到$500,就像現在的律師和牙醫那樣。
這就是爲什麼現在更注重軟件的可維護性。投資者會認爲,他們的錢用在一個具有可讀性,可維護性和自動化的軟件上,會有更好的回報。
而不是最快的。