昨天看了一篇帖子《“軟件王”申力華——到60歲,我還想每天堅持編碼》,主人公“軟件王”其實并非科班出生,只是大學(xué)里接觸了代碼,發(fā)現(xiàn)這玩意兒能做的事情很多,簡直讓人欲罷不能,于是興趣,從和網(wǎng)吧網(wǎng)管“斗法”開始了。

優(yōu)秀程序員的歷練之路

為了在代碼的世界里自由馳聘,圖書館和網(wǎng)吧成了學(xué)業(yè)之外的“常駐地”,從Pascal,到C/C++,Windows API/COM,再到Java,只要看下去,就停不下來。05年畢業(yè)后,直接入職了大廠,17年接任了傳送網(wǎng)的首席程序員,成為傳送DU的首席committer。

這種既能寫代碼又能有高職的程序員,可是很多人羨慕的對象。

從“軟件王”的經(jīng)歷里,可以看出優(yōu)秀的程序員,需要興趣來做奠基石,熱愛是點燃激情的火把!

優(yōu)秀程序員的歷練之路

衡量程序員的優(yōu)秀程度,沒有固定的標(biāo)準(zhǔn),因為崗位級別不同,工作任務(wù)不同,衡量的標(biāo)準(zhǔn)也就不一樣了,軟件開發(fā)有研發(fā)級別,有應(yīng)用級別;軟件測試有中高級,專家級別。每個級別都會有相應(yīng)的技能要求。

優(yōu)秀的程序員就是無論在哪個級別都做得很好,且能不斷得到提升,這里面就有個持續(xù)投入,不斷學(xué)習(xí)、總結(jié)、提煉的過程。


優(yōu)秀的程序員,一般需要具備以下一些能力。

1、相關(guān)職業(yè)技能的熟練掌握

軟件開發(fā)是一個跨度很大的技術(shù)工作,在語言方面,有C、C++、Java、Python、Ruby等等,在環(huán)境方面,又分嵌入式、桌面系統(tǒng),企業(yè)級、WEB應(yīng)用、移動app等等,每個方面的職業(yè)技能通常決定了一個程序員的級別,能否用好這些技能,直接關(guān)系到了程序員的職業(yè)生涯。對于優(yōu)秀的程序員來說,擁有一套完整的知識體系和技術(shù)體系,才能在職業(yè)生涯中大放異彩。

2、系統(tǒng)的編程能力

優(yōu)秀的程序員具有系統(tǒng)的編程能力,能寫出高質(zhì)量的代碼,什么是高質(zhì)量的代碼,復(fù)雜、漂亮?這一定是外行人的觀點,高質(zhì)量的代碼應(yīng)該是“編寫簡單、有用可讀的代碼”讓人讀了賞心悅目,易懂,即使有比較難的地方,也有清晰的注釋。

優(yōu)秀的程序員,會了解所寫代碼實現(xiàn)的功能、所在場景上下文,業(yè)務(wù)流程等,做到知其然,且知其所以然。沒有軟件架構(gòu)的思維而只會堆砌代碼,將會把自己代入噩夢中。

3、縝密的邏輯思維

具有縝密的邏輯思維,能讓工作更加高效。無論是編寫代碼,解決問題,還是溝通交流,都需要有縝密的邏輯思維。清晰地把控好工作步驟,梳理好工作流程,能避免很多重復(fù)、無用的付出。優(yōu)秀的程序員,是不能讓自己的時間和精力被白白浪費了。

4、解決問題的能力

解決問題的能力,就是能逢山開路,遇水搭橋。這不僅需要見過很多的場景,犯過或處理過很多的錯誤,同時需要不斷地自我總結(jié),提煉出一些解決問題的方法,或者是梳理出一些解決問題的流程。

5、迅速的學(xué)習(xí)能力

持續(xù)學(xué)習(xí),是優(yōu)秀程序員必備的習(xí)慣,然而,在持續(xù)學(xué)習(xí)的基礎(chǔ)上,還要不斷培養(yǎng)自己迅速學(xué)習(xí)的能力。信息時代,唯一不變的就是變化本身,軟件技術(shù)在不斷迭代,所以迅速的學(xué)習(xí)能力,是優(yōu)秀程序員需要具備的重要能力。

一個人不可能深入了解每個知識點,知識的廣度和深度本來就是一個矛盾體的存在,且相輔相成。先解決深度問題,在解決廣度問題,因為在解決深度問題的時候,也是一個儲備學(xué)習(xí)能力的過程,利于之后的高效學(xué)習(xí)。

6、準(zhǔn)確的理解能力

準(zhǔn)確的理解能力,即能夠準(zhǔn)確得理解上下級傳達的各項信息,程序員一般不是單獨作戰(zhàn),而是團隊作戰(zhàn),如果沒有準(zhǔn)確的理解能力,將會大大降低工作效率。準(zhǔn)確理解需求,才能做到準(zhǔn)確地實現(xiàn)各項目標(biāo)。

7、良好的溝通能力

程序員的溝通能力除了通常意義上所講的交流,還更多的是技術(shù)層面上的溝通。溝通包括程序員團隊內(nèi)部的溝通,與其他團隊的溝通,與Manager的溝通等等。開發(fā)需要和產(chǎn)品經(jīng)理、客戶、測試溝通,測試也需要和產(chǎn)品經(jīng)理、開發(fā)、客戶溝通,這其中的溝通需要從專業(yè)知識角度考慮,準(zhǔn)確地使用專業(yè)術(shù)語,溝通內(nèi)容要有理有據(jù)。

秀的程序員,需要具備良好的溝通能力,高效的工作既能得到大家的認可,更能促進成長!

安德斯 海爾斯伯格(Delphi、C#和TypeScript之父)曾說過,“程序員是最好的職業(yè)”。因為熱愛,就會愿意作為一輩子最大的事業(yè)!

優(yōu)秀的路上很艱辛,但是沿途的風(fēng)景也很美麗!