毋庸置疑,未來的一切都會(huì)是自動(dòng)化的,那么一份從事自動(dòng)化軟件開發(fā)的工作要穩(wěn)妥得多——這一點(diǎn),相信是很多程序員父母的考量。也因此,目前的市面上充斥著各色各樣的幼少兒編程書籍、編程夏令營、課外編程俱樂部等等。然而,這些雖然可以教會(huì)孩子們特定的編程語言,但是實(shí)際上它們與軟件開發(fā)工作沒有多大關(guān)系,反而會(huì)扼殺孩子們的好奇心——本文的作者JOE MORGAN就發(fā)表了自己的看法。
以下為譯文:
在最近一次的例行午夜小跑時(shí),我看到一堆關(guān)于教孩子們寫代碼的書。
教大家寫代碼的書籍隨處可見,但從來沒有見過這么多直接針對小學(xué)生的。這些編程書籍只是用來培訓(xùn)孩子們“面向未來的技能”等龐大資源的一部分,還有編程夏令營、課外編程俱樂部,旨在教給幼兒園小朋友們JavaScript基礎(chǔ)知識(shí)的小程序等等。
很容易理解父母為什么要求孩子學(xué)習(xí)編程——還有什么比教會(huì)孩子寫代碼更好的方法來讓我們的孩子為未來的自動(dòng)化社會(huì)做好準(zhǔn)備呢?如果未來的一切都是自動(dòng)化的,那么一份從事自動(dòng)化軟件開發(fā)的工作要保險(xiǎn)得多。如果學(xué)習(xí)編程是好的,那么早點(diǎn)學(xué)習(xí)就更好了。然而,這些書籍雖然可以教會(huì)孩子們特定的編程語言,但是實(shí)際上它們與軟件開發(fā)工作沒有多大關(guān)系。
“不會(huì)編程就是新文盲”?
我的一位前同事曾經(jīng)在編程訓(xùn)練營接受訓(xùn)練,而這個(gè)訓(xùn)練營的口號(hào)就是“不會(huì)編程就是新文盲”。這種觀點(diǎn)是所有編程書籍和游戲的核心。有一本暢銷書說盡早學(xué)會(huì)編程“對孩子的將來必不可少”。這等于告訴我們,不教孩子編程就等于不教他們閱讀。
當(dāng)然這種觀點(diǎn)是很荒謬的,不會(huì)編程不等于文盲。雖然大多數(shù)父母都有文化和讀寫能力,但是大多數(shù)父母都不是程序員,也不知道程序員需要什么樣的技能。針對孩子們的編程書籍給出的都是一些問題的“標(biāo)準(zhǔn)”答案。如果你的孩子能掌握編程語言,他們就能快速輕松地寫出這些代碼。然而編程不僅僅是寫代碼,編程是復(fù)雜的,需要同時(shí)具備創(chuàng)造性和明確性。作為一名程序員僅僅懂得編程語言是不夠的,某些技能只能在非常年輕時(shí)學(xué)習(xí)。
好的程序員不僅僅是讓代碼工作,他們希望寫出好代碼。
沒有書本會(huì)教你解決以前沒人碰到過的問題
在我的職業(yè)生涯早期,我寫了一些代碼配置在一組遠(yuǎn)程服務(wù)器上運(yùn)行。一開始代碼似乎運(yùn)行得很好,至少我是這樣認(rèn)為的。直到18個(gè)小時(shí)后,電話在半夜響起,告訴我一些服務(wù)器出了故障。我從床上爬起來,拿起我的筆記本電腦,在故障服務(wù)器上再次運(yùn)行代碼。然而幾小時(shí)后,另外一些服務(wù)器又報(bào)故障。
問題不是出在代碼語法上。如果是語法問題,首先服務(wù)器上編譯就不會(huì)成功。故障是由更深層的問題引起的,隔離和解決這個(gè)問題花了我?guī)讉€(gè)星期,經(jīng)常半夜里被叫醒。
編程就是這樣的,先試一試,看看代碼能否工作,再試一次,如此反復(fù)。簡單的問題應(yīng)該會(huì)有現(xiàn)成的解決方案或者至少用開源代碼來解決,剩下的就是一些繁雜的而且獨(dú)特的問題。沒有書本教你如何解決以前無人碰到過的問題,這就是為什么我不想讓我的孩子學(xué)習(xí)代碼語法。我希望他們學(xué)習(xí)如何解決問題,深入研究問題,學(xué)會(huì)創(chuàng)新。那我們該怎么教呢?
純粹地寫代碼不可取,質(zhì)量、創(chuàng)造性和代碼美感同樣值得學(xué)習(xí)
有一天,我兒子擔(dān)心他的椅子搖搖晃晃。我們一起看了看后他找到了問題在哪里,原來椅子的一個(gè)螺絲松了。我找出一把用過的六角扳手,告訴他如何擰緊。他很好奇如果他向相反方向擰螺絲,會(huì)發(fā)生什么。他這樣試了直到把螺絲擰出來。后來我們把椅子拆開了,然后試著裝回來,我們一起裝了好幾次,有幾次裝錯(cuò)位了,直到最后他滿意地把椅子裝好。就像編程一樣,試一試,看看它是如何工作的,再試一次。
當(dāng)然,讓代碼能夠工作只是軟件開發(fā)的第一步。下一步是使代碼清晰、可重用和整潔。在我的職業(yè)生涯早期,有一次我完成了一個(gè)功能的編碼工作,并把它交給一位資深程序員檢查。他看了一眼我的代碼,看到間距不一致,行也對不齊而且命名不規(guī)范,直接說一句“重做”就打回來了。盡管我的代碼能夠工作而且語法也對,但這仍然是錯(cuò)誤的。好的程序員不僅僅是讓代碼工作,他們希望寫出好代碼。
對質(zhì)量的把握是很多程序員覺得最難的事情。設(shè)計(jì)良好的代碼使用起來感覺很好,而亂七八糟的代碼會(huì)使程序員敬而遠(yuǎn)之。最好的程序員會(huì)將藝術(shù)家的敏感融入抽象邏輯中,他們相信代碼的美感對編程來說,和所有的算法或編碼模式一樣重要。
最近,我和妻子帶著兒子做曲奇餅干。每次我們加入一種成分,我們都會(huì)停下來檢查一下面團(tuán),討論一下面團(tuán)的手感和顏色。它夠軟嗎?所有成分都和勻了嗎?當(dāng)我們把面團(tuán)攤開時(shí),兒子摸了摸表面,看著我妻子教他如何把一切都弄得又勻又薄。然而,最難的部分是切出餅干形狀。像所有的孩子一樣,他本能地將餅干模子放到面團(tuán)中間開始切,每次我們都試圖告訴他如何將餅干模子在面團(tuán)上依次切出餅干形狀,以便讓每個(gè)面團(tuán)做出最多的餅干。
每一個(gè)步驟——精確測量每種成分,檢查面團(tuán)的柔軟度和是否和勻,精確放置餅干模子以減少浪費(fèi)——都是在教他關(guān)于質(zhì)量的知識(shí)。僅僅教他做餅干的步驟(比如按照一個(gè)餅干食譜)很難讓他學(xué)會(huì)分辨質(zhì)量的好壞并做出好餅干,而這只能通過感覺和經(jīng)驗(yàn)傳遞。每次你讓孩子參與到你所重視的事情中來,你就是在教他們?nèi)绾伟咽虑樽龊?,你也是在為他們以后編程做?zhǔn)備。
但在過程中你教他們的不僅僅如此,你讓他們知道這世界充滿了有趣的事情等待他們?nèi)グl(fā)現(xiàn),你向他們展示如何充滿激情地在他們所做的每件事中尋找那種瞬間的質(zhì)量感。最棒的是,即使他們不能成為程序員——當(dāng)然這是大多數(shù)人不應(yīng)該也不愿看到的——同樣的技能幾乎可以在任何職業(yè)、每種愛好、每天的生活中使用。然而當(dāng)我們強(qiáng)迫小孩僅僅學(xué)習(xí)代碼語法時(shí),我們就給他們灌輸這樣一種觀念:純粹地寫代碼才是有用的,而那些關(guān)于質(zhì)量、創(chuàng)造性和代碼美感的知識(shí)不值得學(xué)習(xí)。
成年人可以直接去學(xué)習(xí)編碼,孩子們則需要發(fā)掘他們的好奇心。
-
編程語言
+關(guān)注
關(guān)注
10文章
1947瀏覽量
34848 -
代碼
+關(guān)注
關(guān)注
30文章
4808瀏覽量
68813
原文標(biāo)題:一個(gè)程序員父親的呼吁:不要教你的孩子從小學(xué)編程!
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論