編譯 | 傑寶麻麻 來源 | 鯨魚與蝸牛

博雅小學堂專欄作者

“每個人都應該學習編程,就行每個人都應該學習讀書寫字一樣。” 在”未來已來“的當下,”編程“被認爲是孩子適應人工智能時代的切入口之一。

然而前兩天,美國知名在線雜誌Slate上刊登了一篇文章——《我是程序員,我不會教孩子學編程,你也別教》。這位名叫Joe Morgon的美國程序員爸爸在文章中寫道:成年人可以學習語法,但只有孩子才能學會擁抱好奇心。您是否同意文中的觀點?歡迎在留言區討論。

01.父母爲什麼要讓孩子學編程

最近一次夜跑時,我路過一個很大的櫥窗,裏面展示的是教孩子們學編程的書。其中有些書我看到過,但我從來沒有見過這麼多針對小學生編程的書。

而這些書不過是冰山一角,市面上還有大量跟編程相關的資源——夏季編程訓練營、課後編程俱樂部、教幼兒園孩子JavaScript基礎知識的APP——它們都在向孩子傳授面向未來的技能。

父母爲什麼要讓孩子學編程呢?

新加坡一個編程校外班

答案顯而易見。

除了學習開發軟件之外,還有什麼更好的方法,能讓我們的孩子迎接一個由軟件統治的未來世界?如果一切都將自動化,那麼做控制自動化的人會更安全。如果學習編程有用,那麼宜早不宜遲。

雖然這些學習編程的產品可能教孩子們特定的編程語言,但卻與真正的軟件開發關係不大。

02.不教孩子編程等於不教他們讀書寫字?

我的一位前同事曾經在一個編程訓練營接受過訓練,這個訓練營的口號是“編程是一種新的讀寫能力”。這種刻意營造的焦慮感是所有編程書和遊戲的核心。

正如一本很火的書中所描述的:儘早學習編程“是孩子爲未來做好準備必不可少的一步”。這話給人的印象是,不教孩子編程在某種程度上等同於不教他們讀書寫字。

這種說法顯然是荒謬的,編程不等同於讀書寫字。雖然大多數父母都受過教育,並且知道給孩子讀書,但他們大多數並不是程序員,也不知道程序員需要什麼樣的技能。

兒童編程書將編程看作能夠爲一系列問題找到“正確”解決方案的能力。如果你的孩子能夠掌握編程語法(syntax),就能夠快速輕鬆地完成任務。

但,這並不是程序員的工作方式。

03.學會編程語法就算學會編程了嗎

軟件開發是一項艱難的工程,是創造力和決心的結合。開發人員需要掌握的遠遠不止語法這麼簡單。

傑出的程序員不光是讓軟件能夠運行,他們還希望開發出優秀的軟件。

在職業生涯的早期,我編寫了一些代碼來配置和運行一組遠程服務器。我的代碼運行得很順利——至少我是這麼想的——直到大約18個小時後,夜半鈴響,我得到通知:一組服務器宕機了。

我從牀上爬起來,走到筆記本前,又運行了一遍代碼來替換宕機的服務器。幾小時後,又有一組服務器宕機了。

宕機並不是由語法引發的,如果有的話,服務器一開始就無法搭建起來。宕機的原因非常複雜,經過好幾周和無數個被叫醒的夜晚,我終於解決了問題。

編程就是這樣:先寫代碼,看看它是否有效。失敗了就再試一次。如果問題很簡單,有些開源代碼就能解決。剩下的就是需要獨創性的艱鉅任務。沒有書可以教你如何解決前所未有的問題。

這就是爲什麼我不希望我的孩子學習編程語法——我希望他們學會解決問題,深入研究問題,發揮創造力。

04.爲什麼說比起學編程掌握這些能力更重要?

那我們該怎麼教這些能力呢?

有一天,我的兒子有點擔心他那把搖搖晃晃的椅子。我們一起觀察了下椅子,兒子幫我找到了問題:有一個螺釘鬆了。我在家裏找到一個適合的六角扳手,並演示怎麼把螺釘擰緊。

之後,兒子很好奇:如果反方向擰會發生什麼?他試了試,直到螺釘被擰出來爲止。最後,我們反覆將椅子拆開,再裝回去——中間還裝錯過——直到兒子滿意爲止。

先試試,看結果如何,不行就再試一次。

當然,讓軟件運行只是開發者的第一步。下一步是使代碼清晰、可重複使用、簡潔。

在我職業生涯的早期,我曾經開發了一項功能,交給一位高級開發人員審覈。他看了一眼我草率的間距、錯亂的代碼行和混亂的命名規範,說:“重寫!”

我編寫的代碼可以運行,語法有效,但仍然是錯的。優秀的程序員並不滿足於讓代碼能運行,他們希望開發出優秀的軟件。

對於許多開發人員來說,這種追求品質的感覺是最難掌握的。精心設計的代碼讓人賞心悅目,而醜陋的代碼讓人退避三舍。

一流的開發人員學會將抽象的邏輯與藝術家的敏銳融合在一起。程序員也要學着信奉一點,那就是代碼的美感,與算法以及代碼模式一樣重要。

最近,我和妻子與兒子一起製作糖餅乾。每次把配料混合在一起,我們就會停下來查看麪糰,討論它的質地和顏色。麪糰是否光滑?所有配料是否已經均勻地混合在一起?

我們擀麪團時,兒子摸了摸麪糰的表面,然後看媽媽演示如何讓材料鋪得均勻而且厚薄適中。

然而,最難的部分是切出形狀。像所有的孩子一樣,他本能地將模具推到鋪開的麪糰的中間,而每次,我們都會解釋如何將模子挨個放在一起以便有最大化地利用麪糰。

精確稱量材料、如何在壓麪糰時保持光滑度和延展性、怎樣放置模具減少麪糰的浪費——每一步都讓兒子知道什麼是追求品質。

如果只是按照步驟操作,孩子就很難理解遵循菜譜和追求優秀的差別在哪裏。

這些只能通過感受和體驗來傳遞。每當你讓孩子參與你認爲重要的事時,就在向他們言傳身教如何做好一件事,包括編程。

不僅如此,你還告訴他們,這個世界充滿有趣的事等待我們去發現你向孩子展示瞭如何保持激情,無論做什麼,都要尋找那種轉瞬即逝的品質感。

這樣的好處是,即使他們將來不會成爲程序員——實際上,大多數人不應該也不會成爲程序員——同樣的技能適用於幾乎任何職業、任何愛好和任何人的生活。

當我們強迫孩子們學習編程時,我們其實向孩子灌輸了這樣一種觀點:如果某些技能不是公認能賺到錢,就毫無價值。

成年人可以學習語法,只有孩子才能學會擁抱好奇心。

作者:傑寶麻麻,爲倆娃痛並快樂着的麻麻,哈佛碩士畢業,十年科技媒體從業經驗,熱愛分享有關科技與教育的一切。個人公衆號:鯨魚與蝸牛

相关文章