如何更高效的學習?
1.架構師應不應該寫程式碼
合格的程式員對於明確分配的任務會完成的很好,但是大部分情況下“架構”這個詞意味著架構師並不會涉及太多細節,架構圖和程式碼實現之間總還是有些距離,你無法保證所有人都會正確的理解你的設計,或者是程式員寫程式碼時遇到障礙時會立刻想出足夠優雅的解決方案。
在我看來,寫程式碼的架構師更像是在做後勤保障的工作:在程式碼中第一時間發現可能存在的問題,向其他人提出警告,或是給予其他人改進的意見,必要的時候或是給其他人演示一下正確的姿勢。
大部分情況下我作為架構師並不需要攬下“核心模組”開發這種工作,畢竟我能調配的時間太零散了,效率難以保證,很多人在專註的情況下比我做的好很多,我只需要保持大局觀需要適度參與就可以了。
總的來說,架構師和程式員在某些方面上有點像產品經理和使用者的關係,大部分程式員並不會主動告訴你他們想要什麼、哪裡需要最佳化,甚至自己也不知道這些。想要做出好的產品,捷徑之一就是跟使用者做同樣的事情。
2.為什麼別人的系統總是那麼爛
很多程式員解決問題的能力很強,說要解決一個什麼問題,下午就能寫出幾百行程式碼把功能實現了。但是做出來的東西有種少考慮了什麼東西的感覺。大部分程式都能實現功能,但是如果把“時間”這個也作為一個考慮的維度的話,就會意識到一個合格的專案需要考慮更多的東西:更通用的使用方式、易於理解的檔案、簡單而易於擴充套件的設計,等等。
很多公司應該都會有一些遺留系統,它們龐大、笨重、難用、幾乎無法維護,所有人都在抱怨這些系統,並且每天都在想方設法換掉那些遺留系統。但是一段時間過去之後,又會發現身邊的新人又開始吐槽當時替代遺留系統的那個系統了。
“大多數系統當初都很好使,功能當時夠用,擴充套件性看起來也可以,但是這些系統都是開發的人離職之後變壞的。”
3.成為架構師最困難的門檻是什麼?
很多人自稱架構師的人跟你講一個架構時簡直滔滔不絕,各種技術名詞像是說相聲一樣從他嘴裡說出來,三句話不離高併發大資料,但是稍微追問一下,就會發現很多基本概念的缺失,例如自稱精通高併發的人說不清楚他所謂的高併發系統的瓶頸在哪裡,自稱精通架構設計的人說不明白他的系統怎麼保證高可用,自稱超大資料量的系統實際上只有不到100萬條資料,等等。
架構師雖然聽起來很高大上,但本質上仍然是工程師,不是科學家,也不是忽悠人的江湖騙子。學習再多,也需要實踐落地。設計架構方案更多的是在做一些抽象和權衡:把複雜的需求抽象成簡單的模型,從功能、效能、可用性、研發成本等等方面規劃如何構建一個系統,這些內容需要更多的實踐練習。
4.如何更高效的學習?
大多數人每天能留給自己學習的時間有限,這個階段如何提升學習效率就成了要解決的重點。
說說自己提升學習效率的心得,其實非常簡單:體系化的學習。
在重覆了幾次痛苦的學習-梳理過程後,再去看一些獨立的文章或者資料往往會事半功倍,因為能在體系內找到相對應的知識,甚至有時候一本書裡一頁只需要看一句話,點破那層窗戶紙,就可以掌握新的知識。
跟很多人一樣,剛畢業時我覺得作為程式員,只要努力,加上少許天賦便可以獲得一些成績。
工作一段時間後,對自己和其他人的認識也越來越清晰,逐漸的發現程式員之間的差距或許比人和猴子之間的差距還大,接受這個事實這讓我鬱悶了很久。
再過一段時間,發現自己已經能夠客觀的評價自己的能力,也意識到了距離並不是那麼重要,只要想辦法跑的更快,就足夠了。
快速成為架構師的學習路線
新
一:常見樣式與工具
學習Java技術體系,設計樣式,流行的框架與元件是必不可少的:
常見的設計樣式,編碼必備
Spring5,做應用必不可少的最新框架
MyBatis,玩資料庫必不可少的元件
新
二:工程化與工具
工欲善其事必先利其器,不管是小白,還是資深開發,玩Java技術體系,選擇好的工具,提升開發效率和團隊協作效率,是必不可少的:
Maven,專案管理
Jenkins,持續整合
Sonar,程式碼質量管理
Git,版本管理
新
三:分散式架構
高併發,高可用,海量資料,沒有分散式的架構知識肯定是玩不轉的:
分散式架構原理
分散式架構策略
分散式中介軟體
分散式架構實戰
新
四:微服務架構
業務越來越複雜,服務分層,微服務架構是架構升級的必由之路,Java技術體系,和微服務相關的技術有哪些呢?
微服務框架
Spring Cloud
Docker與虛擬化
微服務架構
新
五:效能最佳化
任何脫離細節的ppt架構師都是耍流氓,向上能運籌帷幄,向下能解決一線效能問題,Java技術體系,需要瞭解:
效能指標體系
JVM調優
Web調優
DB調優
新
六:底層知識
從架構設計,到應用層調優,再深入瞭解底層原理,扎實的Java基本功才能讓自己變為掃地神僧:
記憶體模型
併發樣式
執行緒模型
鎖細節
以上七大知識體系是我從業多年總結出來的經驗,都是當前最主流的技術。如果對Java分散式、工程化、高併發、微服務,JVM等技術感興趣的可以加我的架構群,裡面有阿裡大牛,大家一起交流分享經驗。
如何一起學習,有沒有免費資料?
歡迎開發工作2-5年的 Java 的工程師朋友們加入,
歡迎加QQ群:681072775 ,一起學習,相互討論。
群內已經有小夥伴將知識體系整理好,歡迎加群免費取。
,
掃碼加QQ群: 681072775
免費領取資料
以上內容分享給喜歡程式設計,有夢想成為架構師的程式員們,希望能夠幫助到你們。 也可點選「閱讀原文」直接跳轉進入咕泡java架構,免費領取技術架構分享資料。