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