最近室友閒聊的時候告訴我,他在網上收集了作爲一個java程序員必需要會的東西,他以爲本身要有個方向,不然必定會在平平凡凡的工做中,不思進取,最終 渾渾噩噩。真是讓我猛然驚醒啊,作爲一個底層的程序員,如何才能拼得過出來的大學精英和社會老手?學習必定必不可少。雖然本身有點懶,我先把這些記下,待 往後儘可能弄懂。java
Web/WinForm/通吃,包括ASP.NET,WebService,Remoting,Thread,Serializable,ADO.NET等命名空間
精通UML
精通DesignPatterns 23+N種模式:默寫各個模式UML圖,熟記代碼實現方式,範例,以及.NET相關接口
精通CLR
VB.NET/C#通吃
精通OOP理念
精通DB設計與T-SQL,SQL2005就能夠了
熟悉AJAX全套技術
通吃WPF/WCF/WF/LINQ
WEB 2.0理念,理解Blog/Wiki/RSS架構,SOA理念
精通數據結構/操做系統/安全加密
精通.NET設計規範
研究5套以上經典源碼,例如:SharpDevelop,PetShop,DotNetNuke,SmartClient,NUnit,FotoVision,CSLA等等
熟悉DirectX編程模式
翻譯過1-2本技術書籍程序員
這些最基本的職業技能一般決定了一個程序員的級別,可否用好這些技能,直接關係到了程序員的職業生涯。不少程序新手也是由於缺乏、達不到或是不熟悉在這些 基本技能,因此,他們須要有老手帶,須要努力補齊這些技能。而高級程序員應該很是熟悉這些基本技能,並且有能力勝任並帶領其餘經驗不足的程序員。編程
下面是程序員所應該具有的基本職業技能:安全
閱讀代碼 - 這個技能須要程序員可以具有讀懂已經存在的代碼的能力,這樣的能力可讓程序員分析程序的行爲,瞭解程序,這樣才能和開發團隊一塊兒工做,繼承維護或是改進現有的程序。(相關閱讀:《閱讀優秀代碼是提升開發人員修爲的一種捷徑》)數據結構
編寫程序 - 編寫程序並不包括程序設計。不要覺得編程是一件很簡單的事情,不少程序員都認爲編程只須要懂得程序語言的語法,並把設計實現就能夠了。可是這離編寫程序還 遠遠不夠,使用什麼樣的編碼風格成爲編寫程序員最須要具有的基本技能。可否使用很是良好的編程風格直接決寫了程序員的級別。架構
軟件設計 - 這一能力直接決定了須要吏用什麼樣的代碼技術達到怎麼樣的功能,而系統架構設計直接決定了軟件的質量、性能和可維護性。並非全部的程序在這一方面都很是優秀,但每一個程序員都須要或多或少的明白和掌握這一基本技能。框架
熟悉軟件工程 - 每一個程序員都應該明白軟件工程是什麼東西,都應該知道,需求分析、設計、編碼、測試、Release和維護這幾個階段。固然,幾乎全部的人都知道這些東 西,但並非每一個人都很清楚這些東西。如今不少高級程序員都會混淆「需求規格說明書FS」和「概要設計HLD」。另外,程序員還須要知道一些軟件開發的方 法/論,好比:敏捷開發或瀑布模型。工具
使用程序庫或框架 - 一個程序員須要學會使用已有的代碼,不管是標論的程序庫,或是第三方的,仍是本身公司內部的,都須要學會作。好比:C++中,須要學會使用STL、MFC、ATL、BOOST、AC、CPPUNIT等等。使用這些東西,可讓你的工做事半功倍。性能
程序調試 - 程序調試是分析BUG和解決問題最直接的能力。沒有人可以保證程序寫出來不用調試就能夠運行正常,也沒有人能夠保證程序永遠不會出BUG。因此,熟練使用調試器是一個程序員須要具有的基本技能。單元測試
使用IDE - 學會使用IDE工具也會讓你的工做事半功倍。好比,VC++、Emacs、Eclipse等等,並要知道這些IDE的長處和短處。
使用版本控制 - 必定要學會使用版本控制工具,什麼叫mainline/trunk,什麼叫tag,什麼叫branch,怎麼作patch,怎麼merge代碼,怎麼reverse,怎麼利用版本控制工具維護不一樣版本的軟件。這是程序員須要明的的軟件配置管理中最重要的一塊。
單元測試 - 單元測試是每一個程序都須要作的。不少單元測試也是須要編碼的。必定要學會在xUnit框架下進行單元測試。好比JUnit, NUnit, CppUnit等等。
重構代碼 - 每一個程序員都須要有最基本的能力去重構目前已有的代碼,使代碼達到最優但卻不能影響任何的已有的功能。有一本書叫《軟件的重構》,每一個程序員都應該讀一下。
自動化編譯 - 程序員須要使用一個腳本,其能自動化編程全部的工程和代碼,這樣,整個開發團隊能夠不停地集成代碼,自動化測試,自動化部署,以及使用一些工具進行靜態代碼分析或是自動化測試。