從大一入學(xué)被調(diào)劑到計(jì)算機(jī)專業(yè),到喜歡上這個(gè)專業(yè),再到畢業(yè)拿到10多個(gè)offer,最終進(jìn)入理想的大廠工作?;叵肫饋磉@些年確確實(shí)實(shí)踩了很多坑。我剛開始學(xué)習(xí)編程的時(shí)候也想一口吃成一個(gè)胖子,想速成,但是有時(shí)候卻是不盡人意。 關(guān)注小編頭條號私信【學(xué)習(xí)】,即可免費(fèi)領(lǐng)取java基礎(chǔ)學(xué)習(xí)資料。 回憶了下這幾年學(xué)習(xí)編程的過程,整理了一些我自己認(rèn)為很需要注意的幾個(gè)方面,分享給大家。希望能讓初學(xué)編程的你,少走一些彎路,可能文章比較長,但我真心希望初學(xué)編程的你能夠認(rèn)真看完,至少,我認(rèn)為如果我剛學(xué)編程的時(shí)候看到這篇文章,對我或多或少是有一些幫助的。 我個(gè)人是一名計(jì)算機(jī)專業(yè)的學(xué)生,很多人可能會(huì)認(rèn)為我是在課堂上學(xué)到的編程,其實(shí)不是這樣。 我認(rèn)為科班出身和非科班出身的學(xué)生最大的區(qū)別在于科班出身的學(xué)生知道去學(xué)什么,知道每一門課程是干什么的;還有一些必須完成的作業(yè)、小項(xiàng)目,促使他們?nèi)プ鲆恍?shí)際的編碼練習(xí),除此之外,真的全靠自學(xué)。 對于自學(xué)編程,我認(rèn)為首先應(yīng)該談的是如何去避免一些坑,這樣就可能節(jié)約大把的時(shí)間。下面我就以問題的形式來分享一些我認(rèn)為重要的方面。 1. 我應(yīng)該選擇什么編程語言 可能困擾編程新手最多的一個(gè)問題是【我應(yīng)該學(xué)什么編程語言】或者【我需要學(xué)習(xí)哪些課程才能做出一個(gè)web、一個(gè)app】,很多人一直糾結(jié)這個(gè)問題,陷入了東學(xué)一點(diǎn)、西看一點(diǎn)的死循環(huán),到頭來啥也沒學(xué)好,這會(huì)很浪費(fèi)時(shí)間。 剛上大一的時(shí)候,我也很想知道應(yīng)該選擇什么編程語言。我問了很多人,網(wǎng)上各種查資料,但所能得到的答案都很片面,多數(shù)對這個(gè)問題答非所問,總是回答說“某某編程語言難”,“某某編程語言性能好”。其實(shí)作為初學(xué)者,我們對計(jì)算機(jī)體系都不了解,就不要過多地去糾結(jié)性能,或者難易等因素,原因我等下再說。 如果你有明確的方向,那么很好選擇。如果你想做算法、機(jī)器學(xué)習(xí)方向,那么python是最好的選擇。如果你想做web開發(fā),java、php等都可以。如果想做一些更底層的工作,那么就可以選c。當(dāng)然這是建立在你有明確方向的基礎(chǔ)上。可是,很多人都沒怎么接觸過計(jì)算機(jī)行業(yè),特別是和我一樣剛?cè)雽W(xué)就被調(diào)劑到計(jì)算機(jī)專業(yè)的人。對這些同學(xué)來說,各個(gè)編程語言就只是個(gè)名字,除了叫法不一樣,你根本不知道它們有什么差別。所以索性不要糾結(jié)了,我替你選一個(gè)吧。 如果你是在校大學(xué)生,那么你有大把連續(xù)的時(shí)間,就先學(xué)習(xí)c,然后再學(xué)c++。我個(gè)人是學(xué)c入門的,也許很多人不理解我為什么推薦學(xué)c,因?yàn)閏和c++都很難、很復(fù)雜,看起來并不適合入門。然而正是它們的難和復(fù)雜才能讓你更好地理解計(jì)算機(jī)系統(tǒng)【計(jì)算機(jī)系統(tǒng)不是指操作系統(tǒng)】。學(xué)習(xí)編程不是學(xué)習(xí)編程語言,而是學(xué)習(xí)一個(gè)計(jì)算機(jī)生態(tài),即一個(gè)龐大的知識(shí)體系。只會(huì)編程語言而不理解整個(gè)計(jì)算機(jī)的體系,就像只會(huì)寫字而寫不出好文章。了解c/c++和了解計(jì)算機(jī)系統(tǒng)是極為貼合的,向下可以幫助你更容易地理解操作系統(tǒng)、編譯原理、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)組成原理,為什么呢?因?yàn)檩^為底層的東西很多都是用c實(shí)現(xiàn)的,和系統(tǒng)的貼合度極高,很多教材源碼甚至教程,在講述這些知識(shí)的時(shí)候都是用c或c++作為媒介。而向上,c++面向?qū)ο蟮臋C(jī)制,也可以做出一些應(yīng)用,譬如五子棋游戲等,也不會(huì)顯得那么枯燥。花個(gè)小半年時(shí)間了解c和c++,之后你就會(huì)覺得看書、看資料可以輕松很多。 如果你是一個(gè)上班族,但是剛剛學(xué)習(xí)編程,可能學(xué)c和c++對你來說有些復(fù)雜和困難,因?yàn)閷W(xué)習(xí)它們確實(shí)是很需要時(shí)間。你們不像在校生那樣有大把的連續(xù)時(shí)間,而零碎的時(shí)間去學(xué)習(xí)一個(gè)比較復(fù)雜的東西效果不見得有那么好,所以可以先學(xué)一些【更容易見效】的編程語言,從python入手吧,至少能快速做出一些小應(yīng)用,不至于丟失了興趣,但是真的要入門編程又還得看看與計(jì)算機(jī)系統(tǒng)相關(guān)的書籍,這樣才能更深層次地去編程,譬如【深入理解計(jì)算機(jī)系統(tǒng)】這一本書可以讀很多遍,這本書把整個(gè)計(jì)算機(jī)系統(tǒng)給串起來了。 2.學(xué)習(xí)編程,我需要學(xué)習(xí)哪些課程? 我要學(xué)哪些課程?我為什么要學(xué)習(xí)如高數(shù)、離散數(shù)學(xué)、線性代數(shù)、概率論等課程? 這個(gè)問題也是之前困擾了我很久的問題。不過我現(xiàn)在想通了,對于【高數(shù)、離散、線性代數(shù)、概率論】等課程,很好解釋,做算法的同學(xué)肯定知道為啥要學(xué)習(xí)這些課程。機(jī)器學(xué)習(xí)中會(huì)大量用到上述提到的課程,所以會(huì)比較好理解。對在校生而言,學(xué)校開設(shè)的很多課程我們不知道為什么要學(xué),我們很疑惑,不知道學(xué)它有什么用,這個(gè)時(shí)候我們就會(huì)很糾結(jié),還會(huì)產(chǎn)生抵觸情緒。這很正常,因?yàn)槲覀儗W(xué)習(xí)得不夠深入,自然不能理解它們的用處。 在我看來,大學(xué)本科課程更多的是面向“面”的教學(xué),即什么課程都教給你一些,但是又講得不那么深入;而工作或者讀研,更多的則是面向“點(diǎn)”的學(xué)習(xí),用到的知識(shí)更專。本科時(shí),學(xué)校也不知道你以后是去搞算法、還是搞架構(gòu)、還是搞服務(wù)器開發(fā),甚至去搞硬件,所以學(xué)校需要你學(xué)很多課程,至少有個(gè)了解。對學(xué)生來說,一方面可以從中選擇自己感興趣的點(diǎn);一方面也可以對未來的就業(yè)方向有些啟發(fā)。所以即使像數(shù)電、模電等課程,雖然之后可能用不著,但是你也要學(xué),并且會(huì)花費(fèi)大量的時(shí)間。雖然你最后不一定去搞硬件,但是這些課程也會(huì)讓你更容易去理解一些知識(shí),比如cpu中的邏輯器件。 如果你在大一的時(shí)候就有一個(gè)明確的定位,知道自己今后想從事哪方面的工作,課程與課程之間是可以調(diào)一下優(yōu)先級的。不過像大學(xué)物理,這種課程確實(shí)是對編程沒有幫助,但是像我前面所說的,大學(xué)教育更注重廣度,大物等課程可能就是為了給你普及生活常識(shí)吧。 其實(shí),大學(xué)教育的問題是普遍存在的,我認(rèn)為我們學(xué)習(xí)一項(xiàng)技能的時(shí)候,應(yīng)該采取的是項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí),即需要用到什么東西時(shí)不會(huì)了再去學(xué),而不是先填鴨式的都填進(jìn)腦子,并且在學(xué)習(xí)的過程中我們還不知道它這是干嘛用的,等之后用到了,甚至不記得自己學(xué)過,反而查資料才會(huì)想起:哦,原來我之前學(xué)的xx科目是這個(gè)用處啊,可是我當(dāng)時(shí)并沒有好好學(xué)。很多時(shí)候?qū)W生時(shí)間的浪費(fèi)可能還是要怪老師、怪學(xué)校,他們一開始沒給我們做好充分的課程介紹。所以,在經(jīng)過比較多的編程和項(xiàng)目實(shí)踐后,我認(rèn)為一個(gè)比較好的學(xué)習(xí)方式是,改良版的項(xiàng)目驅(qū)動(dòng)學(xué)習(xí)法。即: 學(xué)習(xí)一段時(shí)間,做個(gè)小項(xiàng)目,將做項(xiàng)目遇到的問題記下來,針對性地學(xué)習(xí)相關(guān)知識(shí),然后再實(shí)踐,再學(xué)一段時(shí)間理論,讓知識(shí)成網(wǎng)狀發(fā)射狀地變大。當(dāng)然,項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)有一個(gè)弊端,就是每次學(xué)習(xí)的知識(shí)都是項(xiàng)目所需要的,很零碎、不成體系,所以需要改良,即在采取項(xiàng)目驅(qū)動(dòng)學(xué)習(xí)法的時(shí)候每天抽一段時(shí)間去完整地讀一本書,或者一個(gè)相關(guān)問題的完整介紹,這樣就很容易把一些知識(shí)成體系地串起來。這樣一段時(shí)間下來,慢慢的,你就知道我們?yōu)槭裁匆獙W(xué)那么多科目,學(xué)這些科目能干什么。 為了表達(dá)地更加形象,我就舉一個(gè)小例子,是我最近遇到的。我本身的工作是做Linux C++的,但不僅限于此。我個(gè)人對python、數(shù)據(jù)分析,以及機(jī)器學(xué)習(xí)等內(nèi)容比較感興趣,大家可以看到我最近也在我的專欄發(fā)布了很多文章。就從數(shù)據(jù)獲取開始,我講講我這兩個(gè)月做了什么東西。 談到數(shù)據(jù)獲取,可能最容易想到的是爬蟲,爬蟲是一個(gè)在知乎上被說爛了的話題,所以我不想多說它是什么。很多時(shí)候有人覺得爬蟲簡單,為什么呢,因?yàn)橛?strong>現(xiàn)成的框架,所以獲取少量的數(shù)據(jù)就比較容易。但是當(dāng)你需要爬取的數(shù)據(jù)很大的時(shí)候(比如我之前抓取了知乎500萬用戶的數(shù)據(jù),在下班的時(shí)間、用自己家里普通的pc,計(jì)算機(jī)性能并不是那么好,比不上服務(wù)器,又要在不被封IP的情況下抓到這么大量的數(shù)據(jù),然后對數(shù)據(jù)進(jìn)行清洗,最后還要可視化展示),使用現(xiàn)成的爬蟲框架就并不是那么容易實(shí)現(xiàn)了。況且,我需要抓很多數(shù)據(jù)源,并不是一錘子買賣。所以我選擇去開發(fā)一個(gè)系統(tǒng),即在現(xiàn)有的框架下進(jìn)行二次開發(fā),搭建一個(gè)屬于自己的爬蟲系統(tǒng),并植入一些算法。我在系統(tǒng)中添加了很多中間件,直到現(xiàn)在,它還可以在10分鐘內(nèi)就部署一個(gè)能抓取大量數(shù)據(jù)的爬蟲應(yīng)用。當(dāng)然,這個(gè)過程也遇到了不少麻煩,我就簡單講講,怎么去攻克一個(gè)個(gè)問題。 下面先給出一個(gè)樹形圖,從上往下每一個(gè)圈都代表了學(xué)習(xí)過程中遇到的難點(diǎn),如果你現(xiàn)在看不懂,沒關(guān)系,我想告訴你的是一種梳理知識(shí)的方法: 如上圖所示,就是一個(gè)項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的例子,我們的目的是為了獲取數(shù)據(jù),所以選擇了爬蟲:
上述六點(diǎn)簡單講了講項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的介紹,其實(shí),你看到的每一個(gè)小圓圈,深挖下去都大有文章。我們現(xiàn)在看到的只是冰山一角,任何一條學(xué)習(xí)路徑學(xué)習(xí)下去都深無止境,我們不可能完全學(xué)會(huì),可是項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)最大的好處是讓你知道你應(yīng)該去學(xué)習(xí)什么,而不是先學(xué)一大堆知識(shí),再去做一個(gè)項(xiàng)目。嚴(yán)格來說,項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的可視化路徑是一張網(wǎng),而不是一棵樹,這里畫成樹狀只是為了便于大家理解。 除了獲得數(shù)據(jù),還有清洗數(shù)據(jù)、分析數(shù)據(jù),甚至挖掘數(shù)據(jù),最后可視化數(shù)據(jù)并且展示數(shù)據(jù),這里我就不一一介紹了。可以參見下面這張圖,如果大家想看我做的一些成品,可以看看我的其他文章。 3.學(xué)習(xí)編程是否需要制定計(jì)劃? 學(xué)習(xí)編程是否需要制定計(jì)劃,該制定什么樣的計(jì)劃呢? 我認(rèn)為不只是編程需要制定計(jì)劃,其他任何的學(xué)習(xí)和工作都需要制定計(jì)劃。我從13年上大學(xué)就開始定期給自己制定計(jì)劃,這個(gè)習(xí)慣也一直堅(jiān)持到了現(xiàn)在,受益匪淺。當(dāng)然也不只是制定學(xué)習(xí)計(jì)劃,還可以列一些自己需要做的其他的事情。我最近在整理筆記的時(shí)候也發(fā)現(xiàn)了一些之前記錄的計(jì)劃和清單,可以給大家看看。比如下圖就是我14年寫的筆記,筆記上都留下了最后一次打開的時(shí)間。列舉了一些自己需要看的文章,因?yàn)楫?dāng)時(shí)不太懂得規(guī)劃,所以比較亂。 到了16年的時(shí)候,我做計(jì)劃做得更加有條理了。下圖是16年10月30日的計(jì)劃,那時(shí)候我已經(jīng)大四了,并且已經(jīng)找到了工作、簽了滿意的offer,并且沒有什么課,按理說可以放松放松了,不過我還是制定了一些學(xué)習(xí)計(jì)劃,并且選擇在11月去百度實(shí)習(xí)。從內(nèi)容上看,主要是學(xué)習(xí)英語和計(jì)算機(jī)專業(yè)課,因?yàn)榇笠淮蠖臅r(shí)候我確實(shí)不明白為什么要學(xué)習(xí)專業(yè)課,到了大三下想清楚原因以后,我也就一直在重新學(xué)習(xí),因?yàn)橛?jì)算機(jī)專業(yè)課真的很重要!學(xué)好了這些課,能讓你在日后的學(xué)習(xí)工作中輕松不少: 除了大四制定的計(jì)劃外,大二的時(shí)候我也制定過較為詳細(xì)的學(xué)習(xí)計(jì)劃(如下圖),把需要學(xué)習(xí)的內(nèi)容進(jìn)行了編號,存入表格,這樣才能讓你過得有條不紊。當(dāng)然,很難完全按照計(jì)劃去執(zhí)行,不過制定相應(yīng)的計(jì)劃能讓你清楚地知道自己應(yīng)該干什么。 所以,如果你是在校生,那么好好制定一個(gè)計(jì)劃吧,因?yàn)槟阌写蟀训臅r(shí)間。當(dāng)然,如果你已經(jīng)畢業(yè)了,沒關(guān)系,我現(xiàn)在也在上班,同樣也列舉了自己最近要學(xué)習(xí)的內(nèi)容,如下圖(2月27日更新過),包括了短期和長期需要學(xué)習(xí)的內(nèi)容: 4.編程是否需要做筆記和寫博客? 我覺得,寫不寫博客無所謂,因?yàn)椴┛褪且獙懗鰜斫o大家看的,可能要保證格式美觀、語法也要盡量準(zhǔn)確,最好比較有文采,我覺得太麻煩也就一直沒寫。而筆記是必須要做的,并且記筆記是一個(gè)長期的過程。在學(xué)習(xí)的過程中,我們一直都在追求一種最高效的學(xué)習(xí)方法,比如,同一個(gè)班的同學(xué),他用他的學(xué)習(xí)方法考上了清華,而你用同樣的方法就不行,為什么?因?yàn)樗姆椒▽λ约憾允嵌ㄖ苹模赡芮掖蟾怕什贿m合你,比如他的筆記你不一定能看懂,因?yàn)樗赡茉O(shè)計(jì)了一套屬于自己的符號。而就編程而言,很多同學(xué)說善用搜索引擎,是對的,可是搜索引擎搜出來的是別人的答案。你照搬過來,也許可以用,但是你沒有記住,這些知識(shí)并不屬于你,之后你可能還會(huì)遇到同樣的問題,又要再搜索一遍,可能很難找到之前的那個(gè)答案了。但是記筆記就不一樣,記筆記是定制化的,對你自己定制,你可以用自己最爽的表達(dá)方式來描述一個(gè)問題,是自己寫給自己看的東西,看了幾遍之后就能非常迅速和容易地理解。之后遇到相同的問題可以快速地通過找筆記解決。 舉個(gè)例子,下圖是我記錄的一些關(guān)于gdb【linux下調(diào)試c++的工具】的使用的一些筆記。我只記錄了我自己最常用的一些內(nèi)容,也許你看著很亂,但是我就能很容易看懂,這就是我的定制化。 記筆記的習(xí)慣一定要堅(jiān)持,等過個(gè)一年或者兩年,這就是你巨大的財(cái)富,因?yàn)槟鞘侵挥心悴拍芸炊臇|西。我已經(jīng)記錄了4年多、1G多的內(nèi)容,現(xiàn)在的筆記基本已經(jīng)形成了體系,可以給大家展示其中的一部分。 專業(yè)知識(shí)相關(guān)筆記: 開發(fā)相關(guān)的筆記: 一些類目: 5.有什么比較好的編程方法? 除了上述分享的一些方法,我認(rèn)為在同一時(shí)間段不要學(xué)習(xí)太多類別的課程,比如你可以同時(shí)學(xué)習(xí)python和html/css,但是你不要同時(shí)學(xué)python、操作系統(tǒng)、編譯原理、計(jì)算機(jī)組成、數(shù)據(jù)結(jié)構(gòu)、網(wǎng)絡(luò),我曾經(jīng)試過,一門課沒學(xué)一會(huì)兒就學(xué)下一門,其實(shí)上一門根本學(xué)不到什么實(shí)際的知識(shí)。因?yàn)橛洃浿R(shí)是符合艾賓浩斯記憶曲線的。對于一門課,特別是很難的專業(yè)課,譬如操作系統(tǒng),你每天看半小時(shí),效果是比較差的,可能你熱身就得半小時(shí)。所以寧可每天學(xué)兩門,然后每一門學(xué)長一點(diǎn)的時(shí)間,比如兩小時(shí)?!井吘箤W(xué)校上課,一次課也得兩小時(shí)】,要避免貪多,一口吃不成個(gè)胖子。 6.我需要刷oj么? 我認(rèn)為剛開始編程的時(shí)候還是應(yīng)該刷的,但是一定要注意,不要被你周圍的“X神”給誤導(dǎo)了。因?yàn)槲疑洗髮W(xué)的時(shí)候,身邊總是有很多搞計(jì)算機(jī)競賽的人,他們之間都互相稱對方為“X神”,某某神又使用一個(gè)牛逼的算法,將程序時(shí)間從1秒降低到了0.999秒。我要?jiǎng)翊蠹业氖?,刷題不是為了達(dá)到這個(gè)目的,不是說非要在競賽中拿獎(jiǎng),除非你是特別喜歡,否則,沒必要去背代碼。我們刷題的目的是適應(yīng)寫代碼的感覺,在這個(gè)過程中你會(huì)遇到編譯錯(cuò)誤,你會(huì)慢慢去記住一些語法、關(guān)鍵字,并理解一些概念,還可以自己去使用它,比如實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)。慢慢的你就會(huì)變得有經(jīng)驗(yàn),知道一些錯(cuò)誤產(chǎn)生的原因。我也是慢慢這樣過來的,我現(xiàn)在在工作和下班以后寫代碼時(shí),基本都不用IDE了,比如寫c++,要么vim,要么就是sublime,而調(diào)試用的是我前面提到的工具gdb。即,有一個(gè)文本編輯器就能寫代碼,脫離了IDE的束縛。在寫oj之后一段時(shí)間,在比較熟練了之后,就可以不去刷題了,可以去譬如github這樣的網(wǎng)站上找點(diǎn)項(xiàng)目來看,然后自己跟著寫一下,編程能力慢慢就提升了。就計(jì)算機(jī)專業(yè)來說,很多同學(xué)在大一上完編程課之后,就很少寫代碼了,這樣是很不好的。刷題除了可以鍛煉編程能力,對于找工作前突擊也很有作用。比如,我之前投遞過華為公司的研發(fā)崗位,校招的時(shí)候有筆試題。我就在16年國慶的時(shí)候刷了一下華為的oj,我記得筆試是600分的總分,過100就給面試機(jī)會(huì),而我很輕松的就拿了500分,而當(dāng)時(shí)也就刷了20多道華為的題。 7.看書還是看視頻? 網(wǎng)上有不少人鄙視看視頻學(xué)習(xí)的同學(xué),我不知道為什么,因?yàn)槲艺J(rèn)為看視頻是一個(gè)很好的學(xué)習(xí)方式。不過我們得明白看書和看視頻分別有什么優(yōu)缺點(diǎn)。 其實(shí)我是很建議看視頻入門的,因?yàn)槟壳熬W(wǎng)上的應(yīng)用型【非學(xué)術(shù)型:比如清華大學(xué)的操作系統(tǒng),非常難】的視頻都是很簡單的,很多是面向初學(xué)者的,視頻能用較短的時(shí)間告訴你你現(xiàn)在所學(xué)的技術(shù)可以干什么,可能需要先修哪些知識(shí),可以幫助我們搭建一個(gè)項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的網(wǎng)絡(luò)??墒且曨l也有個(gè)缺點(diǎn):就是知識(shí)非常的雜,很不系統(tǒng)。雖然現(xiàn)在很多教學(xué)網(wǎng)站都提供了學(xué)習(xí)路徑,但是這些路徑中的視頻很多時(shí)候都不是同一個(gè)老師錄制的,只是按照知識(shí)的依賴關(guān)系排的順序,所以,如果想通過視頻去系統(tǒng)地學(xué)習(xí)一門知識(shí),是比較困難的?!井?dāng)然,一些學(xué)術(shù)型的視頻還是很推薦的,比如斯坦福的機(jī)器學(xué)習(xí),清華的操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)等課程,能堅(jiān)持看完,絕對受益匪淺】。而應(yīng)用型的,比如web開發(fā)等知識(shí),還是得看書。書籍等特點(diǎn)就是系統(tǒng)化,由淺入深,你可以定制化地看自己薄弱的章節(jié)。所以一個(gè)比較好的學(xué)習(xí)方式是: 看視頻入門,看書進(jìn)階。 8.多久能學(xué)會(huì)編程? 其實(shí)這個(gè)問題是沒有答案的,如果只是想做出一個(gè)小應(yīng)用,2個(gè)月足矣,而就我個(gè)人而言,我認(rèn)為學(xué)習(xí)編程不是學(xué)習(xí)一種編程語言,而是學(xué)習(xí)一個(gè)生態(tài),一個(gè)計(jì)算機(jī)系統(tǒng),所以無止境。 9.我應(yīng)該選擇什么資料,看什么書? 其實(shí)這個(gè)問題也是很多編程新手容易困惑的問題。網(wǎng)絡(luò)上擁有我們一輩子都看不完的教程和資料,所以現(xiàn)在應(yīng)該不會(huì)存在找不著視頻教程、找不著書看的問題。而問題就是我們不知道看什么視頻、看什么書。從開始學(xué)編程到現(xiàn)在,我也買了上百本書,而真正適合自己的好書并不多。而視頻教程的問題就更嚴(yán)重了,東看一點(diǎn)、西看一點(diǎn),知識(shí)很難組織成網(wǎng)絡(luò)。所以學(xué)習(xí)編程的過程中,我們遇到的最大的問題是:當(dāng)我們遇到問題的時(shí)候,在大量資料面前,我們不知道選擇什么資料去學(xué)習(xí)。即使我們使用項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的方法找到了我們的方向,但是同一個(gè)路徑下,也有很多資料。前文列舉的項(xiàng)目驅(qū)動(dòng)式學(xué)習(xí)的圖中,我們是自上而下的去發(fā)現(xiàn)問題,然后再解決問題。如果能有人幫我們組織好學(xué)習(xí)路徑,然后自下而上地去學(xué)習(xí),那么效率可能會(huì)提高很多。 關(guān)注小編頭條號私信【學(xué)習(xí)】,即可免費(fèi)領(lǐng)取java基礎(chǔ)學(xué)習(xí)資料。 若有侵權(quán),請告知小編,小編立即處理。 End |
|