03.06 java架構師主要是幹什麼的,要注意什麼?

用戶8528787028267


Java架構師當然是專注於Java開發架構設計的工程師。這裡包含兩層意思:

1、Java架構師限定了工程師的專業範圍,專注於Java開發;

2、Java架構師明確了工作職責,主要從事Java架構設計。

如果往深一層探討,則需要明白,什麼是Java開發,Java架構師的主要職責是什麼?

什麼是Java

Java是一種程序設計語言以及該語言運行平臺的總稱。是1995年在印度一個生產咖啡的島——爪哇島上被JamesGosling等幾位工程師編寫的,因此命名為Java。Java可以編寫跨平臺應用軟件以及面向對象的程序設計語言等。Java語言是目前比較主流的服務器端編程語言,其主要有面向對象、語法簡單、平臺無關性、支持多線程、安全性高等特點,因此,在複雜的業務服務對象編程中,大多選擇Java語言為開發語言。

通過Java開發的程序,需要通過Java虛擬機(JVM)和Java API(一套獨立於操作系統的應用程序標準接口)編譯運行,Java程序的運行機制如下圖:

因此,Java架構設計師就需要深刻理解Java程序語法規則、編譯過程,才可能設計出性能優異的Java程序。


Java架構師的主要職責

一般Java架構設計師主要完成以下工作:

  1. 負責系統及相關產品架構設計(核心工作),對於部分沒有產品經理、項目經理、或者需求分析師的企業,Java架構設計師一般還兼具系統需求分析的職責;

  2. 根據架構設計,做好Java開發整體開發計劃及開發工作量評估;

  3. 對java開發工作在架構設計基礎上開展技術指導;

  4. Java架構師還需要負責團隊Java開發人才培養,對Java開發人員進行專題培訓;

  5. 評估Java開發的過程風險,尤其是技術風險,對部分前沿技術進行攻關,保證開發質量;

從以上職責可以看出,Java架構師需要具有相當強的Java技術實戰和攻關能力,在此基礎上,具有進度控制、需求分析、培訓講解、風險把控等能力。因此,一般Java架構師至少工作滿5年以上,獨立作為開發骨幹承擔過項目開發工作,同時,技術視野寬廣,具有很強的溝通協調能力。


作為Java架構師,需要注意的事項包括:

1、良好的文檔化能力

任何想法如果只是口頭溝通,不能形成書面文字,知識傳遞效果將大打折扣!Java架構師更需要將系統架構設計通過文檔的方式圖文並茂的展示出來;


2、Java架構師需要具有廣度的前沿知識體系

只要是涉及到系統開發的技術體系(不侷限於java),Java架構師都應該去了解(但不一定需要精通),同時需要捋清楚前沿知識的可用性、可靠性,並分析哪些新技術可以應用到架構設計中;


3、需要注意溝通協調

溝通能力和協調能力是架構師必備的主要能力之一,將架構設計形成文檔之後,設計人員和開發人員對架構設計的理解是不盡相同的,需要架構師在項目開發過程中不斷的修正,並做好溝通協調,才能達到架構設計的初衷。


4、設計系統架構既要從技術出發,還要兼顧項目本身的特點

在設計架構師,需要考慮到採用新技術、新方法、新架構,但全新的技術帶來的是穩定性風險,同時新技術上手時間較長,投入資金比較大,時間要求也會拉長,因此,需要“通盤考慮”,最先進的不一定是最適合的!最合適的才是最好的!


IT駱駝


一、什麼是架構師?

1、從內心講我真的不想回答架構具體需要做什麼,架構師應該具體負責什麼。因為從實際情況看,在不同的系統層級,不同的需求下架構師的職責也會不同;從不同的技術角度看,架構師又是個變色龍——一時是技術的大拿,一時是技術的規劃者,一時是技術團隊的指揮者。

2、那麼,該如何回答“什麼是架構,什麼是架構師”這個問題呢?這或許需要先搞清楚另外一個問題——一名程序員是如何走上架構師之路的?我從許多朋友那裡瞭解到了很多實際案例,程序員走上架構師之路,總結起來最多的原因是因為他早前代碼寫的好。

3、那麼,代碼寫的好就是架構嗎?顯然不是。代碼寫的好只是表象,做所有事情都需要規劃,尤其是一個複雜的軟件系統,這更需要規劃,否則可能連一行代碼都寫不出。複雜的軟件系統一定會需要做很多抽象設計、對象規劃、接口規劃等準備動作。也就是“上一輩程序員”口中所說的:詳細設計。做架構主要的事情也依舊如此,需要對整個系統進行系統的規劃:模塊、通訊、邊界、擴展、技術下沉等工作。這樣的規劃完成之後項目方能正常跑起來。

4、當然,架構也不僅僅是規劃,還要做的另一件大事就是技術識別。識別出系統中技術的難易區域,並分解複雜技術,使之成為一個個技術的黑盒子,在此之上再進行新的技術規劃,使整個系統從技術角度來看是分層次的,從難到易,從大到小,但各層之間又是互相的黑盒。這也常說的讓系統模塊間達到“雞犬相聞老死不相往來“的狀態。

5、一個架構師需要足夠的技術的寬度。從軟件到硬件,從開發到測試,從運維到安全等都需要面面俱到的瞭解。當然你可能不是這單方面領域裡面最深入的人,但是你需要知道它們是怎麼做的(不僅僅是皮毛,要深入原理),並且要知道它們組合起來是個什麼樣的東西。技術面也足夠寬了之後,是不是就會成為完美架構師呢?

6、答案是不會,因為還有新的問題要過來。這次的問題諸如“系統在未來的運行過程中運維需要做什麼?”“系統在未來的功能迭代中如何更方便的擴展?”“系統應該怎麼修改?”“系統應該被怎麼樣升級?”這時的你是不時很困惑?是不是感覺這個架構的世界好長啊,怎麼像保姆一樣什麼都要管。但仔細想想這是應該的,因為一個系統初次開發並交付只是它生命週期中的一小部分而已。後面的維護、改造、升級才佔了整個軟件生命週期的絕大部分時間。你是它的架構設計者,是它靈魂之所在,你當然應該設計好它的未來。這也是架構師做好的最後一件事情:系統未來的設計。

二、架構師的定義?

個人覺得架構師需要具有以下幾特點:

1.知識廣度:需要知道主流技術為什麼誕生,能解決什麼問題?如果同一種業務用不用的技術來實現,會有什麼哪些優缺點?比如:流行的ORM框架Mybatis 和 hibernate ,他們之間的優缺點是什麼?要有清晰的認識會能在技術造型時做出正確的決定。

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

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

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

三、那麼你該如何去做?

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

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

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

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

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

四、該掌握哪些技術呢?

微服務架構

開源框架源碼解析

高性能架構技術

設計模式

作者:慕容千語鏈接:https://www.jianshu.com/p/7bdf1f86fde0來源:簡書著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

物萬生三


想成為java架構師,首先你自身得是一個高級java攻城獅,會使用各種框架並且很熟練,且知曉框架實現的原理。

比如,你要知道,jvm虛擬機原理、調優;懂得jvm能讓你寫出的代碼性能更優化;還有池技術:什麼對象池、連接池、線程池等等。

還有java反射技術,雖然是寫框架必備的技術,但有嚴重的性能問題,替代方案java字節碼技術,nio 這說不說無所謂,需要注意的是"直接內存"的特點,使用場景;java多線程同步異步;java各種集合對象的實現原理,瞭解這些可以讓你在解決問題時選擇合適的數據結構,高效的解決問題,比如hashmap的實現原理,甚至許多五年以上經驗的人都弄不清楚!

還有很多,比如,為什擴容時有性能問題?不弄清楚這些原理,不知道問題根本,你就就寫不出高效的代碼!還會很傻很天真的認為自己是對的,殊不知是孤芳自賞,自命不凡而已;總而驗資,言而總之,越基礎的東西越重要!許多工作了很多年的程序猿認為自己會用它們寫代碼了,其實僅僅是知其實僅僅是知道如何調用api而已,知其然不知其所以然,離會用還差的遠。

關於技能的提升給一些建議

1.提升自己的英語水平,此重要性是不言而喻的,現在很多的新技術中文檔少之又少,作為一名架構師總不能去看翻譯文吧。

2.多看一些溝通方面的數據,流暢的溝通利用你成為一名成功的架構師。

3.有機會參加PMP考試並取得證書,擁有項目管理方向的優勢就是你作為一名架構師的優勢。架構師其實從某種意義上就是一種角色,而不是一種職位。一定要時時刻刻保持空杯心態。一定要有一顆保持飢渴學習和耐得住寂寞的赤子之心。

4.我們知道當前的技術節奏非常的快,一定要好好的利用自己的碎片時間去學習,去了解新技術,千萬不要讓自己技術落伍。

5.多鍛鍊自己在大眾環境下的演講和PTT的能力。

6.與不同的技術、編程語言、設計模式和結構等(甚至是它並沒有在日常中給予你直接的幫助)打交道。你永遠都不知道這些知識是否會在未來派上用場,但是對你絕對是有益無害。

7.有機會多做知識分享,因為你一旦分享了知識,你就會對這門技術有深刻的印象,同時也

能樹立在同事中的良好的技術形象,從而贏得更多的專家影響力而不是職位影響力。


正道人間


1、負責公司系統的軟件架構設計、業務建模等相關工作,以及與技術支持部門合作設計系統軟硬件架構;

2、協助業務部門制定項目計劃和控制項目進度;

3、組織團隊人員的培訓、技術指導以及技術難點突破工作;

4、負責團隊技術選型、技術之間的差別以及技術的發展趨勢分析、採用該技術的成本分析、技術與具體應用的偶合程度分析、研發過程風險分析以及如何迴避風險;

5、小組成員開發工作管理,包括工作計劃的制定、執行和跟蹤;

6、協調小組成員的工作,使得組內成員高效的協同工作;

7、進行模塊設計,包括模塊概要&詳細設計、模塊數據庫設計;


8、 模塊的開發框架搭建、接口設計;

9、 負責工程中主要功能的代碼實現;

10、 解決模塊編碼過程中的遇到的關鍵細節問題;


休閒挨踢男


大公司主要是做一個項目的技術方案設計,疑難問題攻堅或者核心代碼的實現。

小公司是鬍子眉毛一把抓,什麼都要做,什麼都要管。


架構師筆記


除了解決項目痛點難點主要還是能圍繞高內聚低耦合設計原則設計項目架構,讓架構有更好的維護性,拓展性。


斜槓程序員


主要負責公司系統在技術方面或者業務方面的架構,說白了就是指導江上的[大笑]


分享到:


相關文章: