如何教新人編程:授人以漁(可他要是釣到河豚會死的)
我們來談談如何教新人編程。在各種編程語言的郵件群和用戶小組中我經常看見一句諺語。每個人都知道這句話,這篇文章的標題就是它的后半部分。
授人以魚不如授人以漁
當有人問有哪些學習編程的資源的時候,其他人經常會這么抱怨。Python群里有人這么說;PHP群里有人這么說,JavaScript群里有人這 么說;幾乎我加的每個群都有人這么說。大家的意思是說:新人應該自己去尋找學習資源,而不是去麻煩前輩。為什么這些菜鳥不能自行Google呢?搜索結果 頭條明顯就是***的學習資源嘛,因為頭條被推薦的次數最多啊。
恭喜你,你教會別人如何把魚線投到水里了,但是你還沒教他哪種魚可以吃,哪種魚不可以吃呢。在編程教育的世界里,“大多數”的魚都不能吃。
舉個例子,當你搜索和PHP相關的東西時,搜索結果的首頁總會出現W3Schools。這個網站看著很權威,有各種各樣的教程,而且一搜就是它!很可惜這是條毒魚。
我們來接著簡單談談上一個問題:PHP,這個被人廣為詬病的編程語言驅動著這世界上大多數網頁。PHP絕對不是沒有問題的。我今天不會在這篇文章里 為它平反(我以前干過這事兒),但其實PHP***的問題是如何學習它。它是一個非常流行的語言,它拼命地想讓新手能夠很容易地學會它。在20年里,它從一 個簡單的腳本語言發展成了連資產上十億的大公司都用的強力工具。在成長過程中,它遭遇了足夠多的各種困難,其中很多都和不良的設計方案有關。
現今的PHP有很多優點,但不幸的是這些優點對新手來說并不那么容易理解。它們是基于多年編程理論的高層概念。PHP仍然支持很多過去那些純真年代 時的基礎理念,它們用來做夫妻店這種小型網站足夠了,但是上升到大公司這種規模就不夠用了。簡而言之,它們不安全,效率低,甚至是“錯的”。但同時它們容 易理解,而且好使。
W3schools上教的基本都是“錯”的方式,這意味著把它作為學習資源的新手一開始學的就是不好的編碼規范,然后他們寫了更多不好的PHP代 碼,然后導致更多的人只能學到錯誤的方法。這個癥結不是針對W3Schools的 – 幾乎所有的PHP教學資源都充斥著錯誤但是簡單的解決問題的方法。這個癥結如此流行以至于我一時想不起來任何一個能讓我放心的PHP的教學資源。
如果你教一個人去“釣”學習資源,他會釣上來海里最糟糕的魚,然后你還得來收拾殘局。如果你遞給他頭幾條魚,然后給他講去哪兒能釣到更多好魚,那么你就成功了一半了。如果還能教他為什么不應該釣其他那些不好的魚,那么他已經走在成為編程界里積極而有成效的一員的路上了。
我們需要多思苦索究竟應該如何對待正在學習的新手。就Python來說,給完全不會編程的新手,我推薦《Learn Python The Hard Way》,對已經會了一兩門編程語言的人我推薦官方的python tutorial教程。這些簡單的資源解釋了如何正確使用這門語言。當他們有了這樣的基礎知識之后,我會指給他們到哪里去找更多更好的信息。
下面的場景是我希望看見的。編程界的人們能團結起來創造一些好的學習資源,而不是叫別人去鳥槍法一樣地“google一下”。教人編程的過程中,讓他們自己去找答案當然是很重要的,但在放他們下山之前,你也必須教他們究竟應該尋找什么樣的資源。
所以讓我們不要再教人釣到什么破魚都吃了,這樣也許我們就不需要再浪費那么多時間來修復那些寫得不好的代碼了。
原文鏈接:http://blog.samuellevy.com/post/45-teach-a-man-to-fish-and-hell-die-when-he-catches-fugu.html