低級(jí)程序員認(rèn)為自己與高級(jí)程序員的區(qū)別:高級(jí)程序員任何功能都能編碼實(shí)現(xiàn), 編碼速度快, 代碼無(wú) bug。
正如一慣的那樣, 低級(jí)程序員之所以低級(jí), 正是因?yàn)樗麄兠銖?qiáng)能看到(或者根本看不到)事物的表象而看不到本質(zhì)。
我們來(lái)聽(tīng)聽(tīng)高級(jí)程序認(rèn)為自己與低級(jí)程序員的區(qū)別是什么。
高級(jí)程序員之所以高級(jí), 在于他們認(rèn)識(shí)到代碼 bug 是不可避免的, 有千萬(wàn)種理由可以導(dǎo)致 bug, 但他們可以在設(shè)計(jì)和邏輯上保證(追求)滴水不漏, 并用邏輯的百分之百準(zhǔn)確性來(lái)減少代碼 bug。 沒(méi)錯(cuò),嚴(yán)謹(jǐn)?shù)倪壿嬆芰κ歉呒?jí)程序員區(qū)別于低級(jí)程序員的最主要原因。
類(lèi)似于武俠小說(shuō)中的武術(shù)一樣,程序員也分內(nèi)功和招式。
招式就是各種編程技巧和編程概念(框架,架構(gòu)等),通過(guò)經(jīng)驗(yàn)可以不斷習(xí)得。而內(nèi)功就是數(shù)據(jù)結(jié)構(gòu) + 算法了,招式可以決定你干活的速度,而且絕大多數(shù)情況下,不需要深厚的內(nèi)力(知道加減乘除就行)。而內(nèi)功可以決定你解決問(wèn)題的高度,就是說(shuō)一件事情難到一定程度,內(nèi)力不夠的話是解決不了的。
優(yōu)秀程序員的行為:
拿到任務(wù),就開(kāi)始仰望星空或天花板上那盞高懸的電燈棒,狀如老僧入定
忽而皺眉,忽而展顏一笑,忽而手舞足蹈,忽而在紙上指指戳戳,忽而口中念念有詞,忽而長(zhǎng)吁……感覺(jué)有點(diǎn)神經(jīng)病啊
桌子上擺的是代碼大全、設(shè)計(jì)模式、敏捷實(shí)踐之類(lèi)的書(shū)籍,并且沒(méi)有灰塵
chrome或firefox的書(shū)簽欄里分門(mén)別類(lèi),類(lèi)別多于10個(gè),8個(gè)以上是技術(shù)相關(guān)的
容不得破窗戶,看見(jiàn)別人的爛代碼就想改過(guò)來(lái)
隨手就能在白板上畫(huà)出軟件的流程圖或者時(shí)序圖……
拿到任務(wù)就開(kāi)始噼里啪啦敲鍵盤(pán),一天寫(xiě)了好幾千行代碼
沒(méi)事兒就被測(cè)試MM叫過(guò)去溝通……
都早上10點(diǎn)多了還想著昨晚的球賽,10點(diǎn)半就琢磨中午要吃拉面、扯面、刀削面、牛肉面、旗花面、臊子面、窩窩面還是炒細(xì)面……
過(guò)了一陣子,看到自己的代碼,感到很驚奇,認(rèn)為是別人寫(xiě)的……
低級(jí)程序員成為高級(jí)程序員在于他做到了:
1、勇于去研究你不懂的代碼
一般人都不愿意去研究自己不曾接觸過(guò)的代碼,很多人都沒(méi)有嘗試就放棄了。如果你經(jīng)常去研究你沒(méi)有接觸過(guò)的代碼,你就會(huì)越來(lái)越熟悉不同的代碼結(jié)構(gòu)和設(shè)計(jì)模式。現(xiàn)在人們很容易就接觸到優(yōu)秀的開(kāi)源代碼資源,你可以很方便的就下載下來(lái)做一些改動(dòng)或者調(diào)試,去研究為什么代碼可以這么寫(xiě)。
除了代碼之外,很多人對(duì)于陌生的工作內(nèi)容也會(huì)感到恐懼。每次換工作的時(shí)候,你可能都會(huì)遇到新公司的工作內(nèi)容和以前工作的內(nèi)容不一樣的情況,以至于剛開(kāi)始的時(shí)候工作效率沒(méi)有以前那么高。很多人甚至覺(jué)得,他們是不是騙了面試官。
2、精通代碼調(diào)試(debug)
很多人在寫(xiě)代碼的過(guò)程中,經(jīng)常會(huì)有的一個(gè)問(wèn)題就是:為什么我寫(xiě)出來(lái)的代碼不能運(yùn)行?為什么運(yùn)行的結(jié)果不是我想要的?
幾乎所有的程序員寫(xiě)代碼都不是一遍就能寫(xiě)好的。但是頂尖的程序員非??斓木兔靼鬃约捍a的問(wèn)題可能是什么。這是一個(gè)很重要的能力,但是偏偏學(xué)校里不教,面試的時(shí)候考官也不經(jīng)常提及。
3、程序員是一種職業(yè),而黑客是一種興趣。
4、程序員的工作有很多限制,而黑客可以盡情發(fā)揮。
5、程序員都想把自己說(shuō)得更好,因?yàn)樗麄円其N(xiāo)自己,而真正的黑客更謙虛,他們知道自己懂得還不夠多。
6、程序員是一種“職責(zé)”,需要的是對(duì)編程語(yǔ)言的使用,更希望盡快完成工作,而不是探尋為什么要做這項(xiàng)工作。
黑客是一種“心態(tài)”,對(duì)技術(shù)有著極大的好奇,希望理解核心的工作原理,喜歡創(chuàng)造。嘗試?yán)斫馊绾喂ぷ?,如何做得更好,如何讓事情做得特別。黑客就像藝術(shù)家或哲學(xué)家,同時(shí)有著科學(xué)工程的天賦,有很多“為什么”和“為什么不”。
7、程序員和黑客,就如同畫(huà)匠和藝術(shù)家,工匠和DIYer,教科書(shū)的方式和創(chuàng)新的方式。
8、程序員的目標(biāo)是寫(xiě)出程序,完成需求,而黑客是要讓程序?yàn)樽约憾?,滿足自身需求。
9、程序員和黑客都在寫(xiě)代碼,只是黑客把不可能變?yōu)榱丝赡堋?/span>