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