再过一次生日,我就满七十岁了。而且正如大家印象中一样,像我这个年纪的人往往对电脑方面的事情一无所知——至少在澳大利亚是如此。
我们需要在孙男娣女或者专门的“老年人计算”课程的指导下才能学会如何使用电子邮箱、网络浏览器以及Facebook。人们往往不指望我们这群老家伙能掌握文字处理或者电子表格制作之类的知识。而且如果我们打算买台电脑,最靠谱的办法就是向年轻人请教,了解哪些机型最适合自己。
但事实上,我个人对于计算机以及计算技术相当了解——虽然我从来不是什么什么IT专业人士,也没有接受过任何IT方面的培训。我也懂得如何编程。每次坐在电脑前面,我都会用一用自己亲手编写的程序。而且在退休之后,我也把不少时间用在了写代码身上。
有点颠覆大家的印象吧,那么这一切是如何成真的?
往昔的梦想
作为编程生涯的第一步,我早在1961年就在高中里学习到了计算机编程方面的基础知识——没错,就是1961年。当时我们高中购置了一台IBM大型机,它的作用是处理打孔卡上的数据,使用的则是FORTRAN编程语言的一套早期版本。我们学校里的孩子们就是这样学会了如何利用FORTRAN编写简单的程序。
高中毕业的两年之后,科幻小说家艾萨克·阿西莫夫(Issac Asimov)对五十年后的生活作出了设想——到那个时候计算机将会变得无处不在:
“每一位高中学生都会学习基础计算机技术,他们将精通二进制计算并通过培训掌握如何‘Fortran’(这一名称源自‘formula translation’,即公式翻译)这样的其它未来编程语言。”
很抱歉,阿西莫夫先生。尽管如今计算机设备已经融入到每个人的日常生活当中,但我们澳大利亚这边的高中仍然不愿将任何编程语言纳入正规教程。教材决策者们压根不打算培训出能够适应市场需要的计算机技术人员——而在数字化经济体系之下,这类人才已经成为由计算机驱动的大型企业当中最为重要且往来活跃的员工群体。
澳大利亚的高中毕业生如今已经拥有一定程度的微软Word、微软Excel以及微软PowerPoint使用经验,但也仅此而已。他们已经准备好迎接以Windows为核心的办公任务了,雇主先生——不管你们实际需要他们拥有哪些技能储备!
近期趋势
最近几年以来,在学校当中教授编程知识已经成为一股新的趋势。这一方面是受到了海外风气的推动,例如Hour of Code活动就鼓励来自世界各的上千万在校学生参与到编程学习中来。而在澳大利亚,国家制定的新课程当中也包含了“数字化技术”作为组成部分,旨在从小学阶段就帮助孩子们树立编程思想。澳大利亚国内各大正常甚至也开始以越来越高的热情对待编程教育这项重要工作。
这种对于编程的突如其来的热情似乎在很大程度上源自市场经济的实际需要。澳大利亚的孩子们必须为“未来的工作岗位”做好充分准备。澳大利亚商业理事会主席Catherine Livingstone在2015年4月的National Press Club当中指出:
“就澳大利亚国内的情况而言,年轻人们的数字化技术素养与其它竞争对手国之间的差距正在逐步增加。如果我们要进一步提高生产力并在国际竞争当中占据一席之地,就迫切需要出台一项十年发展规划来消除这种差距。”
换句话来说,澳大利亚已经承认自身还没有为当下的数字化工作环境做好准备。甚至从互联网开始腾飞的过去二十年中,澳大利亚一直在世界范围内处于相关教育缺失的落后状态当中。为了顺利应对未来可能出现的相关挑战,现在我们有必要呼吁那些尚不熟悉编程知识的教育从业者们帮助自己的学生成为计算机教师,从而为澳大利亚培养出更多具备此类技能的人才。阿西莫夫的预言已经在很大程度上得到了证实——虽然还不够准确。就目前来看,将编程语言课程引入高中教育可能需要75到80年的时间,而非他所估计的50年。
在学校当中推广编程教育也许是件好事,但也未必能带来理想的效果。四十多年前,高中教育帮我实现了编程梦想。但是我猜那些并不了解编程的政策制定者们对它的理解还仅限于一种与计算机相关的工作,而且单纯以为编程只是从业者们获取不菲收入的手段。
安全还是风险?
2015年6月,《彭博商业》杂志发布了系列文章,题为《世界是编程者们的》。为什么这么说?就我个人的理解,文章的意思是:代码控制着计算机与使用计算机的用户群体。如果大家使用预先编写好的代码,包括计算机自带程序、通过DVD乃至网络下载获取、或者是从IT供应商处购买,那么用户将永远只是用户——对于程序本身,各位将没有参与能力及发言权。在这种情况下,我们能做的仅仅是遵循软件编写者的思路推进,而不可能另外探索出任何实现途径。在大多数情况下,大家都需要花钱购买默认受到限制的种种权限,而且始终受到最终用户许可协议的严格约束。
但在另一方面,如果大家自行编写代码,那么各位就成了真正的主人。我们能够控制自己的设备,乃至其它有能力运行这些代码的硬件平台。编程带来的其实是一种能力的思维方式的解放。不知道商业技术社区是否真的理解了这一点。事实上,我们掌握且能够编写的代码越多,那么我们对于现有商业软件以及程序内所规定的工作模式的依赖性也就越低。
那么企业雇主们是否希望毕业生掌握在业务环境下拆分并重构信息流的能力?是否希望他们能够利用高超的编程能力与专业知识取代昂贵的软件采购成本、顾问支持以及第三方供应商费用?青年们又是否希望自己能够成为不可替代的人才,并拿到应得的薪酬水平?答案也许是肯定的,但这一切的前提恐怕是放弃长久以来企业所熟悉的Windows环境。
我认为普及型教育最终将培养出规模可观的程序员群体,而且其数量远超基础教育培养出的文字处理人员。但假如学校方面并没有听取我们这些老人的建议而开设编程课程的话,大家是否愿意自主加入到编程学习中来——就像我当初那样?
老人的观点
作为一大热门应该是,虽然以下七条理由并不一定适用于每位程序员,但却足以涵盖像我这样早已年迈的开发者群体:
• 在大多数情况下,我是因为没有能够确切满足需求的现成软件才自行编写代码的。
• 自己开发的代码成果往往比现成软件更出色,或者运行速度更快且更为简洁。
• 成功编程的最大回报能够立即体现。(成果能跑就是最大的成就!)
• 编程是一项极具创造性的个人表达方式。在我的一些程序当中,很可能存在着不少他人从来没有尝试过的实现内容。
• 编程对于大脑来说是一项极具生产效益的良好锻炼。
• 我喜欢自己对计算机设备负责的感觉,而不是一直遵循他人在软件中提出的使用要求。
• 最后一项原因,我打算额外做出点扩展。
十年之前,如果我不遗余力地推广开源软件概念,那么人们肯定会把我视为一个空想家或者令人烦躁的布道人士。为什么人们要编写代码,然后将其白白交给他人进行使用、修改或者重新发布?
但现在是2015年,开源软件已经不需要进行什么推广。开源软件如今无处不在,并在我们的家中、口袋里、办公室内、数据中心中乃至各种规模的业务环境体系上帮助用户完成种种日常工作。大部分此类软件的编写者都属于志愿人士或者收费程序员,他们坚信自己所编写的软件应当以“自由使用、修改以及重新发布”的方式被交付至每一个人手中。作为目前使用范围最广的操作系统,Android也属于开源项目,而且立足于另一项大获成功的开源成果——Linux。
给予总是好的,而为社区作出回报则是好上加好。将自己的代码成果分享给他人会带来非常奇妙的体验。我的代码示例就曾经出现在网络Linux杂志当中。全世界到底有多少编程人员查看过我所撰写的编程指南以及演示片段?我说不清楚。但我能够确信的是,我所拿出的一切共享代码都经过自己的亲身验证,它们绝对能够起到预期中的效果。正是这种伟大的激励机制推动着我在退休之后仍然坚持奋战在编程工作的第一线!
原文标题:Why I code and don't get paid for it