轉頭條:阿里p7架構師:三年經驗應該具備什麼樣的技能?
問:工作中,有時候實現一個功能,會去看有沒有現成的輪子可用。對於重複造輪子與改造輪子有什麼看法?
答:一定會的,其實這也是一個提高技術能力的方法,比如今天想做個日期轉換的功能,JDK8有日期的新特性就會考慮直接使用LocalDate.now().format(DateTimeFormatter.BASICISODATE),
以前都是自己寫個DateUtils。
如果已有的輪子不滿足需求,我覺得可以基於已有的輪子進行改造,提供更多的特性。
在寫程式碼的過程中,永遠要思考的是現在業界的技術方案是如何做的,
現在的方案有什麼優點或缺點,我能不能直接使用,不能使用的話,是否優化後可用,當然用的時候要了解它的實現原理,做到知其然知其所以然。
問:阿里的技術專家P7從招聘層面上來說,比如工作年限,過往經歷,技術能力等需要達到怎樣的要求,可否詳細講一下?
答:年限是5-10年,
技術能力有幾個方面的要求,紮實的基礎能力,在技術上要有技術亮點,用過的框架要知道其技術原理,能獨立解決各種技術問題,具備分散式系統的開發經驗,比較強的實戰能力。
阿里的5要求能獨立負責一個模組,6要求能獨立負責一個系統,7要求能架構和負責多個系統,並規劃系統的未來能力,在某個領域達到專家水平,可以是某個業務領域,也可以是某個技術領域。
獨立這兩個字要求很高,即遇到任何技術問題,你都能獨立解決。
問:工作中,產品方案設計的時候,經常會存在多方分歧,有分歧就會存在妥協,如何合理的堅持自己的觀點,如何合理的做出妥協?
答:方案沒有對錯,每個方案都有他的優點和缺點,要分析出別人方案的優點和缺點,肯定對方方案的優點,再針對缺點提出對方如何解決這個問題,還是說不解決這個缺點。一起討論出最合適的方案,而不是要爭論誰對誰錯。
問:我就是在業務團隊,偏技術。框架聽起來很酷但遙遠,能否帶入門,給幾個知識點?
答:在業務團隊也可以做很多框架,比如可配置化支援業務的框架,自動生成新增刪除修改頁面的框架,業務資料校驗的框架,
只要多思考如何快速支援業務,就能找到合適的業務框架。可以從幾個點出發,配置化支援業務,頁面自動生成,流程標準化等。
問: 最近在學習Spring原始碼,看了點書,可以跟著作者的思路看原始碼,但是看完不久就忘了,其實是沒有太多的應用場景的,對於看原始碼,有什麼好的方法嗎?
答:可以用這個思路,比如讓你來設計一個Spring框架你會如何來設計,Spring Core最重要的就是IOC和AOP,
自己可以嘗試實現下簡單的IOC和AOP功能,然後再去對比看下Spring是如何實現的,這樣即使忘記了Spring的程式碼,但是仍然能基礎其實現原理。
問:對於三十歲的程度員,如果還想再深入做技術,有什麼建議?
答:技術人員一定要有危機感,無論多大年紀仍然要持續的學習,我也已經三十多了,每週會花點時間學習點技術。
但是年紀大了,其實時間不會那麼多,所以要提高學習的效率,掌握一些學習方法和方法論,並且要靜下心來持續的學習。
學技術什麼時間都不晚,因為總有新技術冒出來,但是一些永遠不變的技術可以優先學習,比如各種協議(TCP,HTTP,一致性hash協議),實現原理,演算法等。
問:自己也實現過IOC和AOP的一些小案例,但是實現比較簡單,IOC是基於一個Map來實現的,AOP使用CgLib實現,但是再看Spring Core的原始碼時,還是感覺很吃力,巢狀層次太多,Debug多次,還是比較吃力,怎麼辦?
答:技術人員一定要有個特質就是死磕,有的技術人員可能花2個星期解決一個技術BUG,就是對著原始碼一點點的看,要能入定。帶著問題去看原始碼會更輕鬆點。
答:要給自己制定學習計劃,
比如要學習哪些技術,每天學習什麼,達到什麼程度。
工作中用一些方式方法減少雜亂無難度的工作內容,比如白天不答疑,或只在固定的時間答疑,寫FAQ減少答疑,少參與一些會議,不實時去回即時通訊軟體。
問:你覺得三年經驗應該具備什麼樣的技能?
答:我覺的作為一個開發經驗三年經驗來說應該要弄懂下面的知識大綱
微服務專題
作為阿里的p7當然要弄懂雙十一專案;
要自己能夠完全搞懂原始碼
分散式是必不可少的;
還要學會效能優化
問:上面的知識掌握了可以成為阿里P7的架構師嗎?你對於如何學習上面提到的知識有什麼建議嗎?
答:完全掌握是可以的 ,但是會需要一個比較長的週期,大概是八到十個月左右,我有自己的一個技術分享群:629740746,我會每天在群裡給大家分享一個架構的知識點,當然我也自己錄製了一些完整的架構,還有一些bat面試點講解的視訊 ,今天作為一個福利,只要你們來我就免費的分享給大家
問:文章裡面提到了架構能力,架構能力由什麼組成?如何提高架構能力?又如何去設計一個架構?
答:這是個很好的問題,後續可能寫一系列的文章來分享下我的看法。
架構分很多種,有業務架構,網路架構,資料架構及中介軟體架構。 架構能力最關鍵的是抽象能力,能抽象出系統中不變的部分形成領域模型。而變化的部分都是通過擴充套件實現的。有點像樂高積木,抽象出各種基本模組,就可以搭建你想要的東西。
那麼如何提高架構能力?多學多思多實戰,首先掌握架構模式和架構原則,比如分層架構,模組化,或者看些架構的書,《企業應用架構模式》等,然後看已有的系統架構,思考下該系統為什麼要這樣架構,遵循了哪些原則和模式,這個架構的優缺點有哪些。然後就是自己參與到架構中,和架構師一起討論設計。