和大家介紹下我目前所從事的工作。
我目前從事分布式服務架構的設計與開發工作,在阿里的大數據平臺上進行應用程序開發。我們整個系統架構采用了“前后端分離”的思想,前端關注數據展現,后端關注數據生產,通過 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
+關注
關注
19文章
2967瀏覽量
104733 -
架構師
+關注
關注
0文章
47瀏覽量
4622
發布評論請先 登錄
相關推薦
評論