老齐教室

编程的黄金时代结束了吗?

注: 本文内容主要源自参考文献[1],但是,翻译的时候并未完全直译,做了表述上的适当润色和修改,但主要观点未变。文章中的观点,仅供读者参考,也并不代表老齐本人的观点。


O’Reilly公司,对开发者而言,无人不知,它出版了很多非常棒的图书。此公司的创始人不久前语出惊人,他以自己对编程行业的未来发展之深思熟虑,做出了如下判断:

“我认为您可以成为一名程序员并找到一份工作,但编程这个职业,像最近几十年这样的黄金时代已经过去了。编程,现在更像是读写,每个人都要会。”

听起来很合逻辑,同时也让准备进入这个行业的人有了一丝忧虑。 实际上,你更可能听说过其他的版本:“今天的精英编码技能是明天的基本能力”。

这真的是软件行业的未来吗?

编程作为一种基本素养

目前,基础教育改革中,有一个名词:核心素养,各个学科,也都要有自己的核心素养。其实,不仅仅是基础教育,乃至于编程而言,有有人认为它应该成为人的一种基本素养,并且对此已经有了很长时间的争论,当然,尚无定论。

按照我们通常的理解,即使不打算自己编写软件,如果能够理解程序是怎么工作的,也肯定很有价值。甚至于,作为非程序员也可以自己建设一个网站,并能对大量数据进行分析,从中得出结论,或者能自动化地解决一些简单任务。如果非程序员具有这些技能,而不是把时间浪费在社交网络或者视频网站上的刷屏,是不是很有价值呢?不管是不是程序员,了解我们周围各种机器的工作方式,都能让我们的生活更有意思。

把编程看做一种新型的读写能力,或者读写能力的一部分,这种观点并不新鲜,虽然编程是一种看起来有点神奇的人类实践活动。但是,也有理由对此表示怀疑。

现代社会的国家,都比较注重民众的科学素养提高,即向普通公民提供日常生活中各种决策所需的科学知识,并且通过学校教育系统大规模的实施,至少有十几年甚至几十年时间了吧。但是,科学素养的承诺并没有真正兑现。如今,普通人严重依赖于他们不了解或不相信的现代科学,从计算机(量子力学)到疫苗(遗传学)再到GPS(广义相对论)。如果科学素养是一个从未实现的目标,那么我们真的可以期望编程能称为一种基本素养吗?

“编程扫盲运动”的支持者指出,阅读和写作本是专门技能,在耗费了数年时间后,就从学者传播到了普通大众。(如果在1620年语言:数百年内,人人会写出语法连贯的帖子。在那时,肯定会被认为是疯狂的梦想家。)但是,在学习写作和作为作家之间,在学习科学与成为科学家之间,在理解代码的基本轮廓与自己开发复杂系统之间,都存在着一定的差距。

我们为提高编程素养所做的努力,其实不足以支撑未来的程序员的能力发展。 实际上,我们经常使新手远离编程艺术,而进入狭小的限制性沙箱。 过去这些沙箱是Excel中的宏,或者是Visual Basic和Access,现在是开发各种应用。貌似已经有了很大变化,其实本质差不多。如果想成为专业开发者,现代教育能提供的帮助还很有限。

虽然现代教育降低了从事编程的门槛,但没有能改变对职业程序员的要求。

程序员的价值

Tim O’Reilly的言论很耐人寻味,如果普通民众的编程素养提升了,是否会对职业程序员的工作岗位产生威胁呢?

二十年来,一直有人宣称软件开发也要“流水线”化,很多程序员都被告知,要学习一些更持久的技能和知识,比如数学,否则就会落伍,乃至于被抛弃。因为各行各业的人都会自己具有开发能力,人与人之间的编程技能的差距正在逐渐缩小。

提醒注意,那些不说明发生时间的预言,等于没说。如今的情况是,以编程为职业的程序员比以往更多了,并且美国之外还有更多的程序员在从事编程工作。在招聘市场上,没有出现程序员短缺现象,但是,熟练程序员总是短缺的,而且这种短缺一直存在,还会持续很久。自从有编程方面的教育以来,不管是学校教育还是非学校教育,固然有很多人称为了程序员,但熟练开发者短缺现象从来没有改观。从目前的情况来估计,熟练程序员短缺现象在未来几年依然持续,甚至加剧。

表面上看,缺乏掌握新兴技术的程序员,比如机器学习、大数据分析等。在这些新兴技术领域,的确缺少更多的熟练程序员。但是,在更大的范畴中,缺少的是熟练的中级开发者,这些人不仅掌握了编程基础知识,还了解如何开展有效的团队合作,与同事协作以及其他软技能。

熟练的中级开发人员将编程技能与难以量化的技能相结合,例如具有分析、调试大型系统、解决实际问题、管理项目以及与利益相关者交谈的能力。

将来,新手可能会遇到找工作的问题,但是经验丰富的开发人员将在数十年内仍然是宝贵的资源,即使是有了人工智能技术代替人编程,也不会取代人与现实世界之间沟通的专家。

编程技能是否会有朝一日能人人都会,以至于程序员行业不存?也许会有,但是短时间内还看不到迹象。至少在当前,要想在编程工作中挣钱,都要先“学海无涯苦作舟”,经过一番努力才能成为专业开发者。

新的黄金时代

不过,Tim O’Reilly的话暗示了一种可能,未来的编程技能并不是通往舒适职业的门票。如果软件开发不再是轻松赚钱、旱涝保收的工作——好像从来没有过这样,那将如之奈何?如果我们失去的东西不如我们在半个世纪的软件开发中所获得的东西重要,该怎么办?

多年来,编程的复杂性急剧上升。与此同时,我们手头的工具也越来越先进了,比如用IDE能发现程序中的bug,在几秒中内能完成编译的硬件,自动完成诸如验证、列表排序等常见任务的框架等。曾几何时,很多程序员四处查询解决问题的资料,一本像Windwos API那样的书在办公室里被奉为经典而传阅。现在不一样了,与编程有关的教程、工具、信息多如牛毛。这些都让编程行业的壁垒降低了,但并不意味着真的“零门槛”——虽然很多软文这样鼓吹。

历史上没有任何时代比现在更容易将想法转变为软件项目,并与全世界分享。

我们不能说黄金时代何时结束,但有一点可以肯定。 王国的大门仍然敞开着。

参考文献

[1]. 本文源自https://medium.com/young-coder/is-the-golden-age-of-programming-over-ec9631e1f8ad,翻译过程中有适当修改。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

关注微信公众号,读文章、听课程,提升技能