來源:北大青鳥總部 2019年07月08日 09:33
記得之前在知乎上看到一個問題:怎么樣才能做一個好的程序員?下面的答案五花八門,有說要代碼敲得好,少出bug;有說要有溝通能力;還有的說要懂得自律……那么,到底怎么樣才能做一個好的程序員呢?優(yōu)秀程序員一般都具有哪些能力呢?
綜合來講,其實評判一個程序員是否優(yōu)秀的標準就一個:就是解決問題的能力。
在項目開發(fā)中,一個程序員的能力往往就等于其解決問題的能力。假如想有個尺度來衡量這個能力的話,一個程序員的能力可以用能完成任務(wù)的規(guī)模和難度來衡量。
因為難度上不好那么筒單的劃分,并且在一般的項目開發(fā)中 (非研究性項目),任務(wù)的難度主要來自于任務(wù)的規(guī)模帶來的復雜度。
更細致的劃分時,函數(shù)、類、功能、模塊、項目本身也有簡單和規(guī)模大小之分。
◆ 一個初學編裎的人總是從最小的函數(shù)和類開始學習的;
◆ 一個程序員能基本無誤的完成項目中的一個功能算是合格。
在此之前,對項目的生產(chǎn)力為負,即為他布置任務(wù)、溝通和為他修補bug的時間其實要多于自己直接完成該功能的時間。也就是說,項目中存在這個水平的程序員純粹是為了培養(yǎng)人才。
◆ 能較好完成一個完整模塊的程序員算是較好的程序員, 也是一般項目中的主要幵發(fā)者;
◆ 能完成整個項目的裎序員才能算是好的裎序員,在多人 項目中可做主程。
不過解決問題的能力不是天生就有的,也是通過持續(xù)不斷的學習培養(yǎng)起來的,那么是什么決定了一個裎序員解決問題的能力呢?
一般來講,主要有以下幾種因素:
知識積累
在同等水平的裎序員之間,一個對某領(lǐng)域問題有所了解,一個對該領(lǐng)域完全不了解,完成該領(lǐng)域同樣任務(wù)的效率差了不止一個數(shù)量級。
這就是我們通常所說的經(jīng)驗的作用,這種經(jīng)驗可以看作是知識積累?!獋€程序員的知識積累很大程度上決定了其解決問題的能力。
自學能力
這是一個知識大爆炸,知識刷新頻率讓人無法追趕的時代。
一 方面,面對一個稍有難度的任務(wù),難免會有超出自己現(xiàn)有的知識范圍的時候,此時自學能力決定了你能多快的完成此任務(wù);另一方面,你的自學能力決定了在平時的工作過程中,你積累知識的多少。
自學能力強的人,即使沒有人指點也總能在項目的代碼中學到東西;而反過來,學習意愿弱的人寫的代碼被別人重構(gòu)后, 也不會想想,這段代碼是否改的更好了以及為什么。
從較長的尺度上(比如一個人的工作生涯)來看,一個程序員知識積累的多少只決定于其自學能力和他對編程本身的興趣。
溝通能力
在一個分工明確的項目中,程序員需要和產(chǎn)品(策劃)溝通來理解產(chǎn)品,和上級溝通以理解自己的任務(wù),和同事們溝通以正確的理解要接入的模塊。
在自己完成模塊時讓別人正確的理解模塊的接口,在不寫文檔時,正確的口頭溝通非常重要,需要寫文檔時,文檔的寫作能力也算做是溝通能力的一部分。
以上,就是小編為大家整理的優(yōu)秀程序員應(yīng)該具備的能力,希望能夠幫助到正在學習的小伙伴!