2026-01-04,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)谙路?a href="#comment">留言或聯(lián)系老夜。別人看源碼,那我也要看!
大家好,我是魚(yú)皮,最近金三銀四求職季到了,我發(fā)現(xiàn)有一些小伙伴開(kāi)始焦慮了,比如我 星球 里的一位朋友,問(wèn)了我這樣一個(gè)問(wèn)題:

我猜想這位小伙伴的問(wèn)題是指閱讀一些知名框架 / 項(xiàng)目的源碼,而不是讀老師作業(yè)題中的代碼。
關(guān)于是否要去看源碼這件事,簡(jiǎn)單聊聊我的看法吧。
首先,很多程序員會(huì)覺(jué)得程序員的最高境界就是 看牛逼源碼 和 寫(xiě)牛逼源碼 ,我個(gè)人也對(duì)這點(diǎn)不置可否,畢竟這就是學(xué)習(xí) + 創(chuàng)造的過(guò)程嘛。無(wú)論我們處于什么學(xué)習(xí)階段,入門也好、精通也罷,都應(yīng)該多去看別人的源碼來(lái)學(xué)習(xí),也應(yīng)該多去寫(xiě)代碼來(lái)實(shí)踐。
同樣,閱讀知名項(xiàng)目的源碼不僅能給我們的編程技能帶來(lái)很大的提升,也會(huì)給我們求職(寫(xiě)簡(jiǎn)歷、面試)增加核心競(jìng)爭(zhēng)力。
正因如此,大家都知道讀源碼好了,網(wǎng)上培訓(xùn)機(jī)構(gòu)的課程也卷起來(lái)了,動(dòng)不動(dòng)就是什么帶你讀源碼、教你寫(xiě)源碼(對(duì)某些同學(xué)的確有幫助)。。。

但都是讀源碼,為啥有些人讀的過(guò)程就像是看本小說(shuō),有些人讀起來(lái)卻像是在背課文?為啥有的同學(xué)讀完后能自己寫(xiě)一個(gè),有些同學(xué)讀完就忘、啥收獲都沒(méi)有呢?
這就是咱們?cè)撽P(guān)注的問(wèn)題:應(yīng)該什么時(shí)候去讀優(yōu)質(zhì)項(xiàng)目的源碼?
我個(gè)人覺(jué)得主要是兩個(gè)因素吧,一是你自己的 積累 ,二是 性價(jià)比 。
積累
如果還沒(méi)有足夠的積累,缺少一些前置知識(shí)(比如設(shè)計(jì)模式),就直接去讀源碼,肯定會(huì)知難而退或者半途而廢。
我們學(xué)任何編程技術(shù)都應(yīng)該遵循以下步驟:
-
先了解這技術(shù)的作用。比如 Nginx 是一個(gè)高性能的 HTTP 和反向代理 web 服務(wù)器。 -
能夠使用該技術(shù)來(lái)解決問(wèn)題(完成需求)。比如用 Nginx 搭建自己的網(wǎng)站,支持被他人訪問(wèn)。 -
學(xué)習(xí)如何更好地用它來(lái)解決問(wèn)題。比如了解 Nginx 各項(xiàng)配置,怎么根據(jù)情況去配置對(duì)應(yīng)參數(shù),提高性能等等。 -
了解其架構(gòu)組成、各模塊作用、各模塊通訊機(jī)制、核心設(shè)計(jì)原理等。比如 Nginx 的架構(gòu)圖:

-
最后才是閱讀源碼,深挖細(xì)節(jié)。
如果你還不會(huì)使用某個(gè)技術(shù)、沒(méi)有用它做過(guò)項(xiàng)目,那么很多這個(gè)技術(shù)的概念你可能都是不了解的,看源碼的時(shí)候也絕對(duì)是一臉懵。
我自己也讀過(guò)一些框架的源碼,我感覺(jué)理想的看源碼過(guò)程應(yīng)該是:你先去猜想作者會(huì)怎么實(shí)現(xiàn)、自己心里有一個(gè)大致的預(yù)期和方案,再去通過(guò)讀源碼來(lái)驗(yàn)證自己的猜想是否正確。類比為做數(shù)學(xué)題的話,就是去檢查答案;而不是沒(méi)學(xué)過(guò)知識(shí)點(diǎn)就去硬看答案。
找工作的話,不一定非要閱讀牛逼源碼,一般能做到倒數(shù)第二步(了解架構(gòu)和設(shè)計(jì)原理)就足夠了。
性價(jià)比
看源碼毫無(wú)疑問(wèn)會(huì)花費(fèi)大量的時(shí)間,這就需要我們?nèi)ズ饬啃詢r(jià)比。
到底是去看源碼,還是去做自己的項(xiàng)目呢?
我個(gè)人認(rèn)為,這取決于你自己當(dāng)前的階段和發(fā)展目標(biāo)。就拿我本人來(lái)說(shuō),我是很喜歡做項(xiàng)目的,而目前我學(xué)的大部分技術(shù)已經(jīng)能夠滿足我做項(xiàng)目的需求,一些調(diào)優(yōu)技巧我也有所實(shí)踐,那我可能就不會(huì)投入太多時(shí)間去看源碼。但是當(dāng)我寫(xiě)程序的過(guò)程中遇到問(wèn)題時(shí),我會(huì)本能地追蹤進(jìn)源代碼去分析。即 帶著目的去讀源碼 。
對(duì)于求職的同學(xué)來(lái)說(shuō),如果你還沒(méi)有項(xiàng)目經(jīng)歷,我建議你先不要想著去讀源碼(可以了解,但別花太多時(shí)間),而是應(yīng)該先把企業(yè)中常用的技術(shù)框架玩轉(zhuǎn)。源碼等找到工作再去精心研究也并不遲。
所以,不要看別人去讀源碼,你也跟著去讀,更不用因此感到焦慮。
幸存者偏差,無(wú)論是校園學(xué)生還是職場(chǎng)員工,真正敢說(shuō)自己讀過(guò)牛逼源碼的同學(xué)還是少數(shù)。當(dāng)然,追求極致的野心我們還是要有的,向?qū)懗鰞?yōu)質(zhì)源碼的大佬表示致敬。

最后,歡迎大家加入魚(yú)皮的 編程學(xué)習(xí)圈子 ,和 3000 多名 小伙伴們一起交流學(xué)習(xí),向大佬 1 對(duì) 1 提問(wèn)、跟著魚(yú)皮直播做項(xiàng)目~
往期推薦
魚(yú)皮的項(xiàng)目視頻被狗曝光了。。。
這代碼誰(shuí)寫(xiě)的,太可怕了!
幫改簡(jiǎn)歷,發(fā)現(xiàn)了一些 “通病”
并發(fā)編程的 10 大坑,你踩過(guò)幾個(gè)?
夜雨聆風(fēng)
