没有适应能力的程序员,必定将被取代
神译局
神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:提到未来会被取代的职业,我们大多数能想到的都是司机、银行柜员、售货员等等,几乎没有人觉得软件开发职业会被取代。但实际上,这个职业在过去的几十年里发生了巨大的变化,而且变化的速度逐年加快。那怕你停止学习两年,你所知道的一切就会过时。过去的经验或许不再适用,人们需要跟上即将到来的软件发展和革命,正确地预测下一波潮流是什么,并赶上潮流。准备好改变——或者被改变。本文译自Medium,作者Elye,原文标题为Software Developers: Adapt or You’ll Be Replaced,希望对您有所启发。
如果有人问,未来10年哪些工作将被淘汰,人们想到的会是那些可能被机器和软件取代的工作,如司机、播音员、旅行社等。
对许多人来说,软件开发岗位不可能在这个清单上。软件是未来,因此软件开发岗位是最可靠的工作。但真的是这样吗?
虽然这样说是有道理的,但也不全对。原因如下:
1. 软件开发是变化最大的职业
硬件架构更加持久,
但软件架构经常变化。
变化是唯一永恒的东西,
所以,软件获胜。
汇编程序设计被认为是一种软件,但后来C语言成为了规范。现在,如果你说你用C语言编程,有些人会认为你是硬件工程师而不是软件工程师。
与许多其他职业不同的是,这个职业在过去的几十年里发生了巨大的变化,而且变化的速度逐年加快。
那怕你停止学习两年,你所知道的一切就会被认为是过时的。我有个朋友从软件开发人员转到管理人员。他仍然不时地从事敲代码工作,但随着时间的推移越来越少了。几年后,开发人员要求他不要再尝试敲代码了,因为大多数时候他会破坏架构。
今天的医生所做的可能与十年前有所不同,但大多数仍然是类似或相关的。但是,今天的软件开发人员所做的几乎是完全不同的工作。
2. 软件的自动化比其他任何领域的自动化都要频繁
“我们正在经历一个过程,软件将使软件自动化,自动化将使自动化自动化。——马克·库班(Mark Cuban)
虽然很多人担心他们的工作会因为自动化和人工智能而过时,并认为软件开发是未来的趋势,但没有多少人意识到自动化在软件中更容易实现。这意味着,人们今天所做的软件工作在未来可能不再相关。
自动编程并不是一个新概念。这个想法始于20世纪40年代,当时工程师们想要实现穿孔卡片编程过程的自动化。这个想法还不止于此。通过引入了更高级别的编程语言,我们可以编写更少的代码,或者换句话说,自动化较低级别的代码。
测试和发布软件的过程,过去是整个团队的努力,今天却可以被一个运行脚本所取代,该脚本可以触发机器群自动运行所有批处理工作。编程语言的发展,例如,面向对象编程和函数式编程的引入,是由“编写更少代码”和“以更快速度实现更多变化”的愿望所驱动的。
十年前,我在代码校对中做的一件事就是确保代码遵循正确的编码格式。而今天,我甚至都不在乎这些。因为在提交代码之前,格式会自动修正。
虽然完全自动化编程是一个超级困难的问题,但软件开发人员每天都在不断地更新自己:因为他们非常看重不要重复自己(DRY, don’t repeat yourself)原则。
3. 年轻人可能比有经验的人更有能力
“我们始终相信,年轻人更善于发展未来,因为他们就是我们的未来。”——马云
在大多数职业中,你在一份工作中工作的时间越长,你就越有经验,因此你就越优秀。我们会更喜欢有经验的医生、律师和会计,而不是新手。
但对于软件开发来说,由于变化的速度很快,你在最初5年的开发中所学习和经历的东西,在接下来的5年里,最多可以作为一个历史教训来使用,说明那些技术是多么幼稚。
技术在发展,新的编程语言在被不断引入,新的实践优于旧的实践。年轻一代适应得更快,因为他们没有任何旧习惯的包袱。有经验的开发人员可以更快地识别风险、调试bug等。但是有了工具,自动化会使这些任务变得越来越容易。
我并不年轻,而且我在软件开发方面有超过20年的经验,但我发现自己大部分时间都在向年轻的程序员请教,向他们学习。
在年轻和开发人员和有经验的开发人员之间,竞争环境是平等的。重要的不再是你在这个领域有多久了,以及你有多有经验,甚至你的大学学位也可能不再重要了。
软件开发人员的工作定义和范围,以及所需要技能集在未来几年将会有很大的不同。过去的经验或许不再适用,人们需要跟上即将到来的软件发展和革命,正确地预测下一波潮流是什么,并赶上潮流。
准备好改变——或者被改变。
译者:Jane
本文来自翻译, 如若转载请注明出处。