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