某熊的技術(shù)之路指北 ?
當(dāng)我們站在技術(shù)之路的原點(diǎn),未來(lái)可能充滿了迷茫,也存在著很多不同的可能;我們可能成為 Web/(大)前端/終端工程師、服務(wù)端架構(gòu)工程師、測(cè)試/運(yùn)維/安全工程師等質(zhì)量保障、可用性保障相關(guān)的工程師、大數(shù)據(jù)/云計(jì)算/虛擬化工程師、算法工程師、產(chǎn)品經(jīng)理等等某個(gè)或者某幾個(gè)角色。某熊的技術(shù)之路系列文章/書(shū)籍/視頻/代碼即是筆者蹣跚行進(jìn)于這條路上的點(diǎn)滴印記,包含了筆者作為程序員的技術(shù)視野、知識(shí)管理與職業(yè)規(guī)劃,致力于提升開(kāi)發(fā)者的學(xué)習(xí)能力與實(shí)際研發(fā)效能。
本指北就是對(duì)筆者不同領(lǐng)域方面沉淀下的知識(shí)倉(cāng)庫(kù)的導(dǎo)航與索引,便于讀者快速地尋找到自己需要的內(nèi)容。我們也可以在筆者的個(gè)人主頁(yè),或者公眾號(hào)(WIP)中,或者使用 alfred-sg 這樣的本地工具進(jìn)行關(guān)鍵字檢索。路漫漫其修遠(yuǎn)兮,吾正上下而求索,也希望能給所有遇見(jiàn)過(guò)筆者痕跡的同學(xué)些許幫助,在浩瀚銀河間能順利達(dá)到一個(gè)又一個(gè)彼岸。Just Coder,Travel in Galaxy,歡迎關(guān)注某熊的技術(shù)之路公眾號(hào),讓我們一起前行。
0.閱讀,筆記與編碼博觀而約取,厚積而薄發(fā)。在這個(gè)知識(shí)爆炸與終身學(xué)習(xí)/碎片化學(xué)習(xí)為主的時(shí)代,我們面臨的問(wèn)題之一就是如何進(jìn)行有效學(xué)習(xí),不僅能有效平衡廣度與深度,并且能真正的積淀下來(lái),提升自己的研發(fā)效能。于筆者而言,常常郁結(jié)于胸的就是以下三個(gè)問(wèn)題:
應(yīng)該學(xué)習(xí)什么?這是怎樣的一個(gè)技術(shù)世界?存在著怎樣的高峰與路徑?
如何克服遺忘帶來(lái)的無(wú)效學(xué)習(xí)?
如何不再碎片化地學(xué)習(xí)?
究其根本,也就是需要拓展自己的知識(shí)廣度,精進(jìn)自己的知識(shí)深度,錘煉自己的編程能力。所謂知識(shí)廣度,即是為實(shí)際問(wèn)題選擇合適的解決方案的能力,廣義來(lái)說(shuō)也是眼界與格局的表現(xiàn)。它并不拘泥于某個(gè)技術(shù)方向或者行業(yè)領(lǐng)域,而需要對(duì)傳統(tǒng)/流行的各類語(yǔ)言、工具、框架、庫(kù)、服務(wù)等有一定的認(rèn)識(shí);能夠明晰各個(gè)方案的優(yōu)劣,并在較高的層次(High Level)描述相關(guān)原理。知識(shí)廣度的拓展與保持需要建立在龐大的閱讀量與知識(shí)沉淀能力上。
Awesome Lists 就為我們準(zhǔn)備了精而全的技術(shù)開(kāi)發(fā)學(xué)習(xí)與實(shí)踐資料索引,去蕪存菁,去重留一;譬如其中的 Awesome WebSites 一文就為我們推薦了值得閱讀的資訊、博客等站點(diǎn)列表。知識(shí)廣度的拓展也并非一蹴而就之事,需得循序漸進(jìn),從初窺門徑,到登堂入室,最后融會(huì)貫通,當(dāng)我們感覺(jué)亂花漸欲迷人眼,太多的碎片化知識(shí)反而使自己迷失方向之際,就可以前往 Awesome CS Books Warehouse,去深入地閱讀學(xué)習(xí)各個(gè)領(lǐng)域的精選書(shū)籍、課程等系統(tǒng)化的內(nèi)容。
俗話說(shuō),好記性不如爛筆頭,當(dāng)我們閱讀的多了,自然也要開(kāi)始記錄;而筆者認(rèn)為記錄的開(kāi)始就要有自己的知識(shí)體系。在自己的知識(shí)體系下隨看隨記、定期整理。唯有建立符合自己認(rèn)知方式的知識(shí)圖譜,才能有效地沉淀知識(shí),明晰知識(shí)邊界并進(jìn)行不斷地探索。上車伊始,筆者即致力于構(gòu)建自己的 MindMap, IT 技術(shù)圖譜與知識(shí)架構(gòu),提供了軟件工程通用、前端、后端、DevOps、測(cè)試、架構(gòu)師、人工智能工程師等多領(lǐng)域的知識(shí)圖譜、學(xué)習(xí)成長(zhǎng)路線與面試必備內(nèi)容,并在數(shù)年來(lái)不斷維護(hù)與刷新。
筆者目前選擇的是以 MarkDown 格式記錄,并且將所有的筆記存放于 Github-文檔札記以 Git 方式進(jìn)行版本管理;編輯器是直接使用的 VSCode,移動(dòng)端編輯的話也是用的 GitGo/WorkCopy 這樣的 Git 應(yīng)用。這些筆記即是筆者自身技術(shù)視野與認(rèn)知的外化,也類比于外設(shè)之于內(nèi)存,在需要的時(shí)候分頁(yè)加載到腦海中使用,以應(yīng)對(duì)這知識(shí)爆炸的時(shí)代。其中的典型代表,Awesome CheatSheets,對(duì)于日常開(kāi)發(fā)中用到的相關(guān)知識(shí)的備忘錄/清單進(jìn)行總結(jié), 適合快速掌握或者回顧某個(gè)語(yǔ)言/框架/工具的語(yǔ)法或使用要點(diǎn)。Tech Road, 我的技術(shù)之路是對(duì)于筆者多年學(xué)習(xí)與認(rèn)知變遷的總結(jié)。
先賢有云,知行合一,知是行之始,行是知之成,Linus Torvalds 也曾提到: "Talk is cheap. Show me the code.",在閱讀與筆記之后,就是要開(kāi)始實(shí)踐編碼。所謂編程能力,并不僅僅是編寫代碼(Write Code)的能力,而是包含了閱讀、編寫、理解、重構(gòu)、抽象等多個(gè)方面,是所謂的代碼管理/掌控。其外在表現(xiàn)之一即是能夠隨時(shí)隨地用合適的語(yǔ)言無(wú)阻塞地實(shí)現(xiàn)某些功能需求,對(duì)于常見(jiàn)的語(yǔ)法,接口,算法,設(shè)計(jì)模式等能夠做到心隨意動(dòng),信手拈來(lái)。編程能力是提升研發(fā)效能的重要保障,于筆者而言也是畢生應(yīng)該追求的目標(biāo)與愛(ài)好之一。筆者的編程能力較弱,日常開(kāi)發(fā),特別是在多語(yǔ)言多框架并用的場(chǎng)景下,往往會(huì)需要不斷地中斷,查找以繼續(xù)工作,也是令我頗為苦惱。
前文重在討論如何拓寬技術(shù)視野、追尋技術(shù)的廣度,但是需要銘記的是,技術(shù)深度才是技術(shù)廣度的基石,正如中國(guó)自古以來(lái)常用道術(shù)之辯,知其然,也要知其所以然;亦如 Richard Feynman 所述:”What I cannot create, I do not understand.”。所謂知識(shí)深度,即是能夠?qū)δ硞€(gè)方面做到深入了解,并且達(dá)到融會(huì)貫通,洞若觀火,可以隨心所欲地加以擴(kuò)展、優(yōu)化、創(chuàng)新等改造或變換。這方面則更加的見(jiàn)仁見(jiàn)智,不同的領(lǐng)域與方向?qū)τ谏疃鹊亩x與挖掘方向也是千差萬(wàn)別。
我們需要自己去從零開(kāi)始造些輪子,才能深刻理解使用的框架/庫(kù)/平臺(tái)的內(nèi)部原理,才能在碰到故障時(shí)快速地修復(fù);在下文的幾乎每個(gè)章節(jié)中,我們都會(huì)提到某些筆者自造的輪子。
1.編程語(yǔ)言編程語(yǔ)言是一切的基礎(chǔ),正如 Steve McConnell 在 Code Complete 一書(shū)中提及,我們應(yīng)該 Program into a language 而不是 Program in a language,針對(duì)不同的需要選擇合適的編程語(yǔ)言來(lái)實(shí)現(xiàn),而不是受制于自己所會(huì)的語(yǔ)言。在知識(shí)圖譜中也包含了跨編程語(yǔ)言的公共知識(shí)雜談,筆者與編程語(yǔ)言相關(guān)的文章存放在 Programming Language Series | 編程語(yǔ)言語(yǔ)法基礎(chǔ)與工程實(shí)踐倉(cāng)庫(kù)中,其涵蓋了 C/C++、Go、Java、JavaScript、Python、Rust、Swift 等常見(jiàn)的語(yǔ)言,以及通用的編程語(yǔ)言理論。
編程能力鍛煉的基礎(chǔ),首要的就是關(guān)于數(shù)據(jù)結(jié)構(gòu)與算法,以及面向?qū)ο蟮脑O(shè)計(jì)模式,其對(duì)應(yīng)的代碼分別存放在了 coding-snippets, algorithm-snippets, design-pattern-snippets 中。此外,我們還可以從零編寫一些類似于 Guava & Lodash 這樣的自己的通用工具庫(kù),筆者自身是整合在了 Guash 中。
在編程語(yǔ)言之上,我們就需要考慮如何去實(shí)現(xiàn)真正的軟件系統(tǒng),譬如 軟件工程基礎(chǔ) 系列中的開(kāi)發(fā)工具/Git 漫談、軟件系統(tǒng)架構(gòu)、軟件質(zhì)量保障等內(nèi)容,我們也可以自己去實(shí)現(xiàn)一些自己的工具,譬如筆者的 Soogle 是構(gòu)建自身搜索、外部服務(wù)訪問(wèn)能力的工具集合;而 xCompass 是包含個(gè)人主頁(yè)在內(nèi)的多端閱讀能力的源代碼倉(cāng)庫(kù)。
2.Web 與大前端工程師如果您對(duì)于 JavaScript 基礎(chǔ)語(yǔ)法尚不完全了解,那么建議您首先瀏覽現(xiàn)代 JavaScript 語(yǔ)法基礎(chǔ)與工程實(shí)踐或者 JavaScript-CheatSheet 以了解基礎(chǔ)的 JavaScript 語(yǔ)法及實(shí)踐應(yīng)用。
如果您想快速地了解 Web 開(kāi)發(fā)實(shí)踐,或者是想查閱某些清單,那么建議您前往 Awesome-CheatSheets/Web;或者從導(dǎo)論篇開(kāi)始閱讀,它會(huì)包含 Web 開(kāi)發(fā)簡(jiǎn)史與變遷、數(shù)據(jù)流驅(qū)動(dòng)的界面、模塊化與組件化、工具化與工程化、前后端分離與全棧架構(gòu)、微前端與大前端、運(yùn)行機(jī)制與性能優(yōu)化等內(nèi)容。
接下來(lái),您可以選擇以下章節(jié)中感興趣的模塊進(jìn)行深度閱讀:
基礎(chǔ)篇: 對(duì)于 HTML、CSS、DOM 等 Web 開(kāi)發(fā)中涉及的基礎(chǔ)知識(shí)與理念的總結(jié)介紹。
工程實(shí)踐篇: 構(gòu)建工具,測(cè)試,安全,WebAssembly。
架構(gòu)優(yōu)化篇: 組件化,狀態(tài)管理,性能優(yōu)化,PWA。
React 篇:近年來(lái)前端領(lǐng)域百花齊放,各種技術(shù)方案爭(zhēng)妍斗艷,各領(lǐng)風(fēng)騷。本書(shū)立足于其中的佼佼者 React,深入淺出的介紹 React, Webpack, ES6, Redux, MobX 等常見(jiàn)前端開(kāi)發(fā)工具與開(kāi)發(fā)庫(kù)的用法,幫助初學(xué)者能夠迅速成為一名合格前端工程師。而本書(shū)也不僅局限于工具使用的層面,探尋各種技術(shù)方案背后蘊(yùn)含的設(shè)計(jì)思想與架構(gòu)模式,從前端工程化的角度討論前端開(kāi)發(fā)者在進(jìn)階過(guò)程中需要掌握的工程實(shí)踐、模塊化與組件化、質(zhì)量保障、性能優(yōu)化等知識(shí)要點(diǎn)。最終幫助開(kāi)發(fā)者在前端開(kāi)發(fā)中能夠因地制宜的指定合理方案,以盡可能快的速度實(shí)現(xiàn)可信賴的產(chǎn)品。
在閱讀之外,我們同樣需要進(jìn)行大量的代碼實(shí)踐,不僅僅是熟悉常用的框架,還需要去積累自己的組件、框架等功能庫(kù):
fe-boilerplates 是筆者對(duì)于日常工作中的基于 React/Vue.js 技術(shù)棧與實(shí)踐的收集與沉淀;為了方便不同級(jí)別/熟練程度的開(kāi)發(fā)者使用,筆者將模板盡可能地泛化為多個(gè)項(xiàng)目,包含了從入門級(jí)到生產(chǎn)環(huán)境,微前端等多個(gè)不同層次/復(fù)雜度的模板項(xiàng)目。
fractal-components 則是筆者日常工作中總結(jié)出來(lái)的應(yīng)用、組件庫(kù)以及組件開(kāi)發(fā)模式,為了保證其獨(dú)立性與復(fù)用性,筆者以不同的方式實(shí)現(xiàn)了組件。
Ueact 旨在從零開(kāi)始實(shí)現(xiàn)自定義的組件系統(tǒng),多調(diào)和策略與數(shù)據(jù)流響應(yīng)方式,同時(shí)能夠被渲染/編譯到多種組件。
Legoble 則承載了自己實(shí)現(xiàn)一款可視化的應(yīng)用構(gòu)建工具的念想。
Pudding 是有關(guān)于 Web Automation、多維度記錄、回放、優(yōu)化工具等集合。
3.服務(wù)端架構(gòu)工程師這是全棧的時(shí)代,我們更多地以業(yè)務(wù)來(lái)劃分而非單純地前后端,Backend Series | 服務(wù)端應(yīng)用程序開(kāi)發(fā)與系統(tǒng)架構(gòu)/微服務(wù)架構(gòu)與實(shí)踐承載了筆者在服務(wù)端的總結(jié)與經(jīng)驗(yàn),其包含了服務(wù)端應(yīng)用程序開(kāi)發(fā)基礎(chǔ),深入淺出 Node.js 全棧架構(gòu),Spring Boot 5 與 Spring Cloud 微服務(wù)實(shí)踐等內(nèi)容。
Backend-Boilerplates is Boilerplate for Your Server Side(Backend) Application, Java | Spring(Boot, Cloud) | Node.js(Express, Koa, Egg) | Go | Python | DevOps.
winter-boot is Another boot for your Java applications like Spring Boot, but Winter is coming.
4.測(cè)試/運(yùn)維/安全工程師軟件系統(tǒng)的質(zhì)量保障是服務(wù)端運(yùn)維不可繞過(guò)的部分,其包含了軟件測(cè)試基礎(chǔ)以及 DevOps 與 SRE 實(shí)戰(zhàn),信息安全與滲透測(cè)試必知必會(huì)等相關(guān)內(nèi)容。在實(shí)踐方面,我們還可以參考:
Chaos-Scanner 混沌守望者(掃描器),半自動(dòng)化分布式智能網(wǎng)絡(luò)空間測(cè)繪、管理與安全探測(cè)。
xe-crawler 是遵循聲明式、可監(jiān)測(cè)理念的分布式爬蟲(chóng),其計(jì)劃提供 Node.js、Go、Python 多種實(shí)現(xiàn),能夠?qū)τ陟o態(tài) Web 頁(yè)面、動(dòng)態(tài) Web 頁(yè)面、關(guān)系型數(shù)據(jù)庫(kù)、操作系統(tǒng)等異構(gòu)多源數(shù)據(jù)進(jìn)行抓取。
5.大數(shù)據(jù)/云計(jì)算/虛擬化工程師前文討論的更多是應(yīng)用層的知識(shí),而對(duì)于更底層的操作系統(tǒng)、數(shù)據(jù)庫(kù)、大數(shù)據(jù)處理等分布式基礎(chǔ)架構(gòu)相關(guān)內(nèi)容,都存放在了 Distributed-Infrastructure-Series | 深入淺出分布式基礎(chǔ)架構(gòu)系列中,主要包含分布式計(jì)算、分布式系統(tǒng)、數(shù)據(jù)存儲(chǔ)、虛擬化、網(wǎng)絡(luò)、操作系統(tǒng)等幾個(gè)部分。
如上文所述,我們需要在重構(gòu)輪子中成長(zhǎng):
Reinvent-MQ 即是 Multiple home-made Message Queues, LocalMQ(akin RocketMQ), PongoMQ(akin Kafka), etc.
Reinvent-DB 即是 Multiple home-made Databases, Godis(akin Redis), HiSQL(akin MySQL), MemDB, DataGo(akin ETL) etc. Understanding DBs by Reinventing It.
Focker 是從零開(kāi)始自定義的類 Docker 簡(jiǎn)化版容器實(shí)現(xiàn)。
SparkChain 即是在區(qū)塊鏈方面的實(shí)驗(yàn)探索的積累。
6.算法工程師前文我們討論過(guò)數(shù)據(jù)結(jié)構(gòu)與算法的相關(guān)內(nèi)容,而在人工智能火熱的現(xiàn)在,AIDL-Series | 人工智能與深度學(xué)習(xí)實(shí)戰(zhàn)系列包含了數(shù)學(xué)原理篇、機(jī)器學(xué)習(xí)篇、深度學(xué)習(xí)篇、自然語(yǔ)言篇、工程實(shí)踐篇、人工智能與深度學(xué)習(xí)課程篇等內(nèi)容。在實(shí)踐方面,代碼主要存放于 Artificial Intelligence & Deep Learning Workbench 中。
7.產(chǎn)品經(jīng)理筆者選擇了產(chǎn)品經(jīng)理作為壓軸之篇,也是希望能表述自己關(guān)于產(chǎn)品的觀點(diǎn),無(wú)論是我們創(chuàng)造的庫(kù)、框架、應(yīng)用還是平臺(tái),乃至于我們的文章、整理的系列書(shū)籍,都當(dāng)以產(chǎn)品視之,跳出上帝視角,從用戶的角度去考量。我們首先可以閱讀些產(chǎn)品經(jīng)理/用戶體驗(yàn)方面的書(shū)籍。
筆者目前積累不多,主要在 Product Series | 產(chǎn)品迷思中,其首先會(huì)關(guān)注產(chǎn)品經(jīng)理的基礎(chǔ)素養(yǎng)、用戶交互體驗(yàn)、文檔處理等方面。其次會(huì)討論有關(guān)于項(xiàng)目管理、通用的領(lǐng)域能力構(gòu)建(流程引擎、CRM 等)以及對(duì)于經(jīng)典產(chǎn)品的分析。最后,該系列還會(huì)關(guān)注于具體的行業(yè)觀點(diǎn),譬如電子商務(wù)、智能制造等。
很多時(shí)候,自己動(dòng)手做些小產(chǎn)品也是有趣的事情,譬如 MushiChat 這樣的聊天平臺(tái)與聊天機(jī)器人、IoTable 這樣在 IoT 領(lǐng)域的一些探索。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17925.html
摘要:十年鏟碼,八大體系超千篇數(shù)百萬(wàn)字技術(shù)筆記系列匯總悅享版十年鏟碼兩茫茫,縱思量,卻易忘不覺(jué)筆者步入程序員已有十年。十年之期,正巧筆者從阿里離開(kāi),重回打印制造業(yè)的懷抱,希望能依托于設(shè)備優(yōu)勢(shì)逐步真正構(gòu)建分布式制造網(wǎng)絡(luò)。 showImg(https://segmentfault.com/img/remote/1460000020151971); 十年鏟碼,八大體系超千篇數(shù)百萬(wàn)字技術(shù)筆記系列匯總...
摘要:某熊的技術(shù)之路做些有趣的產(chǎn)品年初的時(shí)候,我就在想,今年的主題詞是什么上半年考慮的較多的是所謂研發(fā)效能的提升,下半年卻漸漸發(fā)現(xiàn)自己更多的會(huì)在想產(chǎn)品這兩個(gè)字。 showImg(https://segmentfault.com/img/remote/1460000016874425); 2018-某熊的技術(shù)之路: 做些有趣的產(chǎn)品 年初的時(shí)候,我就在想,今年的主題詞是什么;上半年考慮的較多的是...
閱讀 2992·2021-11-23 09:51
閱讀 3009·2021-11-02 14:46
閱讀 874·2021-11-02 14:45
閱讀 2753·2021-09-23 11:57
閱讀 2503·2021-09-23 11:22
閱讀 1934·2019-08-29 16:29
閱讀 753·2019-08-29 16:16
閱讀 948·2019-08-26 13:44