作為踩過(guò)無(wú)數(shù)坑,純自學(xué)入門(mén)的人古今,站在新手角度屁魏,我認(rèn)為難點(diǎn)主要有三個(gè):
編程容錯(cuò)率低,容易讓新手恐慌沧卢。
傳統(tǒng)學(xué)習(xí)路徑正反饋太慢蚁堤,沒(méi)有多少成就感。
技術(shù)更新快但狭,教材容易過(guò)期披诗,學(xué)習(xí)阻力大。
下面展開(kāi)來(lái)說(shuō)一下立磁。
1.容錯(cuò)率低
任何語(yǔ)言學(xué)習(xí)初期呈队,新手都會(huì)犯錯(cuò)。
但英語(yǔ)這種外語(yǔ)唱歧,不會(huì)因?yàn)橐粋€(gè)錯(cuò)誤就無(wú)法繼續(xù)學(xué)習(xí)宪摧。你不會(huì)主謂一致,也能繼續(xù)學(xué)習(xí)定語(yǔ)從句颅崩,因?yàn)檎Z(yǔ)言的接收方是人類(lèi)几于,有自動(dòng)修正功能。
但編程中沿后,哪怕一個(gè)小錯(cuò)誤沿彭,都可以讓你寸步難行,機(jī)器可不會(huì)自動(dòng)修正尖滚。
我曾經(jīng)在入門(mén)階段喉刘,因?yàn)橐粋€(gè)錯(cuò)誤,整整折騰了將近半年漆弄。
當(dāng)時(shí)我按照教程操作睦裳,結(jié)果出現(xiàn)了錯(cuò)誤。根據(jù)錯(cuò)誤提示撼唾,去網(wǎng)上找解決方法廉邑,發(fā)現(xiàn)解決方法千差萬(wàn)別。
在Stack Overflow(國(guó)外的一個(gè)編程互助平臺(tái))搜索問(wèn)題,會(huì)發(fā)現(xiàn)即便是同樣的錯(cuò)誤鬓催,具體情況也差別很多肺素。
對(duì)于新手,我只能用最笨的方法:一個(gè)個(gè)試錯(cuò)宇驾。
運(yùn)氣好時(shí)倍靡,能夠試到正解,運(yùn)氣不好课舍,就會(huì)引入新錯(cuò)誤塌西,進(jìn)而陷入到“問(wèn)題—>找方法—>方法帶來(lái)新問(wèn)題—>找更新的方法.....”這種惡性循環(huán)中。
這個(gè)循環(huán)進(jìn)行到第三輪筝尾,你已經(jīng)不知道最初的問(wèn)題是什么了捡需。
就像上網(wǎng)購(gòu)物時(shí),看到了下面的推薦商品筹淫,一路點(diǎn)下去站辉,就忘記最初要買(mǎi)啥了。
我曾經(jīng)遇到過(guò)一個(gè)最奇葩的問(wèn)題:安裝編程語(yǔ)言時(shí)损姜,死活都過(guò)不去饰剥。結(jié)果搬家之后,這個(gè)問(wèn)題居然解決了摧阅。
原因是:原先的wifi速度太慢汰蓉。然而并沒(méi)有人解釋過(guò)這個(gè)可能性。
學(xué)習(xí)過(guò)程中棒卷,這種雞毛蒜皮的小事會(huì)把你打敗顾孽。
所以對(duì)于新手來(lái)說(shuō),如果想要入門(mén)比规,最好找一些步驟比較少的教程若厚,盡量能快速跑通,然后再考慮如何改進(jìn)蜒什。
每多一個(gè)步驟盹沈,就多了一次出錯(cuò)的地方。
2.反饋太慢
下決心學(xué)編程的人吃谣,都會(huì)有一個(gè)感受:學(xué)了半天,還是只會(huì)打印“Hello World”做裙。
就像背了半天單詞岗憋,最終還是只能記住“abandon”一樣,讓人沮喪锚贱。
我嘗試學(xué)習(xí)過(guò)幾種不同的編程語(yǔ)言(JavaScript仔戈,Ruby,Python)發(fā)現(xiàn)雖然語(yǔ)言不同,但學(xué)習(xí)的路徑都差不多:從變量到函數(shù)监徘,從條件到循環(huán)晋修。而且,第一課永遠(yuǎn)是“Hello World”凰盔。
基礎(chǔ)內(nèi)容確實(shí)要學(xué)習(xí)墓卦,但這類(lèi)教材最大的問(wèn)題是:沒(méi)告訴學(xué)生,為啥要學(xué)户敬,學(xué)了之后能咋用落剪。
我學(xué)編程的原因很簡(jiǎn)單:讓計(jì)算機(jī)幫我搞定一些重復(fù)性工作(批量修改文件,爬取網(wǎng)站內(nèi)容等)
我愿意學(xué)習(xí)基礎(chǔ)內(nèi)容尿庐,但前提是你得跟我說(shuō)忠怖,這和我的需求有什么關(guān)系,否則太容易“從入門(mén)到放棄”了抄瑟。
這就好比凡泣,我學(xué)英語(yǔ)是為了撩妹,你可以讓我背單詞學(xué)語(yǔ)法皮假,但得跟我說(shuō)這些知識(shí)最終是如何應(yīng)用到我和外國(guó)美女聊天上的鞋拟,不然我真的沒(méi)有動(dòng)力啊。
踩過(guò)很多坑之后钞翔,發(fā)現(xiàn)了一本“拯救”我的編程書(shū):《Automate the Boring Stuff with Python》
這本書(shū)也講基礎(chǔ)严卖,但里面有幾個(gè)章節(jié),馬上讓我知道了布轿,為啥要學(xué)習(xí)這些哮笆,以及我可以如何運(yùn)用。
學(xué)完之后汰扭,我就寫(xiě)了個(gè)程序稠肘,讀取所有的word文檔,把帶有某個(gè)關(guān)鍵詞的句子摘下來(lái)萝毛,整理到了一個(gè)txt文件中项阴。
如果你和我一樣,學(xué)了半天還只會(huì)打“Hello World”笆包,我推薦這本書(shū)环揽。
當(dāng)然,更好的方法是直接根據(jù)自己的需求庵佣,在網(wǎng)上尋找特定代碼歉胶,然后再反過(guò)來(lái)學(xué)習(xí)基礎(chǔ)。
就好比你想看《哈利波特》的原著巴粪,然后邊查詞典邊看通今,這樣起碼保證每個(gè)單詞粥谬,你學(xué)著都是有用的。
比如我有個(gè)需求就是:批量重命名文件辫塌。
那我就搜索“python rename file”漏策,相應(yīng)的簡(jiǎn)單教程有很多,步驟也簡(jiǎn)單臼氨,我能更快地獲得正面反饋掺喻。
這樣的學(xué)習(xí)過(guò)程,比傳統(tǒng)路徑更能給我?guī)?lái)成就感一也,我也就不容易半途而廢了巢寡。
3.更新太快
技術(shù)更新的速度,遠(yuǎn)比教材更新的快椰苟,這也導(dǎo)致了大家只能教一些基礎(chǔ)內(nèi)容抑月,因?yàn)榈搅藨?yīng)用層面,任何一個(gè)微小的改動(dòng)舆蝴,都會(huì)讓教材失效谦絮。
比如我之前在網(wǎng)上買(mǎi)了一個(gè)網(wǎng)課,學(xué)習(xí)elasticsearch(一個(gè)自建的搜索引擎洁仗,可以幫你搭建自己的搜索系統(tǒng))层皱。
結(jié)果沒(méi)多長(zhǎng)時(shí)間,就發(fā)現(xiàn)人家的版本更新赠潦,原來(lái)的一個(gè)模塊改名字了叫胖。
如果是沒(méi)有多少經(jīng)驗(yàn)的新人,就很難根據(jù)具體情況“隨機(jī)應(yīng)變”她奥,只能按照老版本來(lái)運(yùn)行瓮增。
這就好比你想用微信給人家發(fā)紅包,結(jié)果新版本的紅包按鈕換地方了哩俭,你又不知道去哪里找绷跑,如果想發(fā)就得換成老版本,市面上的教程也都是教你如何在老版本上發(fā)紅包凡资。
最好的教程砸捏,當(dāng)然是官方的文檔(相當(dāng)于這個(gè)技術(shù)的說(shuō)明書(shū))。但多數(shù)人因?yàn)檎Z(yǔ)言限制(多數(shù)都是英語(yǔ))或者基礎(chǔ)薄弱(人家只說(shuō)重點(diǎn))或者沒(méi)有耐心隙赁,操作起來(lái)還是有困難垦藏。
水果有當(dāng)季的,教材也有它的保質(zhì)期伞访,能否找到“未過(guò)期”的教程膝藕,是初學(xué)者面臨的另一個(gè)難題。
從這點(diǎn)來(lái)看咐扭,比起視頻教材,其實(shí)文字類(lèi)的教程可能更好。因?yàn)橹谱骱托薷牡某杀径急容^低蝗肪,可以緊隨技術(shù)的變化袜爪。
以上是我作為一個(gè)“不忘初心”的入門(mén)者能想到的三個(gè)編程的難點(diǎn)。
當(dāng)然薛闪,這里的難點(diǎn)針對(duì)的還是新手入門(mén)階段辛馆,并且不以“成為程序員”為目標(biāo),只是想要利用編程豁延,提升工作效率昙篙,增加生活品質(zhì)的朋友。
如果你也想要學(xué)習(xí)編程诱咏, 或者也有類(lèi)似的“從入門(mén)到放棄”的過(guò)程苔可,歡迎留言交流。