工做中老是被問到程序員如何積累編程技術或編程經驗?首先我認爲編程是一門實踐性的很強的藝術,因此貌似惟有實踐才能積累。然而把它看成一個我的軟件過程(PSP)的問題,總感受是有一些規律、規則或建議能夠解答。思索良久,結合本身的工做經歷,嘗試給出一個本身對這個問題的解答。程序員
經驗是什麼?
複製代碼
程序寫多了,總會發現有一些東西是不怎麼變的,就是說你寫一萬遍也是這麼個寫法,而這就是所謂的經驗。固然這些不變的東西有大有小,若是咱們能給它分一下類,並取個好聽的名字,而後在後續的編程實踐中得以運用,那麼這個過程就是所謂的積累。面試
經驗分類
咱們將小一些的不變的東西叫習慣用法(idiom),大一些的叫模式(pattern),再大一些叫框架(framework),再大一些就是技術棧(technology stack)了。
複製代碼
Idiom(習慣用法)編程
習慣用法更多的停留在語言層面上,與語言特性密切相關,一般是一些API的經典用法。如文件拷貝的經典寫法、網絡狀態的判斷、臨時文件的建立及刪除等。windows
通常咱們會將這個經典的寫法整理到筆記本中,方便查閱。對於使用Eclipse的用戶,能夠將這些抽取成代碼片斷,分類保存起來,方便應用。
複製代碼
Pattern(模式)設計模式
模式更多的描述一類問題的解決方案,比較抽象適用於任何語言。如經典的23種設計模式、併發編程模式等。對於模式要理解解決的問題域及實現方式,因此就要求在編程實踐中有意的訓練,而後從實踐中積累本身的編程模式。
例如關於網絡併發編程模式主要有:Reactor模式和Proactor模式。在Linux中使用epoll,當IO可讀寫的時候通知你,你再去同步讀寫,這就是所謂Reactor模式。而windows下的iocp或者Linux下的ZeroMQ則是數據發送完了或者接收完了再通知你,這就是所謂Proactor模式。其實說白了就是,Reactor給你的是讀寫權,Proactor給你的是數據。
複製代碼
Framework(框架)網絡
Framework就是對Pattern的實現,目的是簡化應用編程和重用代碼。如Struts、Spring、Mina、Netty等框架。對於框架的積累,通常在編程中多以快速原型發佈,持續演進方式推動,最終造成穩定的框架實現。
複製代碼
Technology Stack(技術棧)架構
積累本身的技術棧是架構師必備素養之一。這就要求咱們在編程實踐中要以架構師的視角看問題,運用技術,積累技術。
我以爲若是能作好上面的這幾個方面,從小到大,反覆迭代的實踐,編程技術或編程經驗的積累又有何難呢?
複製代碼
若是你想學好JAVA這門技術,也想在IT行業拿高薪,能夠參加咱們的訓練營課程,選擇最適合本身的課程學習,技術大牛親授,8個月後,進入名企拿高薪。咱們的課程內容有:Java工程化、高性能及分佈式、高性能、深刻淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點。若是你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優點的,想進阿里面試但擔憂面試不過的,你均可以來,q羣號爲:180705916 進羣免費領取學習資料。併發