轉(zhuǎn)自:https://www.zhihu.com/question/39431192

對(duì)于所有編程學(xué)習(xí)者,尤其是零基礎(chǔ)的同學(xué)們,在學(xué)習(xí)的初期,一定要給自己做一個(gè)思想上的轉(zhuǎn)變。在我的編程學(xué)習(xí)理論中,這個(gè)思想的轉(zhuǎn)變至關(guān)重要,什么時(shí)候你把這個(gè)思維轉(zhuǎn)換過來了,你就是真正上道的那一天。

這個(gè)思維轉(zhuǎn)換就是:不要把自己當(dāng)學(xué)生,而是要把自己當(dāng)開發(fā)者。

不同的身份認(rèn)同感,最后會(huì)導(dǎo)致不同的行為模式,而這行為模式,會(huì)對(duì)你的編程學(xué)習(xí)造成非常大的影響。

區(qū)別一:記筆記 VS 寫技術(shù)文章

學(xué)生有一個(gè)特點(diǎn),就是他們喜歡記筆記,但是開發(fā)者不怎么記筆記,而是會(huì)把自己學(xué)會(huì)的東西寫成技術(shù)文章、教程的形式發(fā)表在技術(shù)博客或者知乎等網(wǎng)站上。

一個(gè)很有名的學(xué)習(xí)法叫做費(fèi)曼學(xué)習(xí)法,這個(gè)學(xué)習(xí)方法簡(jiǎn)單地說,就是在學(xué)完一個(gè)東西之后,去給別人講明白,注意,是講給別人聽,當(dāng)你寫成文章發(fā)表在網(wǎng)上的時(shí)候,你自然會(huì)去用更通俗的語(yǔ)言,更清晰的邏輯去講述這個(gè)事物背后的邏輯,這個(gè)過程,是對(duì)自己學(xué)習(xí)的一個(gè)檢驗(yàn),也是加深映像,整理思路的重要過程。

那么如果你是去記筆記的話,很有可能,你不會(huì)去試圖講清楚這個(gè)東西,而是傾向于去照抄,或是不完全照抄,以提綱或是知識(shí)點(diǎn)的形式抄在本子上,說句實(shí)話,照抄的筆記,真的沒用,因?yàn)楝F(xiàn)在搜索引擎的能力已經(jīng)可以讓你把大多數(shù)東西快速找到,你為什么還要照抄到筆記本上呢?

從功利的角度考慮,技術(shù)文章的寫作,別人可以直接訪問,也可以逐漸累積你的影響力,一個(gè)好的個(gè)人技術(shù)博客,會(huì)給你的簡(jiǎn)歷加分很多,而一個(gè)厚厚的筆記本,沒有人會(huì)管你記了什么。

區(qū)別二:以學(xué)會(huì)XX為目標(biāo) VS 以做出XX為目標(biāo)

你會(huì)發(fā)現(xiàn),學(xué)生思維里面有一個(gè)重要的特點(diǎn),就是他們總是特別關(guān)注自己學(xué)會(huì)了什么,不僅如此,他給自己定的目標(biāo),定的計(jì)劃,永遠(yuǎn)都是學(xué)會(huì)XX書第XX章內(nèi)容

學(xué)生永遠(yuǎn)在準(zhǔn)備, 而開發(fā)者早已動(dòng)手。

如果你還在上學(xué),學(xué)生思維是這個(gè)學(xué)期我要學(xué)會(huì)XX課程,而開發(fā)者思維是這個(gè)學(xué)期我要做出XX”

如果學(xué)Python,學(xué)生思維會(huì)拿起一本教材,開始從頭到尾看,我不知道你們發(fā)現(xiàn)沒有,幾乎所有那種編程語(yǔ)言教材,長(zhǎng)得都差不多,上來先是基本的語(yǔ)法,基本的整型變量,浮點(diǎn)型變量之類的,然后伴隨著幾個(gè)小的教學(xué)例子。

開發(fā)者學(xué)Python,他第一步絕對(duì)不是去書店買教材,而是先去了解,Python適合做什么,然后他了解到,Python適合做爬蟲,數(shù)據(jù)分析,AI,還能很輕松地搭建Web后端,之后他逛了一下午Github,看了看那些Python高星項(xiàng)目都是做啥的,于是他給自己定下了這個(gè)目標(biāo):半年時(shí)間內(nèi),我要用PythonPython周邊的庫(kù)搭建出一個(gè)網(wǎng)站,這個(gè)網(wǎng)站服務(wù)端運(yùn)用爬蟲技術(shù)爬取一些數(shù)據(jù),可以提供知乎粉絲性別比例分析功能。

學(xué)生繼續(xù)看書,一個(gè)個(gè)的知識(shí)點(diǎn)去記憶,拿著他的小本本去總結(jié)知識(shí)點(diǎn),而開發(fā)者上官網(wǎng)簡(jiǎn)單的看了下Reference Doc的簡(jiǎn)單交互式語(yǔ)法教程后,便馬上開始了邊做邊學(xué)的過程,有了一個(gè)實(shí)際的項(xiàng)目目標(biāo),朝著這個(gè)目標(biāo)走,不斷地發(fā)現(xiàn)自己不會(huì)這,不會(huì)那,然后有目的性的去補(bǔ)足知識(shí),他了解到了beautiful soup作為爬蟲主庫(kù),flask作為后端web服務(wù)主庫(kù),然后會(huì)去看一些簡(jiǎn)單的教程,在這個(gè)過程中,基礎(chǔ)語(yǔ)法得到了熟練,也訓(xùn)練了工程能力。

學(xué)生的成就感來源于學(xué)會(huì)了什么,開發(fā)者的成就感來源于做出來什么。

開發(fā)者很功利,他們深知他們學(xué)會(huì)的所有東西都是為了開發(fā)出偉大的產(chǎn)品而服務(wù)的,所以他們絕對(duì)不會(huì)出現(xiàn)在學(xué)一個(gè)東西,但是也不知道學(xué)這個(gè)用來干嘛的窘境。

區(qū)別三:厭惡不確定性 VS 接受不確定性

學(xué)生們總是對(duì)確定性有一種幾乎瘋狂的追求,他們總問,“C語(yǔ)言學(xué)到什么程度就一定能被大廠錄取?掌握XX要幾個(gè)月?上課認(rèn)真聽講,認(rèn)真做筆記,考試是否一定能上80分?

這種對(duì)確定性的追求,直接導(dǎo)致學(xué)生有一種下意識(shí)的舉動(dòng):

干什么都等準(zhǔn)備好了再去做,但是卻永遠(yuǎn)在準(zhǔn)備

因?yàn)樗麄兒ε履欠N不太會(huì)還要硬上帶來的各種不確定性,他們渴求一種內(nèi)功的修煉,寄希望于把基礎(chǔ)夯實(shí)了,就能順暢的開發(fā),所以還是先夯實(shí)基礎(chǔ)吧!

開發(fā)者選擇接受這種不確定性,他們?cè)敢?/span>邊學(xué)變做,因?yàn)樗麄冎溃畛鯇W(xué)習(xí)敲鍵盤的時(shí)候,他們就是這么做的,邊看某個(gè)按鍵在哪,邊打字,做和學(xué)交叉進(jìn)行,他們始終抱有疑問,他們又始終試圖通過學(xué)習(xí)的延伸拓展去解決疑問,他們仿佛就像是拿著燭火在迷宮中行走的俠客,在游戲的一開始,對(duì)迷宮的結(jié)構(gòu)一無所知,通過不斷地摸索和碰壁,逐漸建立起對(duì)整個(gè)地圖的認(rèn)知.

區(qū)別四: 線性學(xué)習(xí) VS 遞歸學(xué)習(xí)

學(xué)生喜歡線性的學(xué)習(xí),因?yàn)榫€性的學(xué)習(xí)(拿本教材從頭到尾慢慢看)正是符合了他們對(duì)確定性的追求,可惜這違背了學(xué)習(xí)的本來面目

開發(fā)者知道,人腦最不擅長(zhǎng)的就是線性枚舉,即便我們認(rèn)識(shí)幾千個(gè)漢字,但是我們無法去線性地去將所有認(rèn)識(shí)的漢字枚舉出來,我們的大腦,本就不是用來進(jìn)行線性思考的,而復(fù)雜度上了一定程度的知識(shí),線性的掌握,基本不可能。

有難度的知識(shí),往往是這樣的:為了搞懂A,而去學(xué)B,為了學(xué)會(huì)B,而去學(xué)C,這叫遞歸學(xué)習(xí),遞歸雖深,但有回溯,它最終會(huì)回溯到我們的起點(diǎn)。

所以開發(fā)者的學(xué)習(xí)更偏向于遞歸式的學(xué)習(xí),而且可能會(huì)以一個(gè)知識(shí)點(diǎn)為起點(diǎn),去完成樹狀知識(shí)外圍的遍歷。(有點(diǎn)像搜索引擎去爬蟲)

知識(shí)是樹狀結(jié)構(gòu), 或者網(wǎng)狀結(jié)構(gòu).

當(dāng)我們?cè)噲D遍歷一個(gè)樹的時(shí)候, 最簡(jiǎn)單直接的方式就是遞歸, 如果你非要去"線性"的學(xué), 那就你是把編程學(xué)習(xí)當(dāng)成了鏈表, 還是單向的,這種算法怎么可能用來遍歷樹呢?

區(qū)別五:拿會(huì)XX定義自己 VS XX項(xiàng)目作者定義自己

linus 從來不說自己精通 c 語(yǔ)言, 與其說他不需要, 不如說他不關(guān)心, 因?yàn)樗?/span> linux git 的作者.

linus 這個(gè)程序員之神就是一個(gè)典型的開發(fā)者思維的人.

我希望所有計(jì)算機(jī)專業(yè)的同學(xué)們, 等你們畢業(yè)了之后, 你的github應(yīng)該是綠油油的, 而不是貧瘠的一片白.

我希望你們用你們的簡(jiǎn)歷里寫的是"c語(yǔ)言實(shí)現(xiàn)了一個(gè)XX引擎, github鏈接http://github.com/xxxxxx”而不是"精通c".

我希望學(xué)生們明白, 任何一個(gè)像樣子的項(xiàng)目, 制作周期至少是按月計(jì), 你的大學(xué)有四年時(shí)間, 哪怕一個(gè)項(xiàng)目做一年, 你也能拿出兩三個(gè)好項(xiàng)目, 不一定有多少star, 但是要完整, 文檔, 測(cè)試, 一應(yīng)俱全.

我希望學(xué)生們知道, 做項(xiàng)目和寫課后習(xí)題不一樣, 課后習(xí)題一個(gè)小時(shí), 而項(xiàng)目是長(zhǎng)期不斷努力, 不斷學(xué)習(xí)突破的過程, 需要你每天都搞, 善始善終, 最終拿出成果來.

我希望學(xué)生們明白, 這個(gè)世界衡量一個(gè)人的成就, 從來都是"他做了什么", 而不是"他學(xué)會(huì)了什么", 不要總用修煉內(nèi)功去感動(dòng)自己, 必要時(shí), 也請(qǐng)你為開源世界貢獻(xiàn)一點(diǎn)自己的力量.

我希望學(xué)生們明白, 考上985, 拿獎(jiǎng)學(xué)金, 這都不叫成就, 因?yàn)?strong>和別人沒關(guān)系, 只有真正影響到別人的東西, 讓這個(gè)世界變得更好的東西, 才是值得去"".

最后送給學(xué)生們一句話: 愿你早日忘記學(xué)生的身份, 以開發(fā)者的姿態(tài), 面對(duì)這個(gè)世界。