程序員總是有很多的決定,不是嗎?如果你的新年待辦事項(xiàng)還是空白的話,那么可以考慮使用下面這些程序員的想法。即使是最聰明的人,也還有成長(zhǎng)空間。以下內(nèi)容摘錄自 Kevlin Henney 的《程序員應(yīng)該知道的97件事》。
1.在怪罪其他東西之前先檢查自己的代碼
質(zhì)疑一下你自己和他人的預(yù)設(shè)情況。來(lái)自不同供應(yīng)商的工具,可能內(nèi)置有不同的預(yù)設(shè),也有可能相同的供應(yīng)商提供不同的工具。
當(dāng)有人想你報(bào)告一個(gè)你無(wú)法重復(fù)的問(wèn)題之時(shí),去看看他們做了些什么。他們可能會(huì)做一些你沒(méi)有想到的事情,或者是按照不同的順序來(lái)做那件事。
我的原則是,如果我遇到一個(gè)我無(wú)法避免的bug時(shí),我會(huì)首先考慮是編譯器的錯(cuò)誤,然后我就會(huì)去檢查堆棧是否被破壞了。這可以通過(guò)跟蹤代碼來(lái)實(shí)現(xiàn),可以有效地移除問(wèn)題。多線程問(wèn)題是另一個(gè)絞盡腦汁也不容易找到的錯(cuò)誤來(lái)源,通常還伴隨著機(jī)器的錯(cuò)誤。當(dāng)一個(gè)系統(tǒng)使用多線程的時(shí)候,所有的簡(jiǎn)單的代碼的錯(cuò)誤都會(huì)成倍地增長(zhǎng)。不能依靠調(diào)試和單元測(cè)試去發(fā)現(xiàn)這樣的兼容性問(wèn)題,所以簡(jiǎn)單的設(shè)計(jì)是最重要的。
總之,在你怪罪你的編譯器之前,請(qǐng)記住福爾摩斯的忠告:“當(dāng)你把所有的不可能都排除了,那么剩下的東西,無(wú)論他有多么的不可能,都必定是真相。”Dirk Gently也說(shuō)了類似的話。
——Allan Kelly
2.持續(xù)學(xué)習(xí)
我們生活在一個(gè)有趣的時(shí)代。隨著全球化的發(fā)展,你要知道有大量的人都能勝任你的工作。你需要不斷地學(xué)習(xí),以維持競(jìng)爭(zhēng)力。否則,你會(huì)成為一個(gè)落伍的人,永遠(yuǎn)做著相同的工作,直到你不再被需要,或者這個(gè)工作被廉價(jià)外包給其他人的那一天。
因此,你打算做些什么呢?有些大方的老板會(huì)提供訓(xùn)練來(lái)拓寬你的技能。而其他的公司并不會(huì)給你空閑的時(shí)間和金錢(qián)去做任何的訓(xùn)練。所以為了工作的穩(wěn)定,你需要為自己的教育負(fù)責(zé)。
這里是一些讓你持續(xù)學(xué)習(xí)的方法清單。其中許多都能夠隨便在網(wǎng)上找到:
閱讀書(shū)籍、雜志、博客、Twitter和其他網(wǎng)站。如果你想對(duì)一個(gè)目標(biāo)進(jìn)行更深入的研究,考慮添加一個(gè)郵件列表或新聞組
如果你真想專注于某一種技術(shù),那就動(dòng)起手來(lái)——寫(xiě)一些代碼
成為行業(yè)的頂尖人物可能會(huì)妨礙你的學(xué)習(xí),你得盡量與導(dǎo)師合作。雖然你可以從任何人那里學(xué)到東西,但是從那些比你更聰明或更有經(jīng)驗(yàn)的人那里你能夠?qū)W得更多。如果你不能找到一個(gè)導(dǎo)師,那就繼續(xù)去找
使用虛擬的導(dǎo)師。在網(wǎng)上找一些作者或者開(kāi)發(fā)人員,他們寫(xiě)的東西你都會(huì)喜歡并且都會(huì)看的。訂閱他們的博客
了解你所使用的框架和庫(kù)。知道了他們是如何工作的,你使用起來(lái)就更得心應(yīng)手。如果他們是開(kāi)源的,你就很幸運(yùn)了。使用調(diào)試器來(lái)單步執(zhí)行,去觀察他們內(nèi)部是如何運(yùn)作的。你將會(huì)看到那些真正聰明的人所編寫(xiě)和審閱的代碼
當(dāng)你做錯(cuò)了或者是在修復(fù)bug,或者是碰到一個(gè)問(wèn)題的時(shí)候,嘗試去深入了解到底發(fā)生了什么。有可能其他人也遇到了同樣的問(wèn)題,并且把2他發(fā)布在了網(wǎng)上。Google這時(shí)候就非常有用了
學(xué)習(xí)一樣?xùn)|西的一個(gè)好方法就是去傳授和談?wù)撍.?dāng)人們想要聽(tīng)你講解并且想問(wèn)你問(wèn)題的時(shí)候,你就會(huì)更加積極地去學(xué)習(xí)。在工作中使用lunch-‘ n’-learn方法,可以是一個(gè)用戶組或者是一個(gè)本地的協(xié)會(huì)
加入或者創(chuàng)辦一個(gè)研究小組(社區(qū)的模式)或本地用戶組,可以研究你們感興趣的語(yǔ)言,技術(shù)或者是法律
多去參加會(huì)議。如果你不能去,很多的會(huì)議都會(huì)把內(nèi)容免費(fèi)發(fā)布到網(wǎng)上的
想要長(zhǎng)期通勤?聽(tīng)一下博客吧
你是否曾經(jīng)在一個(gè)代碼庫(kù)上運(yùn)行一個(gè)靜態(tài)分析工具或者在你的IDE里看到一些警告?弄明白他們報(bào)告的是什么,為什么要報(bào)告
遵循高效程序員的建議,每年學(xué)習(xí)一門(mén)新的語(yǔ)言。至少學(xué)習(xí)一門(mén)新的技術(shù)或者是一個(gè)新的工具。弄一個(gè)分支出來(lái)添加上你的想法,以便你能夠在你目前的知識(shí)庫(kù)里使用
并不是你應(yīng)該學(xué)的每一樣?xùn)|西都必須跟技術(shù)有關(guān)。學(xué)習(xí)你工作領(lǐng)域的一些東西,能夠讓你更加了解需求,并且能夠給幫助你解決一些商業(yè)問(wèn)題。學(xué)習(xí)如何提高工作效率,學(xué)習(xí)怎樣更高效低工作是一個(gè)不錯(cuò)的選擇
返回學(xué)校
如果你有《黑客帝國(guó)》里的尼奧那樣的能力就好了,能夠直接下載我們需要的東西到大腦里面去。但是我們并沒(méi)有,所以必須花費(fèi)一定的時(shí)間去學(xué)習(xí)。你不必每時(shí)每刻都在學(xué)習(xí)。一點(diǎn)點(diǎn)時(shí)間足以,比如一周一次,有總比沒(méi)有好。我們總得有一些工作之外的生活。
科技發(fā)展如此迅速,我們不要被甩在后面了。
——Clint Shank
3.不要害怕破壞某些東西
每一個(gè)具有行業(yè)經(jīng)驗(yàn)的人無(wú)疑曾在一個(gè)充滿不穩(wěn)定性的項(xiàng)目中工作過(guò)。這個(gè)系統(tǒng)是很難重構(gòu)的,通常改變一個(gè)地方就會(huì)觸及到另一個(gè)不相關(guān)的地方。每當(dāng)要添加一個(gè)模塊的時(shí)候,程序員的目標(biāo)都是盡量少改動(dòng),在每一個(gè)版本中都是小心翼翼的。這就和把建造摩天大樓當(dāng)做搭積木一樣,容易造成災(zāi)難。修改對(duì)的時(shí)候是非常傷腦筋的,因?yàn)橄到y(tǒng)已經(jīng)生病了。它需要一個(gè)醫(yī)生,否則狀況就會(huì)越來(lái)越差。雖然你已經(jīng)知道了你系統(tǒng)發(fā)生了什么錯(cuò)誤,但是你還是害怕“打破雞蛋去煮你的煎蛋卷”。一個(gè)熟練的醫(yī)生知道,為了做手術(shù)就必須開(kāi)刀,而且她也知道開(kāi)刀只是暫時(shí)的,而且很快就會(huì)愈合。對(duì)于最初的疼痛來(lái)說(shuō),做手術(shù)是非常有價(jià)值的,患者通常都會(huì)獲得比做手術(shù)前更好的狀態(tài)。
不要去擔(dān)心你的代碼。當(dāng)你在做事的時(shí)候如果暫時(shí)被打斷,誰(shuí)會(huì)去擔(dān)心呢?對(duì)改變的恐懼會(huì)讓你的項(xiàng)目將進(jìn)入這樣的狀態(tài)。花一些時(shí)間去重構(gòu)項(xiàng)目會(huì)讓你節(jié)約很多的時(shí)間。還有一個(gè)額外的好處就是一個(gè)團(tuán)隊(duì)面對(duì)這個(gè)損壞的系統(tǒng)的處理經(jīng)驗(yàn)會(huì)讓你們明白該怎樣才能讓它正常工作。要學(xué)會(huì)運(yùn)用這些知識(shí),而不是抵觸他們。每個(gè)人都不應(yīng)該把時(shí)間花在自己所討厭的東西上。重新定義內(nèi)部接口,重組模塊,重構(gòu)、復(fù)制、粘貼代碼,并通過(guò)減少依賴來(lái)簡(jiǎn)化設(shè)計(jì)。你可以通過(guò)消除極端情況來(lái)減少代碼的復(fù)雜度,他們通常會(huì)產(chǎn)生不當(dāng)?shù)?a href="http://www.1cnz.cn/tags/耦合/" target="_blank">耦合性。慢慢地將舊架構(gòu)過(guò)渡到新的架構(gòu),邊改邊測(cè)試。試圖在一個(gè)可能產(chǎn)生很多問(wèn)題的大項(xiàng)目上進(jìn)行一次大的重構(gòu),這些問(wèn)題可能慧然你在中途就放棄之前所作的所有的努力。
作為一個(gè)醫(yī)生,是不應(yīng)該害怕切除患病的部位,以留出愈合的空間。態(tài)度是會(huì)傳染的,并且會(huì)激勵(lì)其他人去對(duì)那些一直拖延著的項(xiàng)目進(jìn)行修改。去列出一個(gè)團(tuán)隊(duì)都感覺(jué)良好的項(xiàng)目的清單。雖然這些任務(wù)可能不會(huì)產(chǎn)生明顯的效果,但你得去說(shuō)服管理層,他們就會(huì)減少開(kāi)支,加速對(duì)新版本的開(kāi)發(fā)。永遠(yuǎn)不要停止關(guān)心代碼的總體“健康度”。
——Mike Lewis
4.做專業(yè)的程序員
一個(gè)專業(yè)的程序員最重要的特征就是個(gè)人責(zé)任感。專業(yè)的程序員會(huì)對(duì)自己的生涯、自己的估計(jì)、自己的日程安排、自己的錯(cuò)誤以及自己的作品負(fù)責(zé)。一個(gè)專業(yè)的程序員是不會(huì)把這些責(zé)任推給其他人的。
如果你是一個(gè)專業(yè)人員,那么你就會(huì)對(duì)自己的工作負(fù)責(zé)。你有責(zé)任閱讀和學(xué)習(xí)。你有責(zé)任追趕業(yè)界及技術(shù)的潮流。而很多程序員都認(rèn)為這是他們上司的工作。對(duì)不起,這是大錯(cuò)特錯(cuò)的。你認(rèn)為醫(yī)生也會(huì)那樣做嗎?你認(rèn)為律師也是那樣的嗎?不是的,他們會(huì)利用自己的時(shí)間和金錢(qián)去學(xué)習(xí)。他們花費(fèi)大量的下班時(shí)間去閱讀期刊和做出計(jì)劃。他們會(huì)時(shí)刻更新自己,我們也必須這樣做。你和雇主之間的關(guān)系只是為了履行合同。總之:你的雇主承諾給你工資,你就得承諾去把這份工作做好。
專業(yè)的程序員會(huì)對(duì)他們編寫(xiě)的代碼負(fù)責(zé)。如果他們不清楚代碼是否會(huì)正常的工作,就絕不會(huì)輕易放出代碼。試想一下,如果打算放出一個(gè)不確定的代碼,你還有可能是一個(gè)專業(yè)的程序員嗎?專業(yè)的程序員都不希望QA來(lái)發(fā)現(xiàn)他們的錯(cuò)誤,因?yàn)樗麄內(nèi)绻唤?jīng)嚴(yán)格測(cè)試是不會(huì)放出代碼的。當(dāng)然,QA也許會(huì)找到一些問(wèn)題,因?yàn)闆](méi)有什么是完美的嘛。但是作為專業(yè)人士,重要的是我們的態(tài)度,我們決不能讓QA找到什么問(wèn)題。
專業(yè)人士都是團(tuán)隊(duì)合作。他們會(huì)對(duì)整個(gè)團(tuán)隊(duì)的未來(lái)負(fù)責(zé),這并不是他們個(gè)人的工作。他們互相幫助,彼此教導(dǎo),互相學(xué)習(xí),甚至包括別人需要的任何時(shí)候。當(dāng)一個(gè)隊(duì)友倒下,其他人都會(huì)去關(guān)心,因?yàn)樗麄冎浪麄兌加谢ハ嘈枰臅r(shí)候。
專業(yè)的人士是不會(huì)容忍一大串bug列表的。一個(gè)巨大的bug清單是非常粗心的。一個(gè)在問(wèn)題跟蹤數(shù)據(jù)庫(kù)里有成百上千問(wèn)題的系統(tǒng)是粗心釀成的悲劇。事實(shí)上,在大多數(shù)的項(xiàng)目中,如果非常依賴問(wèn)題跟蹤系統(tǒng),那么他們肯定總是粗心大意的。只有非常大的系統(tǒng)才可能會(huì)又這么長(zhǎng)的bug清單,這個(gè)時(shí)候需要的是自動(dòng)化的管理。
專業(yè)人士不會(huì)把事情弄得一團(tuán)糟,他們會(huì)對(duì)自己的工作引以為豪。他們保持代碼的整潔,結(jié)構(gòu)的良好,而且便于閱讀。他們跟隨著默認(rèn)的標(biāo)準(zhǔn)而且做出了很好的實(shí)踐。他們永遠(yuǎn)不會(huì)趨之若鶩。假設(shè)你能夠在醫(yī)生給你做開(kāi)放式心臟手術(shù)的時(shí)候靈魂出竅。這個(gè)醫(yī)生有一個(gè)最后期限(只是字面意義上的)。他必須在心肺循環(huán)功能損失過(guò)量血細(xì)胞之前完成。你覺(jué)得他該怎么做?你是想要他們像典型的軟件開(kāi)發(fā)人員那樣匆忙而且混亂嗎?或者想要他們說(shuō)“我待會(huì)兒再回來(lái)解決”?還是你要他們小心地遵循著紀(jì)律,抓緊時(shí)間,相信他自己的做法是目前可以采取的最好的方法。你是想要一片混亂還是專業(yè)精神呢?
專業(yè)人員得有責(zé)任感。他們會(huì)對(duì)自己的事業(yè)負(fù)責(zé)。他們會(huì)對(duì)代碼的正常運(yùn)行負(fù)責(zé)。他們對(duì)自己工作的質(zhì)量負(fù)責(zé)。即使最后期限迫在眉睫,他們也不會(huì)放棄自己的原則。事實(shí)上,當(dāng)壓力越來(lái)越大的時(shí)候,專業(yè)人員甚至?xí)?duì)這些原則要求得更緊,因?yàn)樗麄冋J(rèn)為這是對(duì)的。
——Robert C. Martin (Uncle Bob)
5.利用代碼分析工具
測(cè)試的價(jià)值是在他們編程之旅的早期階段就灌輸給開(kāi)發(fā)者的。今年來(lái),單元測(cè)試,測(cè)試驅(qū)動(dòng)開(kāi)發(fā),以及敏捷方法的興起都被大量地用于開(kāi)發(fā)周期的每一個(gè)過(guò)程。然而,測(cè)試只是眾多能夠提高代碼質(zhì)量的工具之一。
回到早期階段,當(dāng)C語(yǔ)言還是一個(gè)新興的技術(shù)的時(shí)候,CPU的時(shí)間和存儲(chǔ)的形式都是非常珍貴的。第一個(gè)C語(yǔ)言編譯器注意到了這一點(diǎn),所以通過(guò)一些語(yǔ)義分析減少了便利代碼的次數(shù)。這意味著在編譯階段,只能檢測(cè)到一小部分的錯(cuò)誤。為了彌補(bǔ)這個(gè),Stephen Johnson編寫(xiě)了一個(gè)叫做lint的工具,這個(gè)工具能夠取出你的代碼中的一些冗余,實(shí)現(xiàn)了在其相似的C編譯器中已經(jīng)去除的靜態(tài)分析。然而,靜態(tài)分析工具,會(huì)增加大量的無(wú)用警告或者是一些關(guān)于文體問(wèn)題的不必要的警告。
當(dāng)前,語(yǔ)言、編譯器和靜態(tài)分析工具的情況是非常不同的。內(nèi)存和CPU時(shí)間現(xiàn)在也變得非常的便宜,所以編譯器能夠承擔(dān)更多的錯(cuò)誤檢測(cè)。幾乎每一種語(yǔ)言都至少擁有一個(gè)工具來(lái)檢查違規(guī)的格式和常見(jiàn)的問(wèn)題,不過(guò)有時(shí),那些隱含的錯(cuò)誤并不會(huì)被檢測(cè)到,比如潛在的空指針引用。對(duì)于更復(fù)雜的工具,比如針對(duì)C的SPlint,針對(duì)Python的Pylint,都是可配置的,也就是說(shuō),你可以通過(guò)一個(gè)配置文件選擇這個(gè)工具在命令行或者是IDe里要發(fā)出什么錯(cuò)誤和警告。SPlint甚至?xí)屇阍谧⑨尷镒⑨屇愕拇a,以給別人更多關(guān)于程序運(yùn)行的提示。
如果一切都失敗了,你發(fā)現(xiàn)你自己正在尋找一些你的編譯器或IDE或lint工具沒(méi)有捕獲的簡(jiǎn)單的bug或者是一些違規(guī)行為,你就得收起你所有的靜態(tài)分析工具。這并不像聽(tīng)起來(lái)那么困難。大多數(shù)編程語(yǔ)言,尤其是那些聲稱是動(dòng)態(tài)的語(yǔ)言,都會(huì)把他們的抽象語(yǔ)法樹(shù)和編譯工具作為其標(biāo)準(zhǔn)庫(kù)的一部分。去了解你正在使用的這個(gè)語(yǔ)言的開(kāi)發(fā)團(tuán)隊(duì)的標(biāo)準(zhǔn)庫(kù)的細(xì)節(jié)是非常有意義的,因?yàn)檫@樣你就能發(fā)現(xiàn)一些有價(jià)值的東西,這對(duì)于靜態(tài)分析和動(dòng)態(tài)測(cè)試是非常有用的。比如:Python標(biāo)準(zhǔn)庫(kù)包含了一個(gè)反匯編程序,它會(huì)告訴你生成一些編譯程序和目標(biāo)程序的字節(jié)代碼。這對(duì)編譯器作者python-dev團(tuán)隊(duì)來(lái)說(shuō)貌似是一個(gè)不起眼的工具,但是它實(shí)際上在日常工作中發(fā)揮著不同尋常的作用。這個(gè)庫(kù)能夠反匯編出來(lái)你最后一次堆棧跟蹤的信息,這會(huì)給你恰當(dāng)?shù)姆答仯驗(yàn)樽止?jié)碼指令會(huì)把最后一次未捕獲的異常扔在那里。
所以,不要把測(cè)試放在質(zhì)量保證工作的最后,利用好分析工具,不要害怕把自己的錯(cuò)誤展示出來(lái)
——Sarah Mount
6.和你的朋友一起使用Ubuntu哲學(xué)
所以很多時(shí)候,我們獨(dú)立地編寫(xiě)代碼,這些代碼反映了我們個(gè)人對(duì)問(wèn)題的理解,也反映了一個(gè)非常個(gè)性化的解決方案。我們可能會(huì)是團(tuán)隊(duì)的一部分,但是我們?nèi)匀粫?huì)是獨(dú)立的,因?yàn)檫@是一個(gè)團(tuán)隊(duì)。我們很容易忘記這些獨(dú)立編寫(xiě)的代碼會(huì)被其他人所執(zhí)行、使用、擴(kuò)展和依賴。這是在開(kāi)發(fā)軟件中容易被忽略的社交的一面。創(chuàng)造軟件是一個(gè)混合了技術(shù)和社交的活動(dòng)。我們只需要經(jīng)常抬頭,這樣才會(huì)意識(shí)到我們并不是孤立地工作的,我們都有責(zé)任去提高個(gè)人成功的可能性,而不只是為了開(kāi)發(fā)團(tuán)隊(duì)。
你可以在孤立的環(huán)境下寫(xiě)出高質(zhì)量的代碼,但這樣會(huì)失去自我。從一個(gè)角度來(lái)看,那是一個(gè)以自我為中心的方法(不是自大,而是自我)。這也是一個(gè)禪宗的觀點(diǎn),他就是針對(duì)你編寫(xiě)代碼那一過(guò)程的。我總是試著進(jìn)入這個(gè)環(huán)節(jié),因?yàn)樗鼤?huì)讓我離高質(zhì)量更加接近,但那之后我就會(huì)陷入這個(gè)環(huán)節(jié)。我的團(tuán)隊(duì)現(xiàn)在處于什么環(huán)節(jié)?我的環(huán)節(jié)和團(tuán)隊(duì)的是一樣的嗎?
在祖魯語(yǔ)中,Ubuntu的哲學(xué)被概括為“Umuntu ngumuntu ngabantu”,可以大致翻譯為“A person is a person through (other) persons.”(人與人之間是互相聯(lián)系的。我會(huì)變得更好因?yàn)槭悄悖ㄟ^(guò)你的行為讓我變得更好。在另一方面,當(dāng)我做自己的事做得糟糕的時(shí)候你也會(huì)在你所做的事情上變?cè)恪?duì)于開(kāi)發(fā)者來(lái)說(shuō),我們可以這樣理解“A developer is a developer throuth (other) developers.”(開(kāi)發(fā)者與開(kāi)發(fā)者之間是相互聯(lián)系的),也可以說(shuō)“Code is code through (other) code.”(代碼與代碼之間是相互聯(lián)系的)
我寫(xiě)的代碼的質(zhì)量會(huì)影響到你寫(xiě)的代碼的質(zhì)量。如果我的代碼質(zhì)量很差會(huì)怎樣呢?即使你寫(xiě)了很整潔的代碼,但由于你會(huì)使用我的代碼,所以你的代碼也會(huì)降低到和我的代碼質(zhì)量差不多的地步。你可以使用很多模式和技術(shù)去降低損失,但是損失已經(jīng)造成了。我建議你去做一些必須做的事之外的一些事情,這是因?yàn)楫?dāng)我在做自己的事情的時(shí)候我并不會(huì)去考慮你。
我會(huì)認(rèn)為我的代碼是非常整潔,但我還是認(rèn)為如果我使用Ubuntu哲學(xué)我可以做得更好。Ubuntu哲學(xué)到底是什么?它看起來(lái)就像是一段良好的整潔的代碼。它并不是簡(jiǎn)單的代碼,而是一件藝術(shù)品。它是跟創(chuàng)造藝術(shù)有關(guān)的行為。和你的朋友一起使用Ubuntu哲學(xué)將會(huì)幫助你的團(tuán)隊(duì)守住你們的價(jià)值觀,增強(qiáng)你們的原則。如果有其他人在任何情況下接觸到你的代碼,都會(huì)變成一個(gè)更加優(yōu)秀的開(kāi)發(fā)者。
禪宗是有關(guān)個(gè)人的。對(duì)于一群人來(lái)說(shuō),Ubuntu也是一種禪宗。我們幾乎不會(huì)看到只為自己而寫(xiě)的代碼。
——Aslam Khan
7.你必須關(guān)心你的代碼
不用福爾摩斯我們就會(huì)知道好的程序員才能寫(xiě)出好的代碼。糟糕的程序員嘛…就不會(huì)。他們會(huì)產(chǎn)生我們必須清理的垃圾。你想寫(xiě)出好的東西,是不是?那你其實(shí)就是想去做一個(gè)好的程序員。
優(yōu)秀的代碼并不會(huì)無(wú)中生有。它并不像行星對(duì)齊那樣是靠運(yùn)氣才產(chǎn)生的。為了獲得優(yōu)秀的代碼,你就得努力去爭(zhēng)取。這有些辛苦。如果你真的關(guān)心優(yōu)秀的代碼你就會(huì)寫(xiě)出很好的代碼。
優(yōu)秀的程序并不單單來(lái)自技術(shù)能力。我曾見(jiàn)過(guò)一些有很高能力的程序員,他們能夠?qū)懗鼋o人很深印象的算法,他們把編程語(yǔ)言的標(biāo)準(zhǔn)爛熟于心,但是他們卻寫(xiě)出了最糟糕的代碼。這些代碼閱讀起來(lái)非常痛苦,用起來(lái)也痛苦,修改起來(lái)也痛苦。我也曾見(jiàn)過(guò)更多謙卑的程序員,他們堅(jiān)持寫(xiě)出更加簡(jiǎn)單的代碼,他們寫(xiě)出來(lái)非常優(yōu)雅非常富有表現(xiàn)力的程序,和他們工作簡(jiǎn)直就是享受。
根據(jù)我在軟件行業(yè)多年的經(jīng)驗(yàn),我得出了這樣的結(jié)論,一般的程序員和偉大的程序員之間真正的區(qū)別是:態(tài)度。優(yōu)秀的程序使用了專業(yè)的方法,并在現(xiàn)實(shí)世界的約束和軟件產(chǎn)業(yè)壓力之下盡量寫(xiě)出最好的軟件。
代碼的鋪就都得有一個(gè)良好的計(jì)劃。要想成為一個(gè)優(yōu)秀的程序員,你就必須做出很好的計(jì)劃,并且真正關(guān)心起代碼——培養(yǎng)積極的觀點(diǎn),養(yǎng)成良好的態(tài)度。偉大的代碼是由工匠大師精心打造的,絕不是由滿湖的程序員或自稱編碼大師的程序員在不經(jīng)意間就完成的。
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29818
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論