更新時(shí)間:2019-08-02 10:06:23 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2710次
要想成為主力架構(gòu)師,需知道以下知識(shí)
要想成為軟件開(kāi)發(fā)的專家,需要我們完整了解軟件開(kāi)發(fā)的流程,并在關(guān)鍵部分掌握豐富經(jīng)驗(yàn)。
需要我們了解設(shè)計(jì)模式和算法的細(xì)微差別,同時(shí)遵循軟件開(kāi)發(fā)的最佳實(shí)踐,包括創(chuàng)造性和思考力,為編程問(wèn)題提供合適的解決方案。
實(shí)現(xiàn)這一目標(biāo)需要掌握服務(wù)器端開(kāi)發(fā)、客戶端開(kāi)發(fā)、DevOps運(yùn)維、云計(jì)算、網(wǎng)頁(yè)設(shè)計(jì)、分布式系統(tǒng)、數(shù)據(jù)庫(kù)、編程規(guī)約、代碼管理、基礎(chǔ)設(shè)施管理、可擴(kuò)展性、安全性待方面的能力。
你可能未必全部掌握以上內(nèi)容。但是可以嘗試從表層了解絕大部分內(nèi)容,然后再深入掌握其中幾個(gè)技術(shù)。
以下給各位列出開(kāi)發(fā)者缺乏的幾個(gè)主要技術(shù)能力,而技術(shù)管理者或架構(gòu)師在招聘這些職位時(shí)應(yīng)該熟悉檢查這些要素。
編碼規(guī)范
編碼規(guī)范有助于確保良好的開(kāi)發(fā)實(shí)踐和產(chǎn)品開(kāi)發(fā)。要了解一些最重要的編碼規(guī)約:
DRY(不要重復(fù)自己),SOLID,TDD,防御性編程
設(shè)計(jì)模式
設(shè)計(jì)模式在軟件開(kāi)發(fā)中是一種常見(jiàn)的,可重復(fù)使用的解決方案,可解決軟件中的常見(jiàn)問(wèn)題。軟件開(kāi)發(fā)者要了解一些常見(jiàn)的DesignPartern是非常重要的,還有更重要的是要能夠識(shí)別給定問(wèn)題的正確設(shè)計(jì)模式。如MVC、Singleton、DAO、Facade、Proxy、Adapter、Strategy和AbsractFactory等一些一流開(kāi)發(fā)者使用的設(shè)計(jì)模式。
服務(wù)器端開(kāi)發(fā)
在較復(fù)雜的軟件系統(tǒng)中,后端會(huì)有各種各樣的邏輯。作為后端開(kāi)發(fā)人員,處理應(yīng)該程序的業(yè)務(wù)邏輯就要面臨很多挑戰(zhàn)。任何開(kāi)發(fā)人員都能夠編寫(xiě)代碼,但是只有有經(jīng)驗(yàn)的開(kāi)發(fā)人員才可以寫(xiě)出具有高性能、可伸縮性和可靠性都好的高質(zhì)量代碼。開(kāi)發(fā)優(yōu)秀軟件的過(guò)程涉及的領(lǐng)域包括大量科學(xué)、數(shù)學(xué)、計(jì)算機(jī)等專業(yè)知識(shí),有處理的思維和經(jīng)驗(yàn)非常重要。
高速緩存
數(shù)據(jù)緩存的各種機(jī)制(文件、數(shù)據(jù)庫(kù)、內(nèi)存、反向代理、HTTP....)
內(nèi)存管理
Java有一個(gè)非常好的垃圾收集器,能夠自動(dòng)管理內(nèi)存,清理未使用的對(duì)象并釋放一些內(nèi)存。但是一個(gè)資深的Java開(kāi)發(fā)者需要對(duì)內(nèi)存的工作原因有一個(gè)非常透的理解,這樣才能寫(xiě)出高性能和優(yōu)化的應(yīng)用程序。
了解以下概念至關(guān)重要:
堆棧,堆,強(qiáng)引用,弱引用,轉(zhuǎn)義引用,如何引用字符串,垃圾收集過(guò)程,meta空間,垃圾收集器類型。
異常處理
這是一個(gè)相當(dāng)重要,也是一個(gè)比較大的話題,我們后續(xù)會(huì)再寫(xiě)關(guān)于它的專門(mén)文章。現(xiàn)在,列出一些處理異常的一些良好實(shí)踐:
1、遵循“錯(cuò)誤優(yōu)先”原則使軟件更可靠
2、不要捕捉無(wú)法恢復(fù)的異常
3、不要記錄完異常后,又將異常拋出來(lái)
4、選擇正確的層來(lái)處理異常(例如:DAO不知道是數(shù)據(jù)庫(kù)的故障如何處理,但是服務(wù)層可以知道)
5、如果無(wú)法從異常中恢復(fù),則優(yōu)先選擇未經(jīng)檢查的異常
IO操作
了解I/O操作的成本以及可能出現(xiàn)的不可預(yù)知的結(jié)果。
異步編程
使用線程實(shí)現(xiàn)Java中的異步編程,它也是Java平臺(tái)的基礎(chǔ)部分,有效使用并發(fā)對(duì)于構(gòu)建高性能應(yīng)用程序非常重要。
比如線程池、死鎖、生產(chǎn)者-消費(fèi)者、原子性、不可變對(duì)象、信號(hào)量等等詞匯對(duì)資深開(kāi)發(fā)人員來(lái)說(shuō)不應(yīng)該是新東西。
批處理
在實(shí)際場(chǎng)景中,編寫(xiě)批量作業(yè)非常普遍。通常執(zhí)行重要的任務(wù),有一些基本規(guī)則:
1、每個(gè)任務(wù)應(yīng)該按輸入、處理過(guò)程與輸出進(jìn)行劃分;
2、始終輪詢批量輸入數(shù)據(jù);
3、處理器應(yīng)該是線程安全;
4、產(chǎn)出物應(yīng)該為原子屬性;
5、存儲(chǔ)工作結(jié)果;
6、要考慮EIP模式。
分布式計(jì)算
在現(xiàn)代世界中,分布式計(jì)算是指使用分布式系統(tǒng)來(lái)解決計(jì)算問(wèn)題。然而,分布式系統(tǒng)與傳統(tǒng)系統(tǒng)不同,具有非常高的復(fù)雜性。當(dāng)用戶開(kāi)始高速增長(zhǎng)資源消耗較大時(shí),有分布式系統(tǒng)工作經(jīng)驗(yàn)的工程師會(huì)在此時(shí)發(fā)揮作用。微服務(wù)軟件體系結(jié)構(gòu)是分布式計(jì)算以及分布式體系結(jié)構(gòu)所有的優(yōu)點(diǎn)與折衷的一個(gè)很好的例子。
而今,微服務(wù)是當(dāng)今軟件工程師之必備技能,就需要我們對(duì)分布式系統(tǒng)有豐富的經(jīng)驗(yàn)。
比如容錯(cuò)性,可用性與一致性,分布式事務(wù)/事件、同步與異步通信,分布式認(rèn)證,分布式應(yīng)用,共識(shí)應(yīng)用程序等非常重要。
數(shù)據(jù)庫(kù)
精確掌握與數(shù)據(jù)庫(kù)從通信到獲取數(shù)據(jù)中要涉及的所有成本,如連接握手、數(shù)據(jù)傳輸?shù)惹闆r。清楚了解原子事務(wù)以及如何確保數(shù)據(jù)一致性。因此,數(shù)據(jù)庫(kù)管理是軟件開(kāi)發(fā)人員的必備技能。
數(shù)據(jù)庫(kù)用于管理數(shù)據(jù),這是一項(xiàng)艱巨的任務(wù),即使不考慮將業(yè)務(wù)邏輯添加到數(shù)據(jù)庫(kù)中。在大型IT系統(tǒng)中,數(shù)據(jù)庫(kù)在安全性,可伸縮性,容量和可用性方面面臨著諸多挑戰(zhàn)。我們要考慮加密,復(fù)制,分片,大數(shù)據(jù)等問(wèn)題。了解數(shù)據(jù)庫(kù)的工作方式以及如何優(yōu)化它以及每項(xiàng)處理消耗的成本(例如,占用內(nèi)存、CPU數(shù))將有助于有效設(shè)計(jì)系統(tǒng)的數(shù)據(jù)庫(kù)管理。
DevOps
主力開(kāi)發(fā)工程師要有能推動(dòng)DevOps的文化理念和實(shí)踐的能力,在所有運(yùn)維步驟中做到自動(dòng)化,提高高質(zhì)量和高速度交付應(yīng)用程序與服務(wù)能力。代碼部署或配置基礎(chǔ)設(shè)施必須為自動(dòng)化,且要靈活以及受到監(jiān)控。
一個(gè)強(qiáng)大的開(kāi)發(fā)者應(yīng)該很好地了解從測(cè)試,發(fā)布到部署和基礎(chǔ)架構(gòu)管理的全開(kāi)發(fā)生命周期。需要我們了解云計(jì)算,Linux,網(wǎng)絡(luò),容器,工程管理等。
代碼管理
鑒于代碼的重要性,只有主力開(kāi)發(fā)人員才能夠掌握代碼生命周期,并力促軟件工程最佳實(shí)踐。為此,需要你熟諳源代碼管理系統(tǒng),比如Git,對(duì)分支策略,版本控制,分布式修訂控制,另外還有代碼質(zhì)量保證工具,代碼間的通信和依賴管理,配置管理等有清晰的思維。
安全
Web安全是件很難處理的事情,一部分取決于許多外部參數(shù);軟件工程師需要遵循構(gòu)建安全Web應(yīng)用程序的最佳實(shí)踐與準(zhǔn)則。
主力工程師需要對(duì)信息安全有較深的理解,不僅要如何避免構(gòu)建不安全與容易受攻擊的系統(tǒng),還需要知道保護(hù)用戶的隱私。
一個(gè)偉大的開(kāi)發(fā)人員需要能夠創(chuàng)建一個(gè)指南來(lái)處理前10個(gè)Web應(yīng)用程序安全風(fēng)險(xiǎn)。在Web應(yīng)用程序中,我們有更多需要工程師關(guān)注安全威脅,其中包括如下:
1、上傳文件檢查;
2、密碼暴力破解;
3、會(huì)話到期處理;
4、會(huì)話來(lái)源驗(yàn)證;
5、通過(guò)網(wǎng)絡(luò)安全通信;
6、安全的Cookie訪問(wèn);
7、用戶憑證處理。
前端開(kāi)發(fā)
前端開(kāi)發(fā)是軟件開(kāi)發(fā)重要的一部分,如果您不知道程序設(shè)計(jì)與良好用戶體驗(yàn)的關(guān)系,則不能成為主力軟件工程師。
在前端世界中,Javase和CSS是軟件工程師必備的。在這兩方面掌握掌握并不容易,但了解它們的工作方式以及兩者如何與HTML連接一起,使我們能夠提供出色的用戶體驗(yàn)非常重要。
若要領(lǐng)導(dǎo)一個(gè)前端團(tuán)隊(duì),你需要知道的不僅僅是如何建立一個(gè)漂亮布局,要想前端開(kāi)發(fā)做得更好,你需要了解如下:
1、瀏覽器作為引擎可以構(gòu)建什么?
2、如何開(kāi)發(fā)響應(yīng)式網(wǎng)站;
3、如何提高網(wǎng)站的性能;
4、如何開(kāi)發(fā)單頁(yè)面應(yīng)用程序;
5、如何建設(shè)現(xiàn)代高效的發(fā)展環(huán)境;
6、熟悉HTML5API。
7、熟悉React.js或Vue.js框架
為了掌握這些技能,開(kāi)發(fā)人員需能夠自我激勵(lì),主動(dòng)學(xué)習(xí)新技術(shù),并在職業(yè)生涯中給自己扣上很多帽子。繼而不斷挑戰(zhàn)自我,然后更好地解決問(wèn)題,這就是編程的本質(zhì)。知識(shí)很重要,在某些復(fù)雜問(wèn)題的情況下更是如此。在變化如此之快的IT技術(shù)領(lǐng)域中,知識(shí)的獲取在任何時(shí)候比我們已會(huì)的技能更為重要。
另外附上學(xué)習(xí)大綱圖
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743