如何成爲軟件高手

從事軟件業也有幾年了,經歷幾多個不同的公司、不同企業文化、不同的開發流程,不變的身邊總是有零星高手和多數的普通程序員。我總是苦苦思索,一個剛入行的程序員如何才能成爲一個軟件高手呢?在這裏我們不討論那些奇才怪才,比如幾歲或十幾歲就接觸電腦、初中高中就會編程,或者大學期間就積累了一些經驗和人脈,或者輟學開公司去了的牛人們。我們只討論一個普通的或相對優秀的程序員,在公司裏工作的過程中如何成長爲一個高手。

    近幾年國內的大學,計算機專業畢業的學生,上學期間只有幾名學生有過軟件業相關的實踐,大多數可能連編程還不懂,即使學過c、c++、java課程。我一直反對大學畢業考研或者保研、直博或者考博然後留校任教。因爲上學期間即使做過實習,與真正的商業上的開發也是有區別的,一般公司不會把重要的任務交給一個實習生去做。何況大部分人沒有實習經歷,你可以想象這樣的老師能教出什麼樣水平的學生。

    在幾年的工作過程中,我發現很少公司有很好的培訓體系,能夠爲自己員工的職業生涯發展做出系統規劃和紮實培訓的公司。一方面有些公司並不想去做這些,因爲投入很大,並且效果不見得好,更可能爲競爭對手做嫁衣裳;另一方面即使想去做,也很難找到合適的人去做。這裏面很大一部分原因是國內搞軟件的整體風氣比較沉悶、缺乏交流,跟管理諮詢行業的培訓根本沒法比。

    寫這個系列的目的是與大家探討從小工到專家的成長路線,這是一個地圖,是一個導航,條條大路通羅馬,我願意選擇相對省力又高效的途徑。至少不要南轅北轍。並不是說我就是高手,也不認爲不是高手就沒有資格說這個話題。太多人沉默不會有好的結果的。各方面都是這樣,大家只要看看我們生活的人文社會環境就知道了。

     這篇作爲這一系列的序言,總體介紹一下我認爲初學者成爲軟件高手需要掌握的必備技能,這些不是充分條件而是必要條件。

    1. 一門語言的語法,SDK的常用API,算法與數據結構

        有了上面的知識,再加上一點實踐,再從網上找一些筆試題做幾套,基本可以過筆試這一關。

    2. 編碼規範、高性能編碼經驗技巧。

        要成爲一個職業化的、專業化的程序員,首先要養成良好的習慣,良好的習慣從規範化的點滴日常工作開始。

    3. 熟練掌握IDE、常用工具的使用

        工具可以提高生產力,用一把小刀去砍樹很困難,用電鋸立刻變得很簡單。

    4. 面向對象的原則

        這裏重點掌握面向對象的原則,比如:單一職責原則 SRP、開放-封閉原則、替換原則LSP、依賴倒置原則DIP等,明白了這些原則,對後面內容理解的深入會有很大的幫助。其實這纔是根本,不瞭解這些原則去學設計模式有種空中樓閣、頭重腳輕的感覺。根基不牢上層建築就好像浮雲一樣。

    5. 重構

        重構就是在不改變軟件功能的前提下改善代碼的設計以提高可維護性。修改別人的代碼或者優化自己的代碼都需要用到重構技術

    6. 設計模式

        基於一些常用的模式來學習如何使用設計模式。設計模式對於做框架開發的程序員比較有幫助。我們會選擇一些常用的來講解。

    7. 最重要、最難,看上去卻最簡單的功夫:修改代碼的藝術

        我看到很多新員工進入大公司都是從這步做起,但我認爲代價是很大的,無論對公司還是員工本身。對公司來講,一個沒經驗的人修改了一個bug,可能會引出幾個問題,然後再去修改,如此惡性循環。對於員工來講,趕鴨子上架,不瞭解代碼的邏輯、針對表象簡單粗暴的修改,有時我看了真的很是心痛。對程序員本身的能力提高也是緩慢的。其實修改別人的代碼開始是功夫,之後就是藝術。就好像你要給一個人治病,你要成爲醫生,先要掌握人體基本結構、各個臟器的特點、各種藥物的功能、常用的診治方法等等,醫院不會讓一個醫學院畢業的學生去給病人看病,總要有段實習,由經驗豐富的醫生帶一段時間。然後從難度較低的做起。

    8. 架構設計

        這一點我是不太自信的,一是感覺資歷不夠,二是在這一點上能忽悠的人太多,而這又不是我的強項,我誠實的說出自己的看法可能被誤解,不過這是成爲高手必不可少的部分,這裏就與大家共同探討。

    9. 軟件工程

        開發軟件的過程,我經歷過公司從CMM到敏捷的轉變,我個人是比較推崇敏捷開發的,這裏想與大家站在工程的角度聊一聊軟件開發。

    10. 質量管理

        越往後其實越偏向管理了,開始是個人修煉,後面是站在組織、站在公司的角度來看軟件。質量是說得多、做得少,尤其在軟件領域,我一直覺得很邪門的事情是不懂軟件開發的人甚至被淘汰出去的人去從事軟件行業的質量管理,真是令人擔憂。質量管理中有很多很好的理論和工具,是值得我們學習的,不只可以應用到軟件開發上,生活中也很有用的。

       國內很多IT培訓機構基本上也是停留在應試教育,就是以通過筆試面試爲目的,再往後整個行業的職業培訓幾乎沒有。這裏原因很多,我不想多談,這是中國軟件從業人員的悲哀。

       希望通過這個系列的文章,能夠幫助一部分程序員成長,同時也希望更多老鳥高手給我一些指導,因爲你們不站出來纔有我的看似有點張狂,實際上我是很謙虛的。

http://www.cnblogs.com/suiyc/archive/2011/05/27/2059733.html

發佈了32 篇原創文章 · 獲贊 3 · 訪問量 54萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章