《給網站工程師的網路課》心得:Web 開發者的網路學習指南
上星期日,我參加了小賴的《給網站工程師的網路課》,獲益良多,有必要寫一篇文章分享。
但本文並不是上課筆記,而是想談談我作為一個轉職軟體工程師,學習網路知識的不同階段歷程,以及這堂課如何彌補了過去的不足。
如果你對這堂課感興趣,但不知道自己適不適合,推薦參考下面兩篇文章:
- 給網站工程師的網路課:講者小賴對課程內容的專文介紹。
- 給網站工程師的網路課 - 上課心得筆記:實際參與學員的上課心得與筆記。
看完之後,能一定程度了解這堂課的內容、定位與輪廓。
這是一堂實體課,時長為一個下午(約 4 小時),但資訊量明顯超過 4 小時能講完的內容,可說是非常充實。
如果你也是 Web 開發者,卻仍對網路感到一知半解,相信本文能帶給你一些方向。
讓我們直接開始吧!
Web 開發者需要了解網路嗎?
答案自然是「Yes」——不然我就不會寫這篇文章了😂,但也沒那麼簡單。
無論前端、後端,還是全端工程師,我們的主要工作都圍繞著 Web 展開,且大部分的產出都必須透過 HTTP 來運作。
而 HTTP 建立在 TCP/IP 協議之上,因此網路知識的重要性不言而喻。
但我們也得承認,對大多數 Web 開發者而言,網路往往不是工作中的主角。
日常的功能開發,往往是以「框架」為主角,無論是前端的 Vue、React,或是我熟悉的 Django。網路常常是作為「配角」,在背後默默運作。
重要的「配角」
但有些時候,網路問題「確實」會直接影響到你的開發效率,甚至讓你感到無力。
舉個例子,網站部署後出現發現網頁載入緩慢,這究竟是前端請求問題、伺服器端設定問題,還是網路出了問題?
又或者,你的 API 平時運作良好,但偶爾會出現 Timeout,究竟該從哪裡開始排查?
這類問題雖與功能無關,但直接影響了功能的實現,不得不處理。在缺乏基礎網路知識的情況下,往往只能靠「試誤、碰運氣」來排查問題,甚至可能因此卡關好幾天。
所以,網路雖然不屬於核心技能範疇,但同時也是避不開、需要好好了解的一部分。
我的網路學習三階段
說是這麼說,我對網路的學習也稱不上多認真啦🤣
在介紹這三個階段之前,還是不免俗地強調:每個人的學習路徑不盡相同,以下僅是我個人的經驗。
第一階段:從 HTTP 開始
幾年前,我曾在極客時間購買了一堂課,叫《透視 HTTP 協議》。(有興趣的話,也可透過我的分享連結購買,我會得到一點點佣金,感謝支持!)
這堂課對我了解 HTTP 知識有很大的幫助,像是請求方法、body、狀態碼、header 的作用等。深入淺出,學起來很踏實。
雖然這些知識在網路上可能都找得到,但這堂課幫你整理得更有體系,我不必自己尋尋覓覓,就能循序漸進地掌握 HTTP 中各個重要概念。
總之,我覺得這是前期對我很有幫助的教材。但它對於 HTTP 以外的內容(TCP/IP、DNS),則著墨較少,所以只適合作為一個開端。
第二階段:用 ChatGPT 補一補
隨著 ChatGPT 等 AI 工具的出現,基礎知識的學習變得更方便了!
你或許聽過 Mr. Ranedeer 這個設計精巧的 GPTs,號稱可以讓你自學任何主題。
雖然不一定有那麼神(而且很多知識也不是以文字呈現的),但拿來學一些軟體開發的通用知識確實挺不錯。
比如給它這樣的提示詞(prompt):
1 | /plan 關於「從瀏覽器輸入網址到取得回應,中間發生了什麼事?」這個主題的開發者必知知識 |
它會列出下列的學習清單(回答我有多次調整過,但格式不變,截圖僅為部分):
Mr. Ranedeer
這種學習方式有幾個好處:
- 可以快速獲得該主題的輪廓與流程。
- 可以針對不懂的細節反覆詢問,逐步加深理解。就像我的「哩哩扣扣」一樣。
靠 AI 自學的缺點
但缺點也很明顯:AI 不知道你「不知道什麼」。
網路知識龐雜,初學者不易分辨哪些概念屬於基礎,哪些則是進階——其實自己看書也有類似困境,所以我幾乎不太想直接去啃那些大部頭的網路書籍。
更困難的是,作為初學者,我們往往不知道哪些知識對現階段的自己最重要!(這情況在學習新技術時經常發生)
AI 確實能提供答案,但它不一定知道你的學習困境所在(而我們自己也不清楚),更無法取代經驗豐富老師的引導。
總之,AI 在原來的基礎上,幫我補足了第一階段課程中的缺憾,但仍缺少一個完整的框架與指引。只能算是聊勝於無。
第三階段:上小賴的《給網站工程師的網路課》
這次參加小賴的課程,讓我真正體會到什麼叫做「把零散的知識串聯起來」。
就像我在 Threads 上說的:「這是知識與快樂的螺旋!」
之前的學習,我本以為已經算是「相對有體系」了,但上完這堂課後,才知道自己還是太天真了😅——這很正常啦!畢竟網路世界博大精深。
課程亮點
這堂課從「輸入網址、按完 Enter」後的 DNS 查詢開始,一路講到 TCP、IP 協議,並串聯起路徑上的各個環節。
用淺顯易懂的方式解釋網路運作,並輔以具體的例子、圖片;操作 Wireshark 讓我對網路封包有了更多視覺上的理解。(比如看到 TCP 中的 port number 值)
光 DNS 部分,就讓我有一種打通任督二脈的感覺——雖然有學過,但發現自己的了解仍稍嫌片面。
和單純的記憶知識相比,我想其中的關鍵差別在於「經驗」。這堂課有很多小賴的實戰經驗,它們讓知識變得更加真實、栩栩如生。
結語
總的來說,這是一堂讓我獲益良多的課程。
我之前所學的 HTTP 與 AI 提供的網路知識,相較之下仍像是散落的拼圖,而這次課程把這些拼圖組合起來,讓我看到一幅更清晰的全景。
這堂課是針對 Web 開發者設計,難度拿捏得宜,不會過於深奧,也不流於表面,適合想補足網路知識的工程師。
如果你是 Web 開發者,正在摸索網路相關的學習路徑,這堂課也許就是你的下一站。