1. 程式人生 > >2016版的java程式設計師發展方向建議

2016版的java程式設計師發展方向建議



做為目前最全面實用的後端應用開發語言,java值得每個新人用兩年時間踏實地把自己的程式碼質量提高上去。簡單來說就是,程式碼寫給人看,比寫給機器看更重要,要像寫作一樣組織好程式碼的表達,尤其是在業務邏輯複雜的情況下。之後,才是學新技術,尋找新的發展方向。


而工作數年,已經crud滾瓜爛熟,一般業務需求也沒什麼壓力的java碼農,現在有了不同的進取選擇,我大致總結一下:


1、技術型架構師
這是傳統的架構師,你得是一個技術狂人,願意去鑽研java的深層知識,對各類系統執行時的高大上的中介軟體和框架有深入研究,明白其原理,能實際操作運用。這是一條更需要忘我投入的路線,能讓你直達一線大企的架構師崗位,就是那種年薪三五十萬,加班加到顧不上家的工作。
這是傳統意義上的技術牛人,適合去大型網際網路企業,銀行等一些壟斷行業大型國企,或者在某個專業領域有高要求的公司。這樣的人除了最頂尖的若干,在企業裡很少會有高存在感,更多是做為一個工資高,露面少,默默支撐企業的神祕人物存在,他所做的東西外人看不懂。
除了那些開發中要用到的分散式技術、快取、佇列、服務治理,很大程度上技術型架構師還要掌握許多運維和系統層面的技術,你要把各種各樣的軟體在伺服器上佈署調優,確保穩定,還要考慮到大規模叢集的自動化管理,持續整合,容災,或許還要深入到虛擬化技術,docker等。技術要連貫,從開發到測試到上線後的高可用,你都要負責。
而最後做為一個架構師,你還不能不考慮業務,正所謂脫離業務談架構都是耍流記氓。



2、業務型架構師
這個崗位向產品經理方向在靠近,要去傾聽使用者的想法,去合理地給出技術解決方案,做出更具可用性,體驗更好的應用。尤其要關注在需求轉換成程式碼實現過程中的合理性,業務領域建模,程式碼分層和解耦是重中之重,還有資料庫的表設計也是重點,你寫不出好的分散式框架,但不能不懂分散式資料庫下的表設計原則。
之後就是考慮技術在團隊中的學習成本,推廣成效,分工協作。
雖然帶著架構師的名頭,但是相對技術深度的要求相較於傳統意義上的JAVA架構師已經大大降低,因為這幾年各種公有云技術已經異軍突起,例如阿里雲,每個月花幾千塊錢所能提供的便捷、效能、安全、擴充套件能力,遠遠超過了一個企業花個幾十上百萬的軟硬體和運維人力成本去搭建的高可用伺服器,更何況多數企業根本不可能在運維上花那麼多錢,很多企業只是java程式設計師兼著去管伺服器,然後幾個網管配置好網路和系統罷了。公有云還可以為你提供叢集容器,分散式資料庫,快取,MQ,搜尋,日誌等等開發中會用到的中介軟體和各類服務,大大降低了技術使用門檻,幾乎封死了中小企業自建伺服器的念頭。
所以我建議,如果在運維上沒有數百萬級的投入,超高的千萬級使用者量,或者需求甲方強制要求,業務型架構師可以將對底層技術研究的精力抽到產品方向,對於底層技術,只要掌握其使用原則和理解衡量的能力即可,這樣的你能在大多數中小企業中爆發更大的價值,跟對了人就能創業有成。


3、高大上技術方向
這是一個比架構師又更鑽入到專業領域的方向,比如大資料處理、人工智慧等。技術型架構師大致上還是為了常規業務服務的,多數需求來源於直接響應終端使用者的操作,但這個方向則是要在使用者所不能覺察的地方,去做技術的主動產出。比如那些垃圾網站上無所不見的推薦類廣告,背後可隱藏著大量的行為分析和資料處理演算法。
朝這個方向發展的人就業方向與技術型架構師是相似的,只是會更專注專長而不是全能。如果你有名校高學歷在這個領域會更有幫助,有工作經驗的人往往會勝在業務、管理、運營等非技術層面技能,而這個離常規業務更遠的方向,自然給了閉門研究的人縮小工作經驗差距的機會。技術宅、理工男不妨考慮這個方向。


4、全棧工程師
嚴格來說,純粹的java程式設計師是成不了全棧工程師的,不過,寫java web的人,一般都會點javascript,這就成了一個java程式設計師邁向全踐的突破口。
雖然全棧工程師有著許多不同的解讀,但我們可以把它簡單理解為能開發在各種客戶端上執行的應用,前後端開發包辦的程式設計師。
javascript這兩年大出風頭啊,nodejs,react,angularjs等,以及許多其它框架和庫,就跟java領域mvc大熱,框架百花齊放的年代一般,正處於百家爭鳴的時代。現在js可以用於開發android,ios原生應用,html5 web應用,node.js服務端應用,還有在遊戲引擎中可以用它來開發跨平臺的遊戲。
要不是它的語法對正統的面嚮物件語言程式設計師來說頗顯另類,恐怕會更加勢不可擋,而如今es6規範的正式登場,也在讓js的語法更像java,再加上一些如TypeScript這樣的擴充套件技術,類、繼承、介面、註解等都已經能在js上實現,前景確是一片光明。相對來說,服務端開發中js的優勢的確不多,算是它的短板之一,而前端開發則是js強勢,身為java程式設計師,正好彌補了這個短板,如果精通了js,更算得上是全棧程式設計師了。
全棧程式設計師是什麼公司都能去的,小公司裡你是萬金油甚至技術領袖,大公司裡你依託突出的技能主職,再借助你的全能可以為你的晉升佔到優勢。
全棧工程師相對業務型架構師要更偏向前端,對於應用實現更接地氣。


5 安卓程式設計師
說實話,我認為這個路線不如以js切入前端,侷限性畢竟太高,又有html5的虎視眈眈,長遠來看受限於安卓平臺,轉型安卓應該算是一種中短期的風險投資,能保你幾年,也能讓當前薪水更上一個臺階,但終究現在轉職加入已經失去先機了,如房價翻了幾翻才咬牙加入炒房大軍,風險未知。


就我個人來說,我的路線是從業務型架構師正轉向全棧工程師,我喜歡講求效率和價效比,這兩個方向對我來說相當貼合二八原則,用20%的深度廣泛涉獵,能達成眾多80%的成就。說難聽點,應該叫對技術的懶惰和喜新厭舊吧。


技術大牛這類稱呼我認為技術型架構師和高大上方向的程式設計師更配得上。我覺得現在三十五歲才是現在技術市場上真正的分水嶺,不是三十。如果要邁過35的檻,以上幾個方向是java程式設計師的基本出路(轉職做純管理、產品經理、移動開發等不算在內),當然轉型要儘早,javaee基礎打牢,然後儘可能在工作5年後進入其中一個方向的崗位,是當前技術人員長遠可期的好選擇。