程序員十層樓

第一層:基本上懂計算機的基本操作,瞭解計算機專業的一些基礎知識,掌握一門基本的編程語言如C/C++,或者Java,或者JavaScript,...,均可入門邁進這層。

第二層:以C/C++程序員爲例,只要熟練掌握C/C++編程語言,掌握C標準庫和常用的各種數據結構算法,掌握STL的 基本實現和使用方法,掌握多線程編程基礎知識,掌握一種開發環境,再對各種操作系統的API都去使用一下,搞網絡編程的當然對socket編程要好好掌握 一下,然後再學習一些面向對象的設計知識和設計模式等,學習一些測試、軟件工程和質量控制的基本知識,大部分人經過2~3年的努力

第三層:比如以熟練掌握C++編程語 言爲例,除了學一些基礎性的C++書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要的是需要了解C++編譯器的原理和實現機制,瞭解操作系統中的內部機制如內存管理、進程和線程的管理機制,瞭解處理器的基礎知識和 代碼優化的方法,此外還需要更深入地學習更多的數據結構與算法,掌握更深入的測試和調試知識以及質量管理和控制方法,對各種設計方法有更好的理解等。以軟件設計來 說,光懂結構化設計、面向對象設計和一些設計模式是不夠的,還要了解軟件架構設計、交互設計、面向方面的設計、面向使用的設計、面向數據結構算法的設計、 情感化設計等,還需要去學習各種經驗和技巧。現在出版的書籍衆多,網絡上的技術文章更是不勝數,然後再去各種 專業論壇裏泡一泡,把這些書籍和文章中的各種經驗、技能、技巧掌握下來,再去學習一些知名的開源項目如Apache或Linux操作系統的源代碼實現等

進入多核時代後,從第2層爬到第3層增加了一道多核編程的門檻想邁進這道門檻者不妨去學習一下TBB開源項目的源代碼(鏈接:http://www.threadingbuildingblocks.org/),然後上Intel的博客(http://softwareblogs-zho.intel.com/)和多核論壇(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相關文章,再買上幾本相關的書籍學習一下。

第四層:,以時下熱門的 多核編程來說,更深入地掌握其中的各種思想原理,能更加自如的運用,並有能力去實現一個象開源項目TBB庫一樣的東西,也可以成爲"大 牛",又或者你能寫出一個類似Apache一樣的服務器,或者寫出一個數據庫,都可以成爲"大牛"。一般來說,至少要看過200~400本左右的專業書籍並好好掌握它,除此之外,還得經常關注網絡和期刊雜誌上的各種最新信息。

第五層:當大牛們真正動手做一個操作系統或者類似的其他軟件時,他們就會發現自己的基本功仍然有很多的不足。以內存管理爲例,如果直接抄襲Linux或者其 他開源操作系統的內存管理算法,會被人看不起的,如果自動動手實現一個內存管理算法,他會發現現在有關內存管理方法的算法數量衆多,自己並沒有全部學過和 實踐過,不知道到底該用那種內存管理算法。

  那就是需要做基礎研究,當然在計算機裏,最重要的就是"計算"二字,程序員要做基礎研究,主要的內容就是研究非數值"計算"。

非數值計算可是一個非常龐大的領域,不僅時下熱門的"多核計算"與"雲計算"屬於非數值計算範疇,就是軟件需求、設計、測試、調試、評估、質量控 制、軟件工程等本質上也屬於非數值計算的範疇,甚至芯片硬件設計也同樣牽涉到非數值計算。如果你還沒有真正領悟"計算"二字的含義,那麼你就沒有機會進到 這層樓來。

這並不是主要的 條件,更重要的是,需要到專業的學術站點去學習了,到ACM,IEEE,Elsevier,SpringerLink,SIAM等地方去下載論文應該成爲 你的定期功課,使用Google搜索引擎中的學術搜索更是應該成爲你的日常必修課。此外,你還得經常關注是否有與你研究相關的開源項目冒出來,例如當聽到 有TBB這樣針對多核的開源項目時,你應該第一時間到Google裏輸入"TBB"搜索一下,將其源代碼下載下來好好研究一番,這樣也許你的一隻腳已經快 邁進了這層樓的門檻。

第六層:創新。休息——創新,是指學術層面的創新,是基礎研究方面的創新

第七層:並沒有多少捷徑可走,主要看你有沒有足夠的能量,成爲大師必須 要有較大的貢獻。首先解決問題必須是比較重要的,其次你要比前輩們在某方面有一個較大的提高,或者你解決的是一個全新的以前沒有解決過的問題;最重要的 是,主要的思路和方法必須是你自己提供的,不再是在別人的思路基礎上進行的優化和改進。

第八層:

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