老王:我想成為公司的主力架構(gòu)師

要想成為主力架構(gòu)師,需知道以下知識

要想成為軟件開發(fā)的專家,需要我們完整了解軟件開發(fā)的流程,并在關(guān)鍵部分掌握豐富經(jīng)驗。

需要我們了解設(shè)計模式和算法的細(xì)微差別,同時遵循軟件開發(fā)的最佳實踐,包括創(chuàng)造性和思考力,為編程問題提供合適的解決方案。

實現(xiàn)這一目標(biāo)需要掌握服務(wù)器端開發(fā)、客戶端開發(fā)、DevOps運維、云計算、網(wǎng)頁設(shè)計、分布式系統(tǒng)、數(shù)據(jù)庫、編程規(guī)約、代碼管理、基礎(chǔ)設(shè)施管理、可擴(kuò)展性、安全性待方面的能力。

你可能未必全部掌握以上內(nèi)容。但是可以嘗試從表層了解絕大部分內(nèi)容,然后再深入掌握其中幾個技術(shù)。

以下給各位列出開發(fā)者缺乏的幾個主要技術(shù)能力,而技術(shù)管理者或架構(gòu)師在招聘這些職位時應(yīng)該熟悉檢查這些要素。

編碼規(guī)范

編碼規(guī)范有助于確保良好的開發(fā)實踐和產(chǎn)品開發(fā)。要了解一些最重要的編碼規(guī)約:

DRY(不要重復(fù)自己),SOLID , TDD , 防御性編程

設(shè)計模式

設(shè)計模式在軟件開發(fā)中是一種常見的,可重復(fù)使用的解決方案,可解決軟件中的常見問題。軟件開發(fā)者要了解一些常見的Design Partern是非常重要的,還有更重要的是要能夠識別給定問題的正確設(shè)計模式。如MVC、Singleton、DAO、Facade、Proxy、Adapter、Strategy和Absract Factory等一些一流開發(fā)者使用的設(shè)計模式。

服務(wù)器端開發(fā)

在較復(fù)雜的軟件系統(tǒng)中,后端會有各種各樣的邏輯。作為后端開發(fā)人員,處理應(yīng)該程序的業(yè)務(wù)邏輯就要面臨很多挑戰(zhàn)。任何開發(fā)人員都能夠編寫代碼,但是只有有經(jīng)驗的開發(fā)人員才可以寫出具有高性能、可伸縮性和可靠性都好的高質(zhì)量代碼。開發(fā)優(yōu)秀軟件的過程涉及的領(lǐng)域包括大量科學(xué)、數(shù)學(xué)、計算機(jī)等專業(yè)知識,有處理的思維和經(jīng)驗非常重要。

高速緩存

數(shù)據(jù)緩存的各種機(jī)制(文件、數(shù)據(jù)庫、內(nèi)存、反向代理、HTTP....)

內(nèi)存管理

Java有一個非常好的垃圾收集器,能夠自動管理內(nèi)存,清理未使用的對象并釋放一些內(nèi)存。但是一個資深的Java開發(fā)者需要對內(nèi)存的工作原因有一個非常透的理解,這樣才能寫出高性能和優(yōu)化的應(yīng)用程序。

了解以下概念至關(guān)重要:

堆棧,堆,強(qiáng)引用,弱引用,轉(zhuǎn)義引用,如何引用字符串,垃圾收集過程,meta空間,垃圾收集器類型。

異常處理

這是一個相當(dāng)重要,也是一個比較大的話題,我們后續(xù)會再寫關(guān)于它的專門文章?,F(xiàn)在,列出一些處理異常的一些良好實踐:

1、遵循“錯誤優(yōu)先”原則使軟件更可靠

2、不要捕捉無法恢復(fù)的異常

3、不要記錄完異常后,又將異常拋出來

4、選擇正確的層來處理異常(例如:DAO不知道是數(shù)據(jù)庫的故障如何處理,但是服務(wù)層可以知道)

5、如果無法從異常中恢復(fù),則優(yōu)先選擇未經(jīng)檢查的異常

IO操作

了解I/O操作的成本以及可能出現(xiàn)的不可預(yù)知的結(jié)果。

異步編程

使用線程實現(xiàn)Java中的異步編程,它也是Java平臺的基礎(chǔ)部分,有效使用并發(fā)對于構(gòu)建高性能應(yīng)用程序非常重要。

比如線程池、死鎖、生產(chǎn)者-消費者、原子性、不可變對象、信號量等等詞匯對資深開發(fā)人員來說不應(yīng)該是新東西。

批處理

在實際場景中,編寫批量作業(yè)非常普遍。通常執(zhí)行重要的任務(wù),有一些基本規(guī)則:

1、每個任務(wù)應(yīng)該按輸入、處理過程與輸出進(jìn)行劃分;

2、始終輪詢批量輸入數(shù)據(jù);

3、處理器應(yīng)該是線程安全;

4、產(chǎn)出物應(yīng)該為原子屬性;

5、存儲工作結(jié)果;

6、要考慮EIP模式。

分布式計算

在現(xiàn)代世界中,分布式計算是指使用分布式系統(tǒng)來解決計算問題。然而,分布式系統(tǒng)與傳統(tǒng)系統(tǒng)不同,具有非常高的復(fù)雜性。當(dāng)用戶開始高速增長資源消耗較大時,有分布式系統(tǒng)工作經(jīng)驗的工程師會在此時發(fā)揮作用。微服務(wù)軟件體系結(jié)構(gòu)是分布式計算以及分布式體系結(jié)構(gòu)所有的優(yōu)點與折衷的一個很好的例子。

而今,微服務(wù)是當(dāng)今軟件工程師之必備技能,就需要我們對分布式系統(tǒng)有豐富的經(jīng)驗。

比如容錯性,可用性與一致性,分布式事務(wù)/事件、同步與異步通信,分布式認(rèn)證,分布式應(yīng)用,共識應(yīng)用程序等非常重要。

數(shù)據(jù)庫

精確掌握與數(shù)據(jù)庫從通信到獲取數(shù)據(jù)中要涉及的所有成本,如連接握手、數(shù)據(jù)傳輸?shù)惹闆r。清楚了解原子事務(wù)以及如何確保數(shù)據(jù)一致性。因此,數(shù)據(jù)庫管理是軟件開發(fā)人員的必備技能。

數(shù)據(jù)庫用于管理數(shù)據(jù),這是一項艱巨的任務(wù),即使不考慮將業(yè)務(wù)邏輯添加到數(shù)據(jù)庫中。 在大型IT系統(tǒng)中,數(shù)據(jù)庫在安全性,可伸縮性,容量和可用性方面面臨著諸多挑戰(zhàn)。我們要考慮加密,復(fù)制,分片,大數(shù)據(jù)等問題。 了解數(shù)據(jù)庫的工作方式以及如何優(yōu)化它以及每項處理消耗的成本(例如,占用內(nèi)存、CPU數(shù))將有助于有效設(shè)計系統(tǒng)的數(shù)據(jù)庫管理。

DevOps

主力開發(fā)工程師要有能推動DevOps的文化理念和實踐的能力,在所有運維步驟中做到自動化,提高高質(zhì)量和高速度交付應(yīng)用程序與服務(wù)能力。代碼部署或配置基礎(chǔ)設(shè)施必須為自動化,且要靈活以及受到監(jiān)控。

一個強(qiáng)大的開發(fā)者應(yīng)該很好地了解從測試,發(fā)布到部署和基礎(chǔ)架構(gòu)管理的全開發(fā)生命周期。需要我們了解云計算,Linux,網(wǎng)絡(luò),容器,工程管理等。

代碼管理

鑒于代碼的重要性,只有主力開發(fā)人員才能夠掌握代碼生命周期,并力促軟件工程最佳實踐。 為此,需要你熟諳源代碼管理系統(tǒng),比如Git,對分支策略,版本控制,分布式修訂控制,另外還有代碼質(zhì)量保證工具,代碼間的通信和依賴管理,配置管理等有清晰的思維。

安全

Web安全是件很難處理的事情,一部分取決于許多外部參數(shù); 軟件工程師需要遵循構(gòu)建安全Web應(yīng)用程序的最佳實踐與準(zhǔn)則。

主力工程師需要對信息安全有較深的理解,不僅要如何避免構(gòu)建不安全與容易受攻擊的系統(tǒng),還需要知道保護(hù)用戶的隱私。

一個偉大的開發(fā)人員需要能夠創(chuàng)建一個指南來處理前10個Web應(yīng)用程序安全風(fēng)險。 在Web應(yīng)用程序中,我們有更多需要工程師關(guān)注安全威脅,其中包括如下:

1、上傳文件檢查;

2、密碼暴力破解;

3、會話到期處理;

4、會話來源驗證;

5、通過網(wǎng)絡(luò)安全通信;

6、安全的Cookie訪問;

7、用戶憑證處理。

前端開發(fā)

前端開發(fā)是軟件開發(fā)重要的一部分,如果您不知道程序設(shè)計與良好用戶體驗的關(guān)系,則不能成為主力軟件工程師。

在前端世界中,Javas和CSS是軟件工程師必備的。 在這兩方面掌握掌握并不容易,但了解它們的工作方式以及兩者如何與HTML連接一起,使我們能夠提供出色的用戶體驗非常重要。

若要領(lǐng)導(dǎo)一個前端團(tuán)隊,你需要知道的不僅僅是如何建立一個漂亮布局,要想前端開發(fā)做得更好,你需要了解如下:

1、瀏覽器作為引擎可以構(gòu)建什么?

2、如何開發(fā)響應(yīng)式網(wǎng)站;

3、如何提高網(wǎng)站的性能;

4、如何開發(fā)單頁面應(yīng)用程序;

5、如何建設(shè)現(xiàn)代高效的發(fā)展環(huán)境;

6、熟悉HTML5 API。

7、熟悉React.js或Vue.js框架

為了掌握這些技能,開發(fā)人員需能夠自我激勵,主動學(xué)習(xí)新技術(shù),并在職業(yè)生涯中給自己扣上很多帽子。 繼而不斷挑戰(zhàn)自我,然后更好地解決問題,這就是編程的本質(zhì)。 知識很重要,在某些復(fù)雜問題的情況下更是如此。在變化如此之快的IT技術(shù)領(lǐng)域中,知識的獲取在任何時候比我們已會的技能更為重要。

另外附上學(xué)習(xí)大綱圖

架構(gòu)師筑基

開源框架解析

高性能架構(gòu)

團(tuán)隊協(xié)作

微服務(wù)

B2C商城

那么高清完整大綱怎么獲取呢,還有相關(guān)學(xué)習(xí)視頻

# **讀者福利**

讀到這的朋友還可以免費領(lǐng)取一份唔我收集的Java核心知識體系文檔及更多Jav進(jìn)階知識筆記和視頻資料。

###資料領(lǐng)取方式:? **[點擊Java高級架構(gòu)群](http://qm.qq.com/cgi-bin/qm/qr?k=Bd4NyjGC-utCVPSktv_KlAJ5m7dG5ncs)**

![](https://upload-images.jianshu.io/upload_images/16449956-55386092e8b73460?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

**更多筆記分享**

![](https://upload-images.jianshu.io/upload_images/16449956-eafd5e0cf00e9c11?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![](https://upload-images.jianshu.io/upload_images/16449956-020b352d2053f923?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,306評論 2 89
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,014評論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,082評論 25 709
  • 記昨天,昨天忙了一整天,等晚上回到宿舍后莫名的多了一點憂郁感,不知從何而起,也就開始了反思自己。人總是患得患失,得...
    小咖Claire閱讀 141評論 0 0
  • 今天Cathy回悉尼工作啦、專業(yè)的top迷妹,滿世界追bigbang的演唱會。努力又獨立的學(xué)霸小丫頭,滿滿的青...
    爬上陽臺吹吹風(fēng)閱讀 132評論 0 0

友情鏈接更多精彩內(nèi)容