良好的程序員與優(yōu)秀的程序員究竟有何差異?
如果寫代碼是一門科學(xué),那么所有開發(fā)人員的表現(xiàn)幾乎沒有區(qū)別。
但事實(shí)并非如此。
如同一門藝術(shù),在朝著同一結(jié)果努力時,兩個開發(fā)人員不會有同樣的思維或認(rèn)知。盡管一些人很難達(dá)到想要的結(jié)果,但少數(shù)人卻能水到渠成,就好像每當(dāng)他們開始寫代碼或者解決問題時,就忽然頓悟了。
軟件工程專家史蒂芬·麥康奈爾(Steve McConnell)的一篇博客中,講述了20世紀(jì)60年代后期由薩克曼(Sackman)、埃里克森(Erikson)和格蘭特(Grant)展開的一項(xiàng)原始研究。他們發(fā)現(xiàn),最好和最差的程序員的原始編碼時間之比大約為20:1。最有趣的是,他們發(fā)現(xiàn)程序員的經(jīng)驗(yàn)與代碼質(zhì)量或生產(chǎn)效率無關(guān)。
簡言之,能否寫出好的代碼并不是區(qū)分良好程序員和優(yōu)秀程序員的唯一因素。
先從良好程序員開始。那么,良好程序員有什么特征?
- 具有優(yōu)秀的技術(shù)技能,能寫出干凈整潔的代碼。
- 具有扎實(shí)的開發(fā)技術(shù)知識和解決問題的專業(yè)技術(shù)。
- 了解編程的最佳實(shí)踐以及何時使用它們。
- 對編程有著持久的熱情,并積極為團(tuán)隊(duì)做貢獻(xiàn)。
- 備受團(tuán)隊(duì)的其他成員尊敬和喜歡。
所以,如果你是一名程序員且具有以上特征,那么恭喜!你是一名良好的程序員。你應(yīng)該感到自豪。
現(xiàn)在開始介紹優(yōu)秀的程序員。
- 罕見難有的人才。
- 生產(chǎn)效率是良好程序員的3倍,是糟糕程序員的10倍。
- 屬于頂尖的1%,不僅寫代碼,還擁有一系列無形的特質(zhì),使其在眾多程序員中脫穎而出。
簡言之,優(yōu)秀程序員=良好程序員+一系列無形特質(zhì)。
雖然這并不容易,但是如果你足夠努力,這里有一些無形的特質(zhì),可以幫助你實(shí)現(xiàn)從良好程序員到優(yōu)秀程序員的轉(zhuǎn)變。
優(yōu)秀程序員具有突出的學(xué)習(xí)能力
來源:Pexels
優(yōu)秀程序員思維敏捷,這意味著他們有能力學(xué)習(xí)新技術(shù),對此并不膽怯。
他們能將看似分散的信息整合起來,對其進(jìn)行動態(tài)處理。每個程序員都會有不知道答案的情況。這時,優(yōu)秀的程序員會找到不同的資源,與合適的人討論,找到解決方案(不論這個方案看起來多么難以實(shí)現(xiàn))。每個人都能擁有的最好的技能是知道如何學(xué)習(xí),而優(yōu)秀的程序員已經(jīng)掌握了自學(xué)的技能。
優(yōu)秀程序員不會讓他的自我意識介入到工作和學(xué)習(xí)過程之間。如果需要知道什么,他會以從低到高的順序接近公司中的任何一個人。
優(yōu)秀程序員能平衡實(shí)用主義和完美主義
Etsy的首席技術(shù)官約翰·阿爾斯帕瓦(JohnAllspaw)在其文章《如何成為一名高級工程師》中提出了一個很棒的觀點(diǎn)。他說,一流的開發(fā)人員是健康的懷疑論者,他們在工作中總會詢問自己和同行問題。
“我還會遺漏什么嗎?”
“這怎么會不成功呢?”
“能幫我找出我這個想法里盡可能多的漏洞嗎?”
“盡管它在技術(shù)上是合理的,但組織的其他成員是否能充分理解它的操作、故障排除以及擴(kuò)展呢?”
這些問題背后的思想是:他們完全理解同行評議的重要性,只有通過可靠的同行評議,才能做出好的設(shè)計(jì)決策。所以他們“乞求”批評意見。優(yōu)秀的程序員往往在對自己的代碼進(jìn)行了廣泛的測試后,才會信任它。
此外,他們還能理解市場動態(tài)和盡早交付產(chǎn)品的需求。因此,他們既能做出快速而糟糕的處理,也能提出優(yōu)雅精致的解決方案,還能機(jī)智地選出適合當(dāng)前特定情況的解決方案。
少數(shù)程序員缺乏對于一些問題所必需的細(xì)節(jié)關(guān)注,其他人則陷入了完美主義的模式。優(yōu)秀的程序員則能完美地平衡這兩者。
優(yōu)秀程序員具有敏銳的直覺
《尼各馬科倫理學(xué)》( TheNicomachean Ethics)第六卷中,著名的哲學(xué)家與政治家亞里士多德討論了人們?yōu)楂@得真知而在任何領(lǐng)域?qū)崿F(xiàn)成功所必備的五種能力中的第四種:直覺。
亞里士多德的觀點(diǎn)很簡單。直覺是我們開始認(rèn)識一切的方式,通過直覺獲得的知識必須錨定所有其他知識。事實(shí)上,這種獲取知識的方法十分基礎(chǔ),以至于難以證明。因?yàn)橛芍庇X獲取的知識并不是建立在一系列事實(shí)或推理得出結(jié)論的基礎(chǔ)之上。相反,我們僅僅通過內(nèi)省和直接感知來獲知直覺的真理。
從史蒂夫·喬布斯到理查德·布蘭森(RichardBranson,英國億萬富翁),再到沃倫·巴菲特,他們都是直覺型的人,通常不論做什么都能夠成功。因?yàn)樗麄兡芨宄乜创挛?,能比別人更快地找到解決問題的最佳方案。毋庸置疑,這些人都具有充足的專業(yè)知識和經(jīng)驗(yàn)儲備。但是他們似乎還有與生俱來的豐富直覺,使他們能領(lǐng)會復(fù)雜問題的本質(zhì),找到出人意料的正確的解決方案。
通常,優(yōu)秀的程序員基于自己廣泛的涉獵和良好的開發(fā)直覺,對于算法、技術(shù)以及軟件架構(gòu)表現(xiàn)出一種直覺的理解。他們只需看一眼,就能知道他們的“裝備庫”中哪項(xiàng)工具最適合解決手頭的問題。其直覺能力遠(yuǎn)超出了開發(fā)和編程范圍。這使得他們在向外行人和專業(yè)人士闡述技術(shù)和非技術(shù)問題時能很好地靈活應(yīng)對。
優(yōu)秀程序員富有遠(yuǎn)見,喜歡挑戰(zhàn),追求卓越,經(jīng)常試圖搶先別人一步打破自己的代碼。
來源:Pexels
優(yōu)秀程序員是溝通大師
達(dá)米恩·菲利亞特羅(Damien Filiatrault)說得沒錯:
“良好的溝通技巧與良好的開發(fā)技能直接相關(guān)。” |
為了讓別人理解你的想法,你必須使其簡單化,并且盡可能清楚地進(jìn)行表達(dá)。這聽起來很簡單,不是嗎?但不幸的是,表達(dá)清晰度的缺失是造成所有工作問題的根本原因。這是因?yàn)橐环N名為“知識詛咒”的現(xiàn)象。
1990年,斯坦福大學(xué)心理學(xué)研究生伊麗莎白·牛頓(Elizabeth Newton)通過對一個簡單游戲的研究,闡述了“知識詛咒”這一現(xiàn)象。這個游戲?qū)⑴c者分為兩種角色:敲擊者和傾聽者。要求每個敲擊者選取一首大眾歌曲,如“生日快樂歌”,然后在桌子上敲出這首歌的旋律,讓傾聽者來猜歌名。
牛頓的這項(xiàng)實(shí)驗(yàn)過程中共敲擊了120首歌曲,傾聽者只猜對了其中三首:成功率為2.5%。但在他們猜之前,敲擊者預(yù)測傾聽者猜對的概率為50%。敲擊者原以為成功傳遞信息的比例能達(dá)到1/2,但實(shí)際上只達(dá)到了1/40。為什么呢?
當(dāng)敲擊者敲擊時,他(她)會情不自禁地聽到自己的敲擊聲所伴隨的曲調(diào)。與此同時,所有傾聽者只能聽到一段奇怪的莫爾斯代碼。傾聽者需要十分艱難地識別曲調(diào),這讓敲擊者感到十分驚訝。
問題在于,一旦我們知道某件事(如一首歌曲的旋律),我們很難想象自己不知道它。我們的知識“詛咒”了我們。因?yàn)槲覀兒茈y再現(xiàn)他們的心理狀態(tài),所以難以將自己的知識分享給別人。
這就是為什么優(yōu)秀的程序員在將信息傳達(dá)給團(tuán)隊(duì)之后總要進(jìn)行確認(rèn)。他們也能清楚地理解問題,把他們分解成假設(shè),并提出解決方案。他們能快速地理解概念或者為了理解而提出適當(dāng)?shù)膯栴},尤其是他們不需要事無巨細(xì)都寫進(jìn)文件中。
所以,如果想成為一名優(yōu)秀的程序員,你需要確保你和你的團(tuán)隊(duì)之間保持有效的溝通。這不僅使你保持在更高的承諾水平,還向上級表明了你對交付高質(zhì)量的產(chǎn)品是真正感興趣和投入的。
來源:Pexels
如你所見,要想在所在領(lǐng)域出類拔萃,你不需要任何花哨的學(xué)位,甚至不需要錢來投資。
你所需要的是學(xué)習(xí)的態(tài)度,瘋狂的求知欲和基于多年積累的知識將事情聯(lián)系起來的直覺力。培養(yǎng)一種健康積極的態(tài)度,拋棄自我,寬容地接受反饋并采取行動,這些也同樣重要。一旦做到了這些,我保證你能成就一番事業(yè)。
正如鮑勃·馬利(Bob Marley)所說:
“一個人的偉大之處不在于他獲得了多少財(cái)富,而在于他的正直和積極影響周圍人的能力。” |