如果耐心讀完本文,對您學習程式設計大有幫助
對於所有程式設計學習者,尤其是零基礎的同學們,在學習的初期,一定要給自己做乙個思想上的轉變。
在我的程式設計學習理論中,這個思想的轉變至關重要,什麼時候你把這個思維轉換過來了,你就是真正上道的那一天。
這個思維轉換就是:
不要把自己當學生,而是要把自己當開發者。
不同的身份認同感,最後會導致不同的行為模式,而這行為模式,會對你的程式設計學習造成非常大的影響。
乙個很有名的學習法叫做費曼學習法,這個學習方法簡單地說,就是在學完乙個東西之後,去給別人講明白,注意,是講給別人聽,當你寫成文章發表在網上的時候,你自然會去用更通俗的語言,更清晰的邏輯去講述這個事物背後的邏輯,這個過程,是對自己學習的乙個檢驗,也是加深映像,整理思路的重要過程。
那麼如果你是去記筆記的話,很有可能,你不會去試圖講清楚這個東西,而是傾向於去照抄,或是不完全照抄,以「提綱」或是「知識點」的形式抄在本子上,說句實話,照抄的筆記,真的沒用,因為現在搜尋引擎的能力已經可以讓你把大多數東西快速找到,你為什麼還要照抄到筆記本上呢?
從功利的角度考慮,技術文章的寫作,別人可以直接訪問,也可以逐漸累積你的影響力,乙個好的個人技術部落格,會給你的簡歷加分很多,而乙個厚厚的筆記本,沒有人會管你記了什麼。
你會發現,學生思維裡面有乙個重要的特點,就是他們總是特別關注自己「學會了什麼」,不僅如此,他給自己定的目標,定的計畫,永遠都是」學會xx書第xx章內容「。
學生永遠在準備, 而開發者早已動手。
如果你還在上學,學生思維是「這個學期我要學會xx課程」,而開發者思維是「這個學期我要做出xx」。
如果學python,學生思維會拿起一本教材,開始從頭到尾看,我不知道你們發現沒有,幾乎所有那種程式語言教材,長得都差不多,上來先是基本的語法,基本的整型變數,浮點型變數之類的,然後伴隨著幾個小的教學例子。
開發者學python,他第一步絕對不是去書店買教材,而是先去了解,python適合做什麼,然後他了解到,python適合做爬蟲,資料分析,ai,還能很輕鬆地搭建web後端,之後他逛了一下午github,看了看那些python高星專案都是做啥的,於是他給自己定下了這個目標:
半年時間內,我要用python和python周邊的庫搭建出乙個**,這個**服務端運用爬蟲技術爬取一些資料,可以提供知乎粉絲性別比例分析功能。
學生繼續看書,乙個個的知識點去記憶,拿著他的小本本去總結知識點,而開發者上官網簡單的看了下reference doc的簡單互動式語法教程後,便馬上開始了邊做邊學的過程,有了乙個實際的專案目標,朝著這個目標走,不斷地發現自己不會這,不會那,然後有目的性的去補足知識,他了解到了beatuiful soup作為爬蟲主庫,flask作為後端web服務主庫,然後會去看一些簡單的教程,在這個過程中,基礎語法得到了熟練,也訓練了工程能力。
學生的成就感**於學會了什麼,開發者的成就感**於做出來什麼
開發者很功利,他們深知他們學會的所有東西都是為了開發出偉大的產品而服務的,所以他們絕對不會出現「在學乙個東西,但是也不知道學這個用來幹嘛」的窘境。
學生喜歡線性的學習,因為線性的學習(拿本教材從頭到尾慢慢看)正是符合了他們對確定性的追求,可惜這違背了學習的本來面目
開發者知道,人腦最不擅長的就是線性列舉,即便我們認識幾千個漢字,但是我們無法去線性地去將所有認識的漢字列舉出來,我們的大腦,本就不是用來進行線性思考的,而複雜度上了一定程度的知識,線性的掌握,基本不可能。
有難度的知識,往往是這樣的:為了搞懂a,而去學b,為了學會b,而去學c,這叫遞迴學習,遞迴雖深,但有回溯,它最終會回溯到我們的起點。
所以開發者的學習更偏向於遞迴式的學習,而且可能會以乙個知識點為起點,去完成樹狀知識外圍的遍歷。(有點像搜尋引擎的爬蟲)
知識是樹狀結構, 或者網狀結構
當我們試圖遍歷乙個樹的時候, 最簡單直接的方式就是遞迴, 如果你非要去"線性"的學, 那就你是把程式設計學習當成了鍊錶, 還是「單向」的,這種演算法怎麼可能用來遍歷樹呢?
inus 從來不說自己精通 c 語言, 與其說他不需要, 不如說他不關心, 因為他是 linux 和 git 的作者.
linus 這個程式設計師之神就是乙個典型的開發者思維的人.
我希望所有計算機專業的同學們, 等你們畢業了之後, 你的github應該是綠油油的, 而不是貧瘠的一片白.
我希望你們用你們的簡歷裡寫的是"用c語言實現了乙個xx引擎, github鏈結"
而不是"精通c語言".
我希望學生們明白, 任何乙個像樣子的專案, 製作週期至少是按月計, 你的大學有四年時間, 哪怕乙個專案做一年, 你也能拿出兩三個好專案, 不一定有多少star, 但是要完整, 文件, 測試, 一應俱全.
我希望學生們知道, 做專案和寫課後習題不一樣, 課後習題乙個小時, 而專案是長期不斷努力, 不斷學習突破的過程, 需要你每天都搞, 善始善終, 最終拿出成果來.
我希望學生們明白, 這個世界衡量乙個人的成就, 從來都是"他做了什麼", 而不是"他學會了什麼", 不要總用修煉內功去感動自己, 必要時, 也請你為開源世界貢獻一點自己的力量.
我希望學生們明白, 考上985, 拿獎學金, 這都不叫成就, 因為和別人沒關係, 只有真正影響到別人的東西, 讓這個世界變得更好的東西, 才是值得去"秀"的.
最後送給學生們一句話:
願你早日忘記學生的身份, 以開發者的姿態, 面對這個世界。
上面有一些東西是零基礎的朋友從來沒有聽過的名詞,比如linux,github,遞迴式學習。我試圖用更加小白的方式簡單總結一下。
不是為了學會某個知識,學習只是為了做出某個產品而服務。
關注自己做出了什麼東西,而不只是關注學會了什麼,不然就會感覺好像什麼都會,但是什麼都做不了。
不要害怕遇到困難和錯誤,解決了所有錯誤,剩下的就是成功。就像迷宮中尋找出口一樣,沒可能一下子就能找到正確出口的。
如何自學程式設計
我大學本科念的是電子工程專業,所以到那個時候為止,我唯一使用過的程式語言就是c c assembly 以及 matlab。後來乙個偶然的機會我參加了乙個 週末創業 的活動,並且開始漸漸對軟體開發和電腦科學感興趣,然後我發誓我要不擇手段地進入這個洋溢著 無限魅力的領域。但是,我需要學習其他的程式語言,...
你是如何自學 Python 的?
知乎 這是我在過去幾家公司招聘到工程師,python入職培訓的過程。時間分為4周,全部自學,僅提供大綱。適用於web方向 1 week1 讀完 簡明python教程 適應python開發環境 2 week2 寫個爬蟲,需要深入了解re urllib2 sqlite3 threading,queue等...
你是如何自學Python的
作為一名python愛好者,我也想跟大家分享分享我自學python的一些小經驗。搬來你的小板凳,聽聽看吧。也許,你會很有收穫,也許你也走上了自學python的不歸路。開講啦 然後就是要打好基礎,要想成為一名優秀的python程式設計師,最重要的是掌握程式設計思想。有了思想,我們就可以觸類旁通。在學習...