(给程序员的那些事加星标)

转自:CSDN(ID:CSDNnews),翻译:苏本如

【导读】:毋庸置疑,未来的一切都会是自动化的,那么一份从事自动化软件开发的工作要稳妥得多——这一点,相信是很多程序员父母的考量。也因此,目前的市面上充斥着各色各样的幼少儿编程书籍、编程夏令营、课外编程俱乐部等等。然而,这些虽然可以教会孩子们特定的编程语言,但是实际上它们与软件开发工作没有多大关系,反而会扼杀孩子们的好奇心——本文的作者 JOE MORGAN 就发表了自己的看法。

以下为译文:

在最近一次的例行午夜小跑时,我看到一堆关于教孩子们写代码的书。

教大家写代码的书籍随处可见,但从来没有见过这么多直接针对小学生的。这些编程书籍只是用来培训孩子们“面向未来的技能”等庞大资源的一部分,还有编程夏令营、课外编程俱乐部,旨在教给幼儿园小朋友们 JavaScript 基础知识的小程序等等。

很容易理解父母为什么要求孩子学习编程——还有什么比教会孩子写代码更好的方法来让我们的孩子为未来的自动化社会做好准备呢?如果未来的一切都是自动化的,那么一份从事自动化软件开发的工作要保险得多。如果学习编程是好的,那么早点学习就更好了。然而,这些书籍虽然可以教会孩子们特定的编程语言,但是实际上它们与软件开发工作没有多大关系。

1、“不会编程就是新文盲”?

我的一位前同事曾经在编程训练营接受训练,而这个训练营的口号就是“不会编程就是新文盲”。这种观点是所有编程书籍和游戏的核心。有一本畅销书说尽早学会编程“对孩子的将来必不可少”。这等于告诉我们,不教孩子编程就等于不教他们阅读。

当然这种观点是很荒谬的,不会编程不等于文盲。虽然大多数父母都有文化和读写能力,但是大多数父母都不是程序员,也不知道程序员需要什么样的技能。针对孩子们的编程书籍给出的都是一些问题的“标准”答案。如果你的孩子能掌握编程语言,他们就能快速轻松地写出这些代码。然而编程不仅仅是写代码,编程是复杂的,需要同时具备创造性和明确性。作为一名程序员仅仅懂得编程语言是不够的,某些技能只能在非常年轻时学习。

好的程序员不仅仅是让代码工作,他们希望写出好代码。

2、没有书本会教你解决以前没人碰到过的问题

在我的职业生涯早期,我写了一些代码配置在一组远程服务器上运行。一开始代码似乎运行得很好,至少我是这样认为的。直到18个小时后,电话在半夜响起,告诉我一些服务器出了故障。我从床上爬起来,拿起我的笔记本电脑,在故障服务器上再次运行代码。然而几小时后,另外一些服务器又报故障。

问题不是出在代码语法上。如果是语法问题,首先服务器上编译就不会成功。故障是由更深层的问题引起的,隔离和解决这个问题花了我几个星期,经常半夜里被叫醒。

编程就是这样的,先试一试,看看代码能否工作,再试一次,如此反复。简单的问题应该会有现成的解决方案或者至少用开源代码来解决,剩下的就是一些繁杂的而且独特的问题。没有书本教你如何解决以前无人碰到过的问题,这就是为什么我不想让我的孩子学习代码语法。我希望他们学习如何解决问题,深入研究问题,学会创新。那我们该怎么教呢?

3、纯粹地写代码不可取,质量、创造性和代码美感同样值得学习

有一天,我儿子担心他的椅子摇摇晃晃。我们一起看了看后他找到了问题在哪里,原来椅子的一个螺丝松了。我找出一把用过的六角扳手,告诉他如何拧紧。他很好奇如果他向相反方向拧螺丝,会发生什么。他这样试了直到把螺丝拧出来。后来我们把椅子拆开了,然后试着装回来,我们一起装了好几次,有几次装错位了,直到最后他满意地把椅子装好。就像编程一样,试一试,看看它是如何工作的,再试一次。

当然,让代码能够工作只是软件开发的第一步。下一步是使代码清晰、可重用和整洁。在我的职业生涯早期,有一次我完成了一个功能的编码工作,并把它交给一位资深程序员检查。他看了一眼我的代码,看到间距不一致,行也对不齐而且命名不规范,直接说一句“重做”就打回来了。尽管我的代码能够工作而且语法也对,但这仍然是错误的。好的程序员不仅仅是让代码工作,他们希望写出好代码。

对质量的把握是很多程序员觉得最难的事情。设计良好的代码使用起来感觉很好,而乱七八糟的代码会使程序员敬而远之。最好的程序员会将艺术家的敏感融入抽象逻辑中,他们相信代码的美感对编程来说,和所有的算法或编码模式一样重要。

最近,我和妻子带着儿子做曲奇饼干。每次我们加入一种成分,我们都会停下来检查一下面团,讨论一下面团的手感和颜色。它够软吗?所有成分都和匀了吗?当我们把面团摊开时,儿子摸了摸表面,看着我妻子教他如何把一切都弄得又匀又薄。然而,最难的部分是切出饼干形状。像所有的孩子一样,他本能地将饼干模子放到面团中间开始切,每次我们都试图告诉他如何将饼干模子在面团上依次切出饼干形状,以便让每个面团做出最多的饼干。

每一个步骤——精确测量每种成分,检查面团的柔软度和是否和匀,精确放置饼干模子以减少浪费——都是在教他关于质量的知识。仅仅教他做饼干的步骤(比如按照一个饼干食谱)很难让他学会分辨质量的好坏并做出好饼干,而这只能通过感觉和经验传递。每次你让孩子参与到你所重视的事情中来,你就是在教他们如何把事情做好,你也是在为他们以后编程做准备。

但在过程中你教他们的不仅仅如此,你让他们知道这世界充满了有趣的事情等待他们去发现,你向他们展示如何充满激情地在他们所做的每件事中寻找那种瞬间的质量感。最棒的是,即使他们不能成为程序员——当然这是大多数人不应该也不愿看到的——同样的技能几乎可以在任何职业、每种爱好、每天的生活中使用。然而当我们强迫小孩仅仅学习代码语法时,我们就给他们灌输这样一种观念:纯粹地写代码才是有用的,而那些关于质量、创造性和代码美感的知识不值得学习。

成年人可以直接去学习编码,孩子们则需要发掘他们的好奇心。

转自:CSDN(ID:CSDNnews)

推荐阅读

(点击标题可跳转阅读)

教孩子编程的 6 个小建议

小孩也学编程,中国朝 AI 狂奔

关注「程序员的那些事」加星标,不错过圈内事

喜欢就点一下「好看」呗~

一程序员爸爸呼吁,不要从小教孩子学编程相关推荐

  1. 一位程序员爸爸抵制编程教育:“我不会教孩子学编程”

    看点 5G技术.人工智能.虚拟现实,越来越多的新词汇冲刷着我们的认知."未来已来,编程为王."在大众看来,编程似乎与读写一样,成为接轨未来的必备技能.然而,美国程序员爸爸Joe M ...

  2. 《趣学JavaScript——教孩子学编程》——2.4 Boolean

    本节书摘来自异步社区<趣学JavaScript--教孩子学编程>一书中的第2章,第2.4节, 作者: [美]Nick Morgan(摩根)译者: 李强,更多章节内容可以访问云栖社区&quo ...

  3. 趣学python教孩子学编程_[转载]学编程要从娃娃抓起——教孩子学Python

    祝家长与娃娃们编程开心! 请记住,学习本书进行编程是件让人开心的事.不要把它当成一项任务.要把编程当做是在创建有趣的游戏或者应用来和朋友还有其他人分享. 学习编程是一种很好的思维训练,效果也非常好.但 ...

  4. 《趣学JavaScript——教孩子学编程》——第1章 认识JavaScript1.1 认识JavaScript

    本节书摘来自异步社区<趣学JavaScript--教孩子学编程>一书中的第1章,第1.1节,作者: [美]Nick Morgan(摩根)译者: 李强,更多章节内容可以访问云栖社区" ...

  5. 《趣学JavaScript——教孩子学编程》——1.5 本章小结

    本节书摘来自异步社区<趣学JavaScript--教孩子学编程>一书中的第1章,第1.5节,作者: [美]Nick Morgan(摩根)译者: 李强,更多章节内容可以访问云栖社区" ...

  6. 教孩子学编程 python语言版_教孩子学编程 PYTHON语言版 PDF_IT教程网

    资源名称:教孩子学编程 PYTHON语言版 PDF 资源目录: 第1章Python基础--认识环境1 1.1认识Python3 1.2用Python编写程序5 1.3运行Python程序5 1.4本章 ...

  7. 《趣学Python——教孩子学编程》——第1部分 学习编程 第1章 Python不是大蟒蛇 1.1 关于计算机语言...

    本节书摘来自异步社区<趣学Python--教孩子学编程>一书中的第1章,第1.1节,作者[美]Jason R. Briggs,尹哲 译,更多章节内容可以访问云栖社区"异步社区&q ...

  8. 教孩子学编程 python 下载_趣学python pdf 中文下载

    趣学python教孩子学编程pdf是一本专为想要学习python不错的朋友准备的入门教程,可以轻松的帮之你由浅入深,由难到易的学习python编程,感兴趣欢迎下载学习! 趣学python教孩子学编程p ...

  9. python教孩子学编程,教孩子学编程(Python语言版)

    教孩子学编程(Python语言版) 第1 章 Python 基础:认识环境 #NiceHexSpiral.py #运行后,挺奇特,整个作画过程,完全呈现. import turtle colors=[ ...

最新文章

  1. dedecms /member/reg_new.php SQL Injection Vul
  2. 风之语.甲骨文裁员之我见
  3. 6.TMG2010公网发布
  4. 排序方法整理Java - 冒泡排序、选择排序、插入排序、快速排序
  5. 《Java多线程编程核心技术》读后感(十五)
  6. 数据结构基础入门知识
  7. arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲
  8. python 静态方法_Python编程思想(25):方法深度解析
  9. MySQL(一)存储引擎
  10. asp.net mvc(九)
  11. Fiddler工具工作原理
  12. 记录HttpWebRequest辅助类
  13. ssis oracle配置,从SSIS包SQL Server连接Oracle数据库
  14. 简述主成分分析法的基本步骤_主成分分析的基本步骤
  15. Keras框架使用Vnet2d模型对遥感图像语义分割
  16. marked + mathjax 实现支持数学公式的 markdown 转 html
  17. 微信禁止模拟器登录怎么办?
  18. 网络爬虫排除协议robots.txt介绍及写法详解.
  19. HTML如何画一条分割线_div之间设置间隔
  20. html5 m4a,Audio Unit播放aac/m4a/mp3等文件

热门文章

  1. python行列式值计算程序_解行列式程序 python代码实现
  2. 计算机视觉-猫狗大战
  3. 疫情影响下的行业生态
  4. 数学建模常用算法:蚁群算法求解tsp问题+att48算例测试【java实现--详细注释】
  5. 完全彻底手动卸载MSSQL2005数据库
  6. sql 抛出异常raiserror()
  7. 出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题
  8. 2012二级c语言标准答案,2012计算机二级试题答案 C语言(网友版)
  9. 文件不能拖拽到软件中打开,鼠标指针变为禁止符号
  10. CentOS中如何检测IP冲突