这一问题的重点在于,如果想成为乔布斯式的人物,你能否找到“自己的史蒂夫·沃兹尼亚克”?乔布斯拥有提出概念和硬件设计方面的天才,因此可以完美地与沃兹尼亚克这样的软件工程师合作开发出想要的产品。此外,尽管不是传统意义上的“骨灰级程序员”,但乔布斯的技术能力也很强,仅仅只是被沃兹尼亚克这一方面的光芒所掩盖。乔布斯只有一个。如果会编程,那么可以从事与甲骨文CEO拉里·埃里森和Facebook CEO马克·扎克伯格一样的创业活动;如果不会编程,也不具备乔布斯的才能,那么如何在科技行业立足?
不仅仅是工程专业,关于文科、理科、工程和艺术等专业的学生是否应当学习编程,大部分人的看法是肯定的。以下为主要原因:
1.学习编程有助于理解原则,同时分步骤解决问题
我们如何利用技术去解决能源、环境、城市、健康和教育等方面的问题?学习编程是一个好方式。这里以艺术专业为例。艺术专业学生通常倾向于从宏观角度来看问题。例如在城市规划中,规划人员需要思考如何在建筑、环境和交通等方面实现可持续发展,相关工作非常繁琐。在这一过程中,许多编程工具可以带来帮助,包括用于数据可视化的JavaScript框架D3。
规划人员可以收集有关多少土地可被用于城市绿地的数据,并基于D3框架进行可视化处理。实现这一目标需要完成许多后端工作,包括从哪里收集数据,如何以符合统计学原理的方式来组织数据,在可视化的过程中如何配色,如何基于公式来简化数据。与此同时,规划人员还需要兼顾可视化工作是否符合总体项目。简单来说,这一工作实际上是一个包含分析问题和解决问题在内的逻辑思维过程,而编程是思维过程的具体体现。
从更高的层次来看,在编程时规划人员所做的主要是为了获得更直观的信息,以帮助决策。程序有助于更好地“讲故事”。一个故事的要素通常包括概要、循序渐进的叙事方式以及人物。而编程语言的一系列组成部分,包括指令、if语句、变量属性及循环,可以扮演故事要素的角色。如果能更好地讲故事,那么就能更好地决策。
2.未来一个世纪,超过40%工作可被机器取代。成为机器的主人,否则就被淘汰。
社会发展速度很快。在新经济环境下,除非掌握新的计算技术,否则很难适应社会。设计大师唐·诺曼(Don Norman)曾写过《设计心理学》和《未来产品设计》两本书,其中一个主要观点是:最优秀的机器不会帮你完成一切,而是帮你更好地决策,人类应当利用这些机器使自己更聪明。那么具体方式是什么?还是编程。如果需要与这些机器互动,或是进入一个极度依赖机器(包括智能手机和计算机)的经济环境,我们需要知道如何操纵这些机器。
实际上,这些机器能完成的工作远超出科技行业的范畴。《哈佛商业评论》曾在一篇文章中指出,科技能与许多行业形成互动。文章称:“我们开发的软件可用于多个垂直行业,例如汽车、医疗以及公共服务。这些行业都有不同的需求和目标。因此在讨论多样性时,主要是指客户、工作及背景的多样性。在曼哈顿街头,你能遇到许多专业人士。将他们集合在一起,你将发现一个拥有丰富技能和经验的人才库,这是硅谷难以匹敌的。当这种专业的多样性遭遇软件工程天才时,才能推动突破性的创新。”
举一个简单的例子。在许多公司,人们都会花很多时间向Excel表格输入数据,某些时候数据源为客户文件。在这种情况下,文件中的数据往往是可分析的,例如.csv文件。如果不懂编程,那么即使是名校毕业生也需要把大量时间浪费在复制粘贴数据的操作上。而如果掌握了VB这样的简单语言,整个工作就可以自动化。无论何时获得多大的数据文件,只要运行一遍代码,所有数据就可以被导入Excel表格中。
而另一个例子是许多大学课程设置中的数值计算。大学之所以开设这样的课程是为了告诉学生,如何使用程序重复处理大批量数据。回顾在大学研究室中的生活,我们可以发现最具效率的同学往往编程能力都很强,他们可以使用Perl或VB等语言来分析文件或处理数据,并输出一个可被其他程序识别的结果。尽管这些脚本程序并不复杂,但这有助于完成许多日常工作,节约大量时间用于思考问题或从事其他方面的学习。
简而言之,如果希望脱颖而出给世界带来不同,那么编程是一项必要技能。