從初級「碼農」到高級「架構」,個人成長之路(Java向)

從初級「碼農」到高級「架構」,個人成長之路(Java向)

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

2008 年大學畢業,我離開了母校武漢理工大學,在院長老師的推薦下,我來到了上海,這個對於我來講很是陌生的地方。我有幸加入了一家創業公司,剛開始工做的時候我學習了什麼是雲計算?什麼是 SaaS、PaaS、IaaS?咱們花了三年時間開發了一款PaaS 平臺,讓用戶能夠在該平臺上量身定製本身的軟件,最終爲客戶提供基於 SaaS 的產品。確實很驕傲,那時咱們已經在作雲了,只是沒想到後來雲會在中國獲得這麼好的市場。前端

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

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

一個架構的成長

合格的工程師須要 1~3 年時間,其典型特徵是「在別人的指導下完成開發」。工程師階段是最原始的「基礎技能積累階段」,主要積累基礎知識,包括編程語言、編程工具、各種系統的基本使用。web

高級工程師須要 2~5 年時間,其典型特徵是「獨立完成開發」,包括需求分析、方案設計、編碼實現,其中需求分析和方案設計已經包含了「判斷」和「選擇」,只是範圍相對來講小一些,更可能是在已有架構下進行設計。spring

從普通工程師成長爲高級工程師,主要須要「積累方案設計經驗」,簡單來講就是業務當前用到的相關技術的設計經驗。包括:表設計經驗、緩存設計經驗、業務流程設計經驗、接口設計經驗等。當接到一個業務需求的時候,高級工程師可以組合這些設計經驗,最終完成業務需求。編程

技術專家須要 4~8 年時間,其典型的特徵是「某個領域的專家」,通俗地講,只要是這個領域的問題,技術專家均可以解決。設計模式

從高級工程師成長爲技術專家,主要須要「拓展技術寬度」,由於一個「領域」必然會涉及衆多的技術面。要成爲一個 Java 開發專家,須要掌握 Java 多線程、JDBC、Java 虛擬機、面向對象、設計模式、Netty、Elasticsearch、Memcache、Redis、MySQL 等衆多技術。緩存

初級架構師須要 5~10 年時間,其典型特徵就是可以「獨立完成一個系統的架構設計」,能夠是從 0 到 1 設計一個新系統,也能夠是將架構從 1.0 重構到 2.0。初級架構師負責的系統複雜度相對來講不高,例如後臺管理系統、某個業務下的子系統、100 萬 PV 量級的網站等。mybatis

初級架構師和技術專家的典型區別是:架構師是基於完善的架構設計方法論的指導來進行架構設計,而技術專家更多的是基於經驗進行架構設計。簡單來講,即便是一樣一個方案,初級架構師可以清晰地闡述架構設計的理由和緣由,而技術專家可能就是由於本身曾經這樣作過,或者看到別人這樣作過而選擇設計方案。多線程

從技術專家成長爲初級架構師,最主要的是造成本身的「架構設計方法論

中級架構師須要 8 年以上時間,其典型特徵是「可以完成複雜系統的架構設計」,包含高性能、高可用、可擴展、海量存儲等複雜系統,例如設計一個和 Kafka 性能匹敵的消息隊列系統、將業務改造爲異地多活、設計一個總共 100 人蔘與開發的業務系統等。中級架構師與初級架構師的典型區別在於系統複雜度的不一樣。

從初級架構師成長爲中級架構師,最關鍵的是「技術深度和技術理論的積累

高級架構師須要 10 年以上時間,其典型特徵是「創造新的架構模式

高級架構師與中級架構師相比,典型區別在於「創造性」,高級架構師可以創造新的架構模式,開創新的技術潮流。

從初級「碼農」到高級「架構」,個人成長之路(Java向)

如何讓本身成爲一個優秀的Java架構師,而不是碼農

回想我工做的前六年時間裏,我一直都是在創業公司裏成長,雖然能夠快速學到東西,但彷佛很難學到更加規範的作事方法。因而我選擇了新的工做機會,來到了 TCL 通信,這是一家至關大的公司,公司的研發管理流程來源於法國阿里卡特公司。我在公司擔任 Java 架構師職位,也算是整個 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向)

從初級「碼農」到高級「架構」,個人成長之路(Java向)

技術人的歸途

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

至少有好幾條路線是能夠走的,好比:深刻技術、轉型作產品、轉型作管理等,須要根據本身的特長和性格來選擇,作本身喜歡的事情。

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

相比較而言,繼續深刻技術或者從技術轉產品會容易一些了,由於不少時候都不太須要與人打交道。

相關文章
相關標籤/搜索