當咱們站在技術之路的原點,將來可能充滿了迷茫,也存在着不少不一樣的可能;咱們可能成爲 Web/(大)前端/終端工程師、服務端架構工程師、測試/運維/安全工程師等質量保障、可用性保障相關的工程師、大數據/雲計算/虛擬化工程師、算法工程師、產品經理等等某個或者某幾個角色。某熊的技術之路系列文章/書籍/視頻/代碼便是筆者蹣跚行進於這條路上的點滴印記,包含了筆者做爲程序員的技術視野、知識管理與職業規劃,致力於提高開發者的學習能力與實際研發效能。前端
本指北就是對筆者不一樣領域方面沉澱下的知識倉庫的導航與索引,便於讀者快速地尋找到本身須要的內容。咱們也能夠在筆者的我的主頁,或者公衆號(WIP)中,或者使用 alfred-sg 這樣的本地工具進行關鍵字檢索。路漫漫其修遠兮,吾正上下而求索,也但願能給全部碰見過筆者痕跡的同窗些許幫助,在浩瀚銀河間能順利達到一個又一個彼岸。Just Coder,Travel in Galaxy,歡迎關注某熊的技術之路公衆號,讓咱們一塊兒前行。git
博觀而約取,厚積而薄發。在這個知識爆炸與終身學習/碎片化學習爲主的時代,咱們面臨的問題之一就是如何進行有效學習,不只能有效平衡廣度與深度,而且能真正的積澱下來,提高本身的研發效能。於筆者而言,經常鬱結於胸的就是如下三個問題:程序員
究其根本,也就是須要拓展本身的知識廣度,精進本身的知識深度,錘鍊本身的編程能力。所謂知識廣度,便是爲實際問題選擇合適的解決方案的能力,廣義來講也是眼界與格局的表現。它並不拘泥於某個技術方向或者行業領域,而須要對傳統/流行的各種語言、工具、框架、庫、服務等有必定的認識;可以明晰各個方案的優劣,並在較高的層次(High Level)描述相關原理。知識廣度的拓展與保持須要創建在龐大的閱讀量與知識沉澱能力上。github
Awesome Lists 就爲咱們準備了精而全的技術開發學習與實踐資料索引,去蕪存菁,去重留一;譬如其中的 Awesome WebSites 一文就爲咱們推薦了值得閱讀的資訊、博客等站點列表。知識廣度的拓展也並不是一蹴而就之事,需得按部就班,從初窺門徑,到登堂入室,最後融會貫通,當咱們感受亂花漸欲迷人眼,太多的碎片化知識反而使本身迷失方向之際,就能夠前往 Awesome CS Books Warehouse,去深刻地閱讀學習各個領域的精選書籍、課程等系統化的內容。面試
俗話說,好記性不如爛筆頭,當咱們閱讀的多了,天然也要開始記錄;而筆者認爲記錄的開始就要有本身的知識體系。在本身的知識體系下隨看隨記、按期整理。惟有創建符合本身認知方式的知識圖譜,纔能有效地沉澱知識,明晰知識邊界並進行不斷地探索。上車伊始,筆者即致力於構建本身的 MindMap, IT 技術圖譜與知識架構,提供了軟件工程通用、前端、後端、DevOps、測試、架構師、人工智能工程師等多領域的知識圖譜、學習成長路線與面試必備內容,並在數年來不斷維護與刷新。算法
筆者目前選擇的是以 MarkDown 格式記錄,而且將全部的筆記存放於 Github-文檔札記以 Git 方式進行版本管理;編輯器是直接使用的 VSCode,移動端編輯的話也是用的 GitGo/WorkCopy 這樣的 Git 應用。這些筆記便是筆者自身技術視野與認知的外化,也類比於外設之於內存,在須要的時候分頁加載到腦海中使用,以應對這知識爆炸的時代。其中的典型表明,Awesome CheatSheets,對於平常開發中用到的相關知識的備忘錄/清單進行總結, 適合快速掌握或者回顧某個語言/框架/工具的語法或使用要點。Tech Road, 個人技術之路是對於筆者多年學習與認知變遷的總結。數據庫
先賢有云,知行合一,知是行之始,行是知之成,Linus Torvalds 也曾提到: 'Talk is cheap. Show me the code.',在閱讀與筆記以後,就是要開始實踐編碼。所謂編程能力,並不只僅是編寫代碼(Write Code)的能力,而是包含了閱讀、編寫、理解、重構、抽象等多個方面,是所謂的代碼管理/掌控。其外在表現之一便是可以隨時隨地用合適的語言無阻塞地實現某些功能需求,對於常見的語法,接口,算法,設計模式等可以作到心隨意動,信手拈來。編程能力是提高研發效能的重要保障,於筆者而言也是畢生應該追求的目標與愛好之一。筆者的編程能力較弱,平常開發,特別是在多語言多框架並用的場景下,每每會須要不斷地中斷,查找以繼續工做,也是令我頗爲苦惱。編程
前文重在討論如何拓寬技術視野、追尋技術的廣度,可是須要銘記的是,技術深度纔是技術廣度的基石,正如中國自古以來經常使用道術之辯,知其然,也要知其因此然;亦如 Richard Feynman 所述:」What I cannot create, I do not understand.」。所謂知識深度,便是可以對某個方面作到深刻了解,而且達到融會貫通,洞若觀火,能夠爲所欲爲地加以擴展、優化、創新等改造或變換。這方面則更加的見仁見智,不一樣的領域與方向對於深度的定義與挖掘方向也是千差萬別。後端
咱們須要本身去從零開始造些輪子,才能深入理解使用的框架/庫/平臺的內部原理,才能在碰到故障時快速地修復;在下文的幾乎每一個章節中,咱們都會提到某些筆者自造的輪子。設計模式
編程語言是一切的基礎,正如 Steve McConnell 在 Code Complete 一書中說起,咱們應該 Program into a language
而不是 Program in a language
,針對不一樣的須要選擇合適的編程語言來實現,而不是受制於本身所會的語言。在知識圖譜中也包含了跨編程語言的公共知識雜談,筆者與編程語言相關的文章存放在 Programming Language Series | 編程語言語法基礎與工程實踐倉庫中,其涵蓋了 C/C++、Go、Java、JavaScript、Python、Rust、Swift 等常見的語言,以及通用的編程語言理論。
編程能力鍛鍊的基礎,首要的就是關於數據結構與算法,以及面向對象的設計模式,其對應的代碼分別存放在了 coding-snippets, algorithm-snippets, design-pattern-snippets 中。此外,咱們還能夠從零編寫一些相似於 Guava & Lodash 這樣的本身的通用工具庫,筆者自身是整合在了 Guash 中。
在編程語言之上,咱們就須要考慮如何去實現真正的軟件系統,譬如 軟件工程基礎 系列中的開發工具/Git 漫談、軟件系統架構、軟件質量保障等內容,咱們也能夠本身去實現一些本身的工具,譬如筆者的 Soogle 是構建自身搜索、外部服務訪問能力的工具集合;而 xCompass 是包含我的主頁在內的多端閱讀能力的源代碼倉庫。
若是您對於 JavaScript 基礎語法尚不徹底瞭解,那麼建議您首先瀏覽現代 JavaScript 語法基礎與工程實踐或者 JavaScript-CheatSheet 以瞭解基礎的 JavaScript 語法及實踐應用。
若是您想快速地瞭解 Web 開發實踐,或者是想查閱某些清單,那麼建議您前往 Awesome-CheatSheets/Web;或者從導論篇開始閱讀,它會包含 Web 開發簡史與變遷、數據流驅動的界面、模塊化與組件化、工具化與工程化、先後端分離與全棧架構、微前端與大前端、運行機制與性能優化等內容。
接下來,您能夠選擇如下章節中感興趣的模塊進行深度閱讀:
在閱讀以外,咱們一樣須要進行大量的代碼實踐,不只僅是熟悉經常使用的框架,還須要去積累本身的組件、框架等功能庫:
這是全棧的時代,咱們更多地以業務來劃分而非單純地先後端,Backend Series | 服務端應用程序開發與系統架構/微服務架構與實踐承載了筆者在服務端的總結與經驗,其包含了服務端應用程序開發基礎,深刻淺出 Node.js 全棧架構,Spring Boot 5 與 Spring Cloud 微服務實踐等內容。
軟件系統的質量保障是服務端運維不可繞過的部分,其包含了軟件測試基礎以及 DevOps 與 SRE 實戰,信息安全與滲透測試必知必會等相關內容。在實踐方面,咱們還能夠參考:
前文討論的更可能是應用層的知識,而對於更底層的操做系統、數據庫、大數據處理等分佈式基礎架構相關內容,都存放在了 Distributed-Infrastructure-Series | 深刻淺出分佈式基礎架構系列中,主要包含分佈式計算、分佈式系統、數據存儲、虛擬化、網絡、操做系統等幾個部分。
如上文所述,咱們須要在重構輪子中成長:
前文咱們討論過數據結構與算法的相關內容,而在人工智能火熱的如今,AIDL-Series | 人工智能與深度學習實戰系列包含了數學原理篇、機器學習篇、深度學習篇、天然語言篇、工程實踐篇、人工智能與深度學習課程篇等內容。在實踐方面,代碼主要存放於 Artificial Intelligence & Deep Learning Workbench 中。
筆者選擇了產品經理做爲壓軸之篇,也是但願能表述本身關於產品的觀點,不管是咱們創造的庫、框架、應用仍是平臺,乃至於咱們的文章、整理的系列書籍,都當以產品視之,跳出上帝視角,從用戶的角度去考量。咱們首先能夠閱讀些產品經理/用戶體驗方面的書籍。
筆者目前積累很少,主要在 Product Series | 產品迷思中,其首先會關注產品經理的基礎素養、用戶交互體驗、文檔處理等方面。其次會討論有關於項目管理、通用的領域能力構建(流程引擎、CRM 等)以及對於經典產品的分析。最後,該系列還會關注於具體的行業觀點,譬如電子商務、智能製造等。
不少時候,本身動手作些小產品也是有趣的事情,譬如 MushiChat 這樣的聊天平臺與聊天機器人、IoTable 這樣在 IoT 領域的一些探索。