總結下要成爲一名優秀的程序員需要具備怎樣的能力?

推薦一個非常好的技術交流網站

1、解決問題的能力

在項目開發中,一個程序員的能力等於其解決問題的能力。假如想有個尺度來衡量這個能力的話,一個程序員的能力可以用能完成任務的規模和難度來衡量。

因爲難度上不好那麼筒單的劃分,並且在一般的項目開發中 (非研究性項目),任務的難度主要來自於任務的規模帶來的複雜度,這裏把任務從規模上大致的劃分爲1個函數=>1個 類=>1個功能=>1個模塊=>1個項目。

更細緻的劃分時,函數、類、功能、模塊、項目本身也有簡單和規模大小之分。

◆ 一個初學編裎的人總是從最小的函數和類開始學習的;

◆ 一個程序員能基本無誤的完成項目中的一個功能算是合格。

在此之前,對項目的生產力爲負,即爲他佈置任務、溝通和爲他修補bug的時間其實要多於自己直接完成該功能的時間。也就是說,項目中存在這個水平的程序員純粹是爲了培養人才。

◆ 能較好完成一個完整模塊的程序員算是較好的程序員, 也是一般項目中的主要幵發者;

◆ 能完成整個項目的裎序員才能算是好的裎序員,在多人 項目中可做主程。

 

2、知識積累

在同等水平的裎序員之間,一個對某領域問題有所瞭解,一個對該領域完全不瞭解,完成該領域同樣任務的效率差了不止一個數量級。

這就是我們通常所說的經驗的作用,這種經驗可以看作是知識積累。—個程序員的知識積累很大程度上決定了其解決問題的能力。

 

3、自學能力

這是一個知識大爆炸,知識刷新頻率讓人無法追趕的時代。

一 方面,面對一個稍有難度的任務,難免會有超出自己現有的知識範圍的時候,此時自學能力決定了你能多快的完成此任務;另一方面,你的自學能力決定了在平時的工作過程中,你積累知識的多少。

自學能力強的人,即使沒有人指點也總能在項目的代碼中學到東西;而反過來,學習意願弱的人寫的代碼被別人重構後, 也不會想想,這段代碼是否改的更好了以及爲什麼。

從較長的尺度上(比如一個人的工作生涯)來看,一個程序員知識積累的多少隻決定於其自學能力和他對編程本身的興趣。

 

4、溝通能力

在一個分工明確的項目中,程序員需要和產品(策劃)溝通來理解產品,和上級溝通以理解自己的任務,和同事們溝通以正確的理解要接入的模塊。

在自己完成模塊時讓別人正確的理解模塊的接口,在不寫文檔時,正確的口頭溝通非常重要,需要寫文檔時,文檔的寫作能力也算做是溝通能力的一部分。

那麼,怎麼提高自己解決問題的能力?

其實轉了這麼大個彎,怎麼樣做一個好的程序員的問題可以轉爲問怎麼提高自己解決問題的能力?

溝通能力、對工作負責任的態度、對代碼的追求,很大程度上由性格決定,我不知道實際中怎麼簡單的去提高,這裏只稍微 的談談我對知識積累的一些看法吧:

a、培養興趣,技術工作總是辛苦的,編程尤其如此。

假如你對此沒有濃烈的興趣,不能從編程本身找到很多樂趣,那最好就不要奢求能成爲一個好的程序員了。對編程的興趣也是我一般招聘初級程序員時最大的要求。

b、什麼樣的環境決定你有什麼樣的知識積累,決定了你的品味,決定了你會以什麼方式來做事,這個除非有強大的意志力。

c、不要停留在自己學習的舒適區,假如你的工作僅僅是以前工作的簡單重複,你會工作的很輕鬆,同時也很難有提高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章