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

UCD3138A64/UCD3138128程序員手冊(cè)

機(jī)械革命發(fā)布CODE AI程序員本
Linux驅(qū)動(dòng)程序程序員指南

AI編程工具會(huì)不會(huì)搶程序員飯碗
第五屆長(zhǎng)沙·中國(guó)1024程序員節(jié)開(kāi)幕
Linux應(yīng)用層控制外設(shè)的兩種不同的方式

評(píng)論