如何讓自己成為一個優秀的Java架構師,而不是碼農

Java 程序員 編程語言 軟件 Java技術進階 Java技術進階 2017-11-02

和大家介紹下我目前所從事的工作。

我目前從事分佈式服務架構的設計與開發工作,在阿里的大數據平臺上進行應用程序開發。我們整個系統架構採用了“前後端分離”的思想,前端關注數據展現,後端關注數據生產,通過 REST服務將前後端整合起來,所有的應用都是無狀態的,可以做到水平擴展。我們將整個系統拆分成許多“微服務”,服務之間通過統一的接口來調用,每個服務是通過容器技術進行隔離,此外服務可發佈到統一的服務管理平臺上,可通過該平臺監控每個服務的運行狀態與生命週期事件,併為服務調用者提供了服務發現的能力,可對服務進行平滑升級。

阿里有許多優秀的中間件與基礎服務,可以快速幫助我們搭建應用系統,而且這些技術在阿里內部全是開源的,大家可以通過源碼和文檔學習到很多有價值的經驗。阿里也提供了濃厚的技術氛圍,每位同學都非常專注於自己的工作領域,大家對工作一絲不苟,相互配合,方向一致。

我是如何走上技術這條路的?

2008 年大學畢業,我離開了母校武漢理工大學,在院長薛勝軍老師的推薦下,我來到了上海,這個對於我來說非常陌生的地方。我有幸加入了一家名為“動量軟件”的創業公司,這家公司的老闆曾經是亞信科技的 CTO,他也是普元軟件的創始人兼 CTO,他的名字叫黃柳青,他也是薛老師的大學同學。於是就這樣,我的老闆成為了我的老師,我習慣叫他黃老師,包括公司其他資深的同事也成為了我的老師,因為我很想他們身上學到更多有價值的東西。

剛開始工作的時候我學習了什麼是雲計算?什麼是 SaaS、PaaS、IaaS?我們花了三年時間開發了一款名為 ODE 的 PaaS 平臺,讓用戶可以在該平臺上量身定製自己的軟件,最終為客戶提供基於 SaaS 的產品。確實很驕傲,那時我們已經在做雲了,只是沒想到後來雲會在中國得到這麼好的市場,可能當時只有黃老師一個人想到了吧。

在 2008 年,我為公司拿回了“第一桶金”,這也是我從程序員轉向項目經理的里程碑。當時我帶領團隊遠赴深圳,為國信證券公司開發經紀人管理系統,這個項目對於我個人而言卻是一筆至高無上的財富,我開始學習如何與人打交道,如何做需求分析,如何將需求轉變為技術,如何帶領團隊小夥伴一起工作。學到了太多太多,但我依然選擇在我工作第四個年頭裡離開了動量軟件,我剛加入動量軟件的時候,公司只有 5 個人(包括老闆和前臺),當我離開動量軟件的時候,公司已經有 200 人左右了。感謝黃老師!我在他身上學到了很多,他的思想和態度直到今天都還在影響著我。

我的第二份工作還是選擇了我最熟悉的證券金融行業,同樣也是一家創業型公司,在這家公司裡我擔任了技術經理,管理了整個技術團隊,從項目的售前到售後,我都親自帶領團隊來完成。雖然在這家公司我只做了兩年,但在這短短的時間裡,我學會了如何提高開發效率、如何培養技術團隊、如何選拔技術人才、如何建立企業文化。但最後我發現了一個問題,越是想做好,越是很難做好,為了做成一件事情需要做很多的嘗試,做事情缺乏正確並有效的方法。

如何讓自己成為一個優秀的Java架構師,而不是碼農

回想我工作的前六年時間裡,我一直都是在創業公司裡成長,雖然可以快速學到東西,但似乎很難學到更加規範的做事方法。於是我選擇了新的工作機會,來到了 TCL 通訊,這是一家相當大的公司,公司的研發管理流程來源於法國阿里卡特公司。我在公司擔任 Java 架構師職位,也算是整個 Java 團隊的技術負責人,雖然團隊並不是特別地大。我在這家公司做了三年,學到了如何整合現有資源、如何按標準流程去做事、如何設計系統架構、如何進行異地工作、如何跨團隊工作、如何用英文來溝通。說實話,當時我沒有任何的工作壓力,可以按時上下班,從來都不會加班。雖然自己空閒的時間很多,但我並沒有選擇去浪費時間,而是開始寫點技術博客,也正是因為這些技術文章,才改變了我後續的職業發展道路。

Java 會在很長的一段時間內是主流,現在做Java Web開發都用哪些框架呢?

常用的比如Spring MVC、Struts2 等,國內的 JFinal、Nutz 等也不錯,當然Smart 也是一個很好的選擇。

有一定Web前端開發經驗的人,很多都會有這麼個想法:那些寫框架的人好厲害,什麼時候我才能寫一個自己的框架呢?有時候看看別人的框架代碼,又覺得很複雜,對此我有一些建議以及新人學習需要什麼基礎?分享一些好的方法。

抽象能力:對業務和技術進行抽象。業務抽象就是對需求進行分析後,能夠建立完美的實體類以及他們之間的聯繫。技術抽象是對整體架構進行一個分層,各層之間的交互。這至關重要,如果技術抽象能力不足,這會導致整個系統的架構不靈活,難以維護和擴展。

知識的深度:至少是某個領域的專家,比如消息隊列,activeMQ熟悉其源碼,知道其實現。

優秀的學習能力:對新的技術和前沿性的技術進行學習,使用它來解決工作中的業務問題。

那麼你該如何去做呢?我覺得可以從以下幾個步驟開始:

1: 紮實的JAVA 基礎,Think in java上介紹的內容都能理解,做到這一步恭喜成為了程序員。

2:熟練使用主流框架,如:mybatis,spring 等。

3:研究過至少一種以web框架的源碼,如spring mvc ,struts 等。

4:架構過或者參與過高併發系統設計,知道如何應對突發情況。

5:對自己所處的業務能夠根據自己的知識維度,提出優化建議或者預測其風險點。

其實能否成為架構師跟機遇有很大關係,比如一個程序員,以上都做到了,但是公司並沒有給他這個機會去做,一個真正架構的機會。因為之前的架構師不離職他就沒有機會,這就是現實!

技術人的歸途

走技術這條路,歸途是什麼?是否轉型又該如何抉擇呢?

至少有好幾條路線是可以走的,比如:深入技術、轉型做產品、轉型做管理等,需要根據自己的特長和性格來選擇,做自己喜歡的事情。

從技術轉管理,對自身的要求比較高,說具體點,需要看自己的情商,為人處世的經驗,與人溝通的技巧,自己也需要有足夠的胸懷,去包容一些事情,還需要自己有足夠的人格魅力去吸引別人,讓別人願意跟著你一起做事。管理有些東西是很難從書本上學到的,但一些經典的管理理論是必須要去學的。

相比較而言,繼續深入技術或者從技術轉產品會容易一些了,因為很多時候都不太需要與人打交道。

如果你想學習Java工程化、高性能及分佈式、高性能、深入淺出。性能調優、Spring,MyBatis,Netty源碼分析和大數據等知識點可以來找我。

而現在我就有一個平臺可以提供給你們學習,讓你在實踐中積累經驗掌握原理。主要方向是JAVA架構師。如果你想拿高薪,想突破瓶頸,想跟別人競爭能取得優勢的,想進BAT但是有擔心面試不過的,可以加我的Java架構進階群:668395460

注:加群要求

1、具有1-5工作經驗的,面對目前流行的技術不知從何下手,需要突破技術瓶頸的可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、如果沒有工作經驗,但基礎非常紮實,對java工作機制,常用設計思想,常用java開發框架掌握熟練的,可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

6.小號加群一律不給過,謝謝。

轉發此文章請帶上原文鏈接,否則將追究法律責任!

相關推薦

推薦中...