为什么人人都应该学习编程?

在当下这个时代,“人人是否都该学编程”是一个值得深思的话题。因此在开始讨论之前, 我非常荣幸能够较早地参与到这个话题。但仅在此浅谈一二以做抛砖之用,想必此后定会有 越来越多的国内外编程牛人和教育专家,来对这个问题提出更具深度的思考。

当计算机从构想世界走进现实,软件开发所能衍生出的无限创意,深深吸引着全世界的 有志青年。特别是近二十多年来,在互联网的快速发展历程中,程序员们充分发挥自己的热 情和想象力,在二进制的世界里,创造了一个又一个的奇迹。

从美国的 Microsoft、Google、 Facebook,到中国的 Baidu、Alibaba、Tencent,从互联网,到移动互联网,再到物联网,这 些奇迹构建的虚拟世界正在深刻地改变我们的生活。

除了计算机专业和软件学院毕业的学生们,越来越多的年轻人,或自学、或通过 IT 职业 教育平台的再培训,也投入到程序员的职业队伍之中,大有一股“人人都在学编程”之风。

然而,“人人是否都该学编程”吗?我也曾将这个问题转给过我的同学们,很快,这些以 计算机专业为主的同学就展开了积极的讨论,并且自然地分成了两派:支持和反对。很明显, 这是一个值得深入思考和讨论的议题。

但是要回答好这个问题,我觉得需要先弄明白如下几个问题:

  1. “人人”指的是哪个群体?
  2. “都该”指的是“学编程”的必要性吗?
  3. “学编程”又指的是学到什么程度?

首先,“人人”是指像我们这些已经进入职场的成年人,还是我们下一代尚且年幼的孩子, 亦或是我们的长辈?要弄清楚这个问题,就像我们在做产品时候要确定的用户画像,不同的用户群体有不同的需求。

对于成年人来说,学习编程的目的性是很强的,或许是本职工作的 需要,但更多的是想变更职业,从而满足社会对 IT 工作者的需求缺口,同时也一定程度提高 薪酬待遇。

而对于未成年人来说,学习编程的源动力更多的来源于兴趣爱好。在和我的同学 们讨论的时候,大家都自然的将讨论的目标指向了我们的下一代。一方面是因为我们都陆续 有了子女,另一方面这或许是因为我们大多是计算机专业毕业的有关,所以问题没有指向我 们自身。

去年的夏天,我升级成为了一名父亲,自身也开始面临了教育子女的问题。即使不涉及 到学编程的问题,自然也会碰到要不要让小孩学钢琴、学下棋、学绘画等等的问题。这些可 以培养孩子的兴趣、陶冶情操,也为他们以后的发展打开了一扇门。

在涉及到学编程的问题 时,可以将它和其它的兴趣爱好一同对待,但是否一定“人人都要学”?我觉得过于极端了。 因为,这些都还需要看孩子的兴趣和天赋。

就像此前几年北京等城市的“奥数”热,这本是为了选拔有数学天赋的孩子而进行的,可 一旦和升学挂了钩,就几乎变成了“人人都要学”,使“学奥数”变了性质。

在我看来,“学编程” 也是这样。如果将其和升学绑定,自然会让很多的家长和学生投入到畸形的“编程热”之中, 这当然不是我们所期望看到的。 对于广大的中小学生群体,“编程”倒确实可以尝试接触一下。一方面可以理解计算机的 工作方式,另一方面它也可以锻炼将自然语言表达为格式化语言的能力。

‘正如今天我们在很 多学校所见到的那样,“学编程”可以成为基础教育的一个选修学科,也可以成为数学教育的 一个补充,这些都为兴趣“学编程”打开了一扇窗。

当然,“浅显接触的编程”和“以编程为专业 或职业”是不同的,这就涉及到了学到什么程度的问题。 学到什么程度主要是根据学习者的年龄段、认知水平、和学习目标而选择合适的学习内 容、并规划好学习路径:

  1. 如语言的选择:C/C++,JAVA,C#,Python,PHP,Java,Html5 等;
  2. 如计算机基础课程的学习:操作系统、数据结构、算法和算法分析等;
  3. 如专业知识的学习:TCP/IP 网络协议、视频编码、人工智能、数据挖掘等。

当然,对于当今的 IT 教育从业者需要做的事情,是让“学编程”成为一件容易的事情,并 为广大初学者提供具有良好用户体验的交互的可视化编程实践环境。

最后,这些天刚好又翻看了《编程之美》,以其中的一段话作为结尾:发现问题、分析 问题、解决问题,寻找更优的解法,总结规律,抽象出算法的过程以及由此产生的成就感—— 这就是编程的乐趣所在,也是为什么有更多人在尝试接触编程甚至将其转为自己的职业。