高效程序員的 7 個(gè)共同特征
![](http://image.woshipm.com/wp-files/img/75.jpg)
導(dǎo)讀:要想成為一個(gè)偉大的程序員,需要的可不僅僅是能夠編寫出可以正常運(yùn)行的代碼。Justin James給出了能夠成為業(yè)內(nèi)頂尖高手的程序員應(yīng)該具有的幾個(gè)典型特質(zhì)。
要想成為高效的程序員,你需要具備一定的綜合素質(zhì)才能夠讓你用你所掌握的技能、經(jīng)驗(yàn)和知識(shí)編寫出有效的代碼。有一些開發(fā)人員在技術(shù)方面具備一定的技巧,但他們永遠(yuǎn)無法成為高效的程序員,就是因?yàn)樗麄內(nèi)狈λ璧钠渌鼛醉?xiàng)特質(zhì)。本文將給出成為一個(gè)偉大的程序員所必須具備的7項(xiàng)特質(zhì)。
1. 主動(dòng)學(xué)習(xí)新的技術(shù)和非技術(shù)兩方面的知識(shí)不好的程序員只有在實(shí)在不行的時(shí)候才開始進(jìn)行知識(shí)學(xué)習(xí)。良好的程序員會(huì)主動(dòng)學(xué)習(xí)新的技術(shù)知識(shí)。偉大的程序員不僅會(huì)自行學(xué)習(xí)新的技術(shù)知識(shí), 而且還會(huì)學(xué)習(xí)非技術(shù)方面的知識(shí),對(duì)各種知識(shí)來源都有一種開放的心態(tài),而不會(huì)象有的人那樣固步自封。 具體點(diǎn)說,不好的程序員只有在參加了采用WPF的項(xiàng)目時(shí)才開始學(xué)習(xí)XAM;良好的程序員一年前就學(xué)習(xí)了XAM,因?yàn)樗杏X它很有意思;而偉大的程序員還閱讀了WPF應(yīng)用程序的設(shè)計(jì)指南、可用性(usability)理論或者什么類似的學(xué)習(xí)課程,因而他能夠制作出卓爾不群的UI。
2. 務(wù)實(shí)而不教條嚴(yán)格遵守那些不成文的“編程規(guī)則”往往是一種奢侈品,沒有多少開發(fā)人員能夠承受得起。如果你們的規(guī)格說明書不是由頂尖的開發(fā)人員編寫的,也不是在頂尖的開發(fā)人員指導(dǎo)下編寫的,?我就可以向你保證,你可能也承受不起。 我經(jīng)常能夠碰到一些程序員,他們無法或者拒絕做某個(gè)任務(wù)只是因?yàn)橥瓿蛇@個(gè)任務(wù)的做法通常不為最佳實(shí)踐所接受。業(yè)務(wù)需求很少會(huì)受到實(shí)現(xiàn)需求所采用的技術(shù)的制約;沒有人會(huì)說,“這我們不應(yīng)該把這個(gè)需求寫到規(guī)格說明書里,因?yàn)橐獙?shí)現(xiàn)這個(gè)需求,程序員就不得不寫一段很臭的代碼?!?/p> 在結(jié)束的那一天,程序員的任務(wù)是要生成一個(gè)有效的應(yīng)用程序,而絕不是要求在技術(shù)方面達(dá)到十全十美。我可不是在為垃圾代碼做辯護(hù)。我想說的是,總會(huì)在有些時(shí)候,你會(huì)寫出一些代碼,這些代碼你永遠(yuǎn)不會(huì)作為范例向別人展示做事的正確方法。如果只有一種寫法,那么這種代碼就不是糟糕的代碼 ——??但要保證你已窮盡了其它所有可能的方案。
3. 懂得如何通過研究找到答案通過研究找到答案可不僅僅只是在搜索引擎中鍵入幾個(gè)關(guān)鍵字那么簡(jiǎn)單, 也不是到Stack Overflow或者MSDN forums這類網(wǎng)站發(fā)個(gè)問題帖。我就碰到過在搜索引擎里根本搜不到答案的問題,然后我Stack Overflow 或者M(jìn)SDN forums里發(fā)的所有問題貼都沒有一個(gè)像樣的答案,不過我還是解決了我所碰到的問題使得工作得以繼續(xù)。我不是魔術(shù)師 —— 我只是懂得如何找到答案,如何找出問題的根本原因。 有許問題都屬于情景式的問題,如果你依賴于搜索引擎或者論壇,就會(huì)在各種鏈接中浪費(fèi)大量的實(shí)踐而最終無法得到真正的答案。要學(xué)習(xí)如何進(jìn)行根本原因分析,學(xué)習(xí)底層系統(tǒng)方面的知識(shí)才能夠找到其它的線索和解決方案,還要學(xué)習(xí)如果在對(duì)問題有個(gè)全局性的認(rèn)識(shí)后才對(duì)其進(jìn)行深入分析。
4. 擁有激情不喜歡這份工作,就無法成為這個(gè)行業(yè)中的頂尖高手。倒是也有一些僅僅把編程當(dāng)作一份普通工作的程序員水平也還不錯(cuò),但如果你的三觀就是如此的話,你就不太會(huì)愿意去做能夠?qū)⒛阋虺晒Φ乃惺虑椤_@個(gè)觀點(diǎn)會(huì)使很多家伙不悅,因?yàn)樗麄儠?huì)覺得這是一種人身侮辱?!拔沂且粋€(gè)很好的程序員,但我還有其它重要的事情要做,我不能讓工作成為我人生的全部?!?我完全理解;我也有別的更重要的事情。盡管我也痛恨這么說,當(dāng)我們對(duì)我的工作熱情高漲之時(shí),我愿意(雖然不是渴望)拋棄我其它更重要的事情來首先完成手頭的工作。要說你不愿意全情投入就無法成為高手,不算是人身侮辱,這是事實(shí)而已。 你的激情不能僅僅只在編程一個(gè)方面 —— 你必須在你的工作、你所使用的技術(shù)、你的老板、你的項(xiàng)目等等方面都有激情。 我目睹過一些非常好甚至很偉大的程序員其表現(xiàn)平平,只是因?yàn)橛幸恍l件不太合適。比如,他們不喜歡手頭的項(xiàng)目,或者項(xiàng)目中所用的技術(shù)讓他們討厭。我曾經(jīng)就是一個(gè)這樣的程序員,我也同這樣的程序員一起共過事。無論從哪個(gè)角度講,我都不喜歡這樣的程序員。如果你發(fā)現(xiàn)你的情況就是如此,就需要立即解決這個(gè)問題,要么挖掘出手頭的工作或項(xiàng)目中有意思的地方從而能讓你調(diào)整心情,要么就不要接著干了。怪不值當(dāng)?shù)摹?/p>
5. 將自負(fù)留在門外許多開發(fā)人員都非常自負(fù)。僅僅是比有些人聰明、懂得多一點(diǎn)或者經(jīng)驗(yàn)更豐富一點(diǎn),可不是意味著和那些人相比你才是好人。你要尊重別人,真正聽取并考慮別人的觀點(diǎn),在需要的時(shí)候向他們求助,而且還不能小瞧別人。?你還應(yīng)該更加關(guān)心團(tuán)隊(duì)的勝敗,而不是僅僅關(guān)心你在工作中的榮譽(yù)得失。
6. 具有企業(yè)家的精神最優(yōu)秀的開發(fā)人員不會(huì)是游手好閑者。對(duì)他們來講,產(chǎn)品的成功不僅僅意味著他們的薪水有著落了。因?yàn)樗麄冊(cè)诠ぷ髦袩崆轱枬M,他們是為了項(xiàng)目有更好的發(fā)展而工作,而且會(huì)一往無前。
7. 測(cè)量?jī)纱?,下刀一次。。。但測(cè)量不要多于三次開發(fā)人員可能會(huì)犯的最糟糕的錯(cuò)誤之一就是還不知道要干什么呢,就一猛子扎到代碼里去了。(當(dāng)他們把這種做法稱作敏捷開發(fā)時(shí)情況更為糟糕,好像用敏捷兩字就能讓情況好轉(zhuǎn)似的)。當(dāng)偉大的開發(fā)人員跳進(jìn)代碼里去的時(shí)候,那是因?yàn)樾枨笠?guī)格說明同他們以前實(shí)現(xiàn)過的某種做法十分相似。偉大的程序員在面臨新問題時(shí),他們會(huì)進(jìn)行思考、計(jì)劃和研究。 開發(fā)人員當(dāng)中最最優(yōu)秀的不會(huì)墮入“分析癱瘓者(analysis paralysis)”陷阱。他們懂得要對(duì)某些事情小心謹(jǐn)慎(比如涉及錢或個(gè)人數(shù)據(jù)時(shí)),只有這些特殊領(lǐng)域才適合我所說的“要測(cè)量三次”。任何超過三次的情況發(fā)生就意味著你在浪費(fèi)你的時(shí)間(除非在鮮有的特例中,比如核反應(yīng)堆、宇宙飛船、對(duì)沖基金會(huì)計(jì)系統(tǒng))。 在某個(gè)特定的時(shí)間點(diǎn)就要停止計(jì)劃,開始編碼,然后再看看你的計(jì)劃在哪些方面需要進(jìn)行相應(yīng)的調(diào)整,這一點(diǎn)非常重要。順便說一下,這就是我為什么成為敏捷方法擁躉的原因之一。我所知道的最優(yōu)秀的開發(fā)人員在計(jì)劃不再合適或者發(fā)現(xiàn)計(jì)劃有缺陷時(shí),都會(huì)愿意將計(jì)劃放棄掉。
來源:APKBUS
|
- 目前還沒評(píng)論,等你發(fā)揮!