看看你處於哪一層?(轉)

粗略地分一下,程序員的平常工做基本上會被劃分到這三層: 系統層, 中間件層,應用層。程序員

咱們從下到上,逐層走一下,看看每一層都在作什麼。數據庫

 

一.系統層編程

系統層指的是操做系統,數據庫,編譯器,TCP/IP協議棧,虛擬機等。另外,我把編程語言也納入到這一層。設計模式

能在這一層工做的程序員基本上都是大神。好比寫Linux的Linus Torvalds,  一邊讀協議,一邊寫TCP/IP實現的Bill Joy。緩存

用匯編寫Delphi(Object Pascal)編譯器的Anders,還有各類編程語言的發明人, 就不一一列舉了。架構

這一層的人大部分都在默默地工做,構建咱們賴以生存的世界,他們深藏功與名,不多對外發出的聲音,由於即便他們發出了聲音,不少人也聽不懂,由於太專業,太精深。負載均衡

這一層的人有兩個特色:框架

(1) 對計算機是真的熱愛,不然不會探究到這麼深的層次,而且能耐得住寂寞在這一層工做。編程語言

(2) 能力超強。由於這一層的工做性質要求高性能,高可靠,須要和硬件打交道,須要處理巨多的細節,通常人真搞不了。分佈式

 

二.中間層

中間件層頗有趣,有些東西系統層不想管,應用層又管不了,只好交個中間件來作。

傳統的中間件是像WebLogic, Websphere, JBoss,Tomcat, MQ這樣的東西, 若是我把他泛化一下,也能夠把Docker, Elastic Search , Kafka , Spring , Zookeeper,Ngnix,Redis,Dubbo等給包括進來。 還能夠包括一些公司的技術平臺部門所推出的,供整個公司試用的軟件和系統。

在這一層工做的人發出的聲音會有不少人側耳傾聽,由於用戶衆多,你們都能聽明白。

程序員對這一層的關注很是多,出了什麼新技術?有什麼新特性?佈道師出來寫一些文章,「鼓吹」一番,熱鬧非凡。

對於程序員來講,可以在這一層工做,也很是有成就感:

(1) 直接參與開發,當你開始作通用的組件和框架的時候,對於技術能力,抽象能力的要求相比應用層就會大大提升。

(2) 對某個領域極爲精通,成爲專家,例如緩存、搜索、分佈式、負載均衡等。

 

三.應用層

最後是應用層,主要使用系統層和中間層的東西來實現業務邏輯,戲稱爲增刪改查。

絕大部分人都在這一層工做,尤爲是剛剛培訓出來的同窗,確定要在這一層呆上一段時間,也有可能一直呆下去,作一生。

千萬別小看這一層,它須要把業務需求直接轉化成技術實現,是直接產生價值的。

比較「悲催」的是,應用層的同窗須要掌握下面兩層的知識,不必定精深,可是須要知道原理。

在這一層工做,關注點是如何更好更快地實現業務需求,及後續的變動,因此要有面向對象的設計,設計模式,敏捷開發,持續集成,持續交付,DevOps,領域驅動開發,TDD, Code Review等各類工程實踐。

這一層也有大師級別的人物,好比Martin Fowler,他寫了《分析模式》,《企業應用架構》,《重構》等經典書籍,特別擅長把業界的實踐總結成概念。

再好比Robert Martin,面向對象設計的大牛,他10多年前的書《敏捷軟件開發:原則,模式與實踐》中提出的SOLID原則,至今仍然是OOD領域的指導原則。

爲了把這一層的的事情作好,須要有個特殊的崗位來負責整個系統的設計,這個崗位就是:架構師。

架構師通常是資深的程序員,有豐富的實踐經驗,知道技術的優缺點,能根據具體的需求,設計合適的技術方案,創建合適的技術組件並鏈接起來,從而解決問題。

 

結語

系統層,中間件層,應用層並無高下之分,每一層都有足夠多的東西供你去探索,去創造。

若是你喜歡開發一些東西,讓不少程序員使用,能夠考慮進入中間件層,好比公司的技術平臺部。

若是你真的喜歡系統層的東西,那就要選定方向,好比數據庫,而後深挖,如今國內已經有公司提供這樣的工做機會讓你去定製OS,定製數據庫,定製JVM。

若是你喜歡在應用層解決實際業務問題,能夠考慮向架構師方向發展。

相關文章
相關標籤/搜索