看看你處于哪一層?
粗略地分一下,程序員的日常工作基本上會被劃分到這三層: 系統(tǒng)層, 中間件層,應(yīng)用層。
我們從下到上,逐層走一下,看看每一層都在做什么。
1
系統(tǒng)層指的是操作系統(tǒng),數(shù)據(jù)庫,編譯器,TCP/IP協(xié)議棧,虛擬機等。另外,我把編程語言也歸入到這一層。
能在這一層工作的程序員基本上都是大神。比如寫Linux的Linus Torvalds, 一邊讀協(xié)議,一邊寫TCP/IP實現(xiàn)的Bill Joy。
用匯編寫Delphi(Object Pascal)編譯器的Anders,還有各種編程語言的發(fā)明人, 就不一一列舉了。
這一層的人大部分都在默默地工作,構(gòu)建我們賴以生存的世界,他們深藏功與名,很少對外發(fā)出的聲音,因為即使他們發(fā)出了聲音,很多人也聽不懂,因為太專業(yè),太精深。
這一層的人有兩個特點:
(1) 對計算機是真的熱愛,否則不會探究到這么深的層次,并且能耐得住寂寞在這一層工作。
(2) 能力超強。因為這一層的工作性質(zhì)要求高性能,高可靠,需要和硬件打交道,需要處理巨多的細(xì)節(jié),一般人真搞不了。
2
中間件層很有趣,有些東西系統(tǒng)層不想管,應(yīng)用層又管不了,只好交個中間件來做。
傳統(tǒng)的中間件是像WebLogic, Websphere, JBoss,Tomcat, MQ這樣的東西, 如果我把他泛化一下,也可以把Docker, Elastic Search , Kafka , Spring , Zookeeper,Ngnix,Redis,Dubbo等給包括進來。 還可以包括一些公司的技術(shù)平臺部門所推出的,供整個公司試用的軟件和系統(tǒng)。
在這一層工作的人發(fā)出的聲音會有很多人側(cè)耳傾聽,因為用戶眾多,大家都能聽明白。
程序員對這一層的關(guān)注非常多,出了什么新技術(shù)?有什么新特性?布道師出來寫一些文章,“鼓吹”一番,熱鬧非凡。
對于程序員來說,能夠在這一層工作,也非常有成就感:
(1) 直接參與開發(fā),當(dāng)你開始做通用的組件和框架的時候,對于技術(shù)能力,抽象能力的要求相比應(yīng)用層就會大大提高。
(2) 對某個領(lǐng)域極為精通,成為專家,例如緩存、搜索、分布式、負(fù)載均衡等。
3
最后是應(yīng)用層,主要使用系統(tǒng)層和中間層的東西來實現(xiàn)業(yè)務(wù)邏輯,戲稱為增刪改查。
絕大部分人都在這一層工作,尤其是剛剛培訓(xùn)出來的同學(xué),肯定要在這一層呆上一段時間,也有可能一直呆下去,做一輩子。
千萬別小看這一層,它需要把業(yè)務(wù)需求直接轉(zhuǎn)化成技術(shù)實現(xiàn),是直接產(chǎn)生價值的。
比較“悲催”的是,應(yīng)用層的同學(xué)需要掌握下面兩層的知識,不一定精深,但是需要知道原理。
在這一層工作,關(guān)注點是如何更好更快地實現(xiàn)業(yè)務(wù)需求,及后續(xù)的變更,所以要有面向?qū)ο蟮脑O(shè)計,設(shè)計模式,敏捷開發(fā),持續(xù)集成,持續(xù)交付,DevOps,領(lǐng)域驅(qū)動開發(fā),TDD, Code Review等各種工程實踐。
這一層也有大師級別的人物,比如Martin Fowler,他寫了《分析模式》,《企業(yè)應(yīng)用架構(gòu)》,《重構(gòu)》等經(jīng)典書籍,特別擅長把業(yè)界的實踐總結(jié)成概念。
再比如Robert Martin,面向?qū)ο笤O(shè)計的大牛,他10多年前的書《敏捷軟件開發(fā):原則,模式與實踐》中提出的SOLID原則,至今仍然是OOD領(lǐng)域的指導(dǎo)原則。
為了把這一層的的事情做好,需要有個特殊的崗位來負(fù)責(zé)整個系統(tǒng)的設(shè)計,這個崗位就是:架構(gòu)師。
架構(gòu)師一般是資深的程序員,有豐富的實踐經(jīng)驗,知道技術(shù)的優(yōu)缺點,能根據(jù)具體的需求,設(shè)計合適的技術(shù)方案,建立合適的技術(shù)組件并連接起來,從而解決問題。
4
系統(tǒng)層,中間件層,應(yīng)用層并沒有高下之分,每一層都有足夠多的東西供你去探索,去創(chuàng)造。
如果你喜歡開發(fā)一些東西,讓很多程序員使用,可以考慮進入中間件層,比如公司的技術(shù)平臺部。
如果你真的喜歡系統(tǒng)層的東西,那就要選定方向,比如數(shù)據(jù)庫,然后深挖,現(xiàn)在國內(nèi)已經(jīng)有公司提供這樣的工作機會讓你去定制OS,定制數(shù)據(jù)庫,定制JVM。
如果你喜歡在應(yīng)用層解決實際業(yè)務(wù)問題,可以考慮向架構(gòu)師方向發(fā)展。
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號coderising獲取授權(quán)】
























