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

優秀程序員的歷練之路

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

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

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

優秀程序員的歷練之路

衡量程序員的優秀程度,沒有固定的標準,因為崗位級別不同,工作任務不同,衡量的標準也就不一樣了,軟件開發有研發級別,有應用級別;軟件測試有中高級,專家級別。每個級別都會有相應的技能要求。

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


優秀的程序員,一般需要具備以下一些能力。

1、相關職業技能的熟練掌握

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

2、系統的編程能力

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

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

3、縝密的邏輯思維

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

4、解決問題的能力

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

5、迅速的學習能力

持續學習,是優秀程序員必備的習慣,然而,在持續學習的基礎上,還要不斷培養自己迅速學習的能力。信息時代,唯一不變的就是變化本身,軟件技術在不斷迭代,所以迅速的學習能力,是優秀程序員需要具備的重要能力。

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

6、準確的理解能力

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

7、良好的溝通能力

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

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

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

優秀的路上很艱辛,但是沿途的風景也很美麗!