开发者要如何才能跟上快速迭代的技术变化?

互联网时代的技术来得快,去得更快。如果没有足够强的学习能力,就无法跟上变化,被淘汰只是迟早的事。想想看,你苦心钻研多年引以为傲的技术,一夜之间就没有用武之地了,难免会有一种「身体被掏空」的感觉。

总的来说,科技迅速地发展是一件令人兴奋的事情。但是如果站在一个技术开发者的角度去看的话,反而是一件心累的事儿,因为想要跟上科技更新的脚步并不是一件容易的事。JavaScript 就是一个典型的列子,如今 JavaScript 变得越来越流行,所以大大小小的相关创新一直是层出不穷的,它们相互竞争,最后淘汰掉落后的那一个。

“你知道 Angular1 推出了吗?你不知道 Angular2 已经过时了吗?最近连 Angular4 都出了呢。”

“你觉得 Ember 系统怎么样?既然它的程序被重写了,那 Ember2 是不是更好用了?”

“你知道 React 系统吗?有哪些是一定要掌握得操作啊?怎样更新系统啊?”

“还有 webpack...”

软件行业中的一切变化来的都是如此之快。

甚至于很多高级软件开发工程师都会因为这种进步而感到 “JavaScript 式疲劳”。若连他们都束手无策的话,还有谁可以阻止那些追求速度的工厂,叫停那些频繁进行技术更新的行动呢?

深呼吸……

要知道,早在 1975 年,当《人月神话》的作者 Frederick Brooks 在撰写这本著作时,就已经在书中论述过“程序员间的合作”。不管人们信不信,但他在书中所提到过的内容确实都几近现实。

实际上,《人月神话》这本书是 Brooks 在进行 ALGOL (算法语言)和 OS/360 (360 系统)的工作的情况下,同时兼顾写作完成的。而这两门技术正是如今 360 软件系列的最原始版本。

所以,令程序员头疼的问题出现了转折的余地。在现在最新的技术中,一些原始存在着的部分并没有被彻底改动。

绝大多数新的程序语言及其框架结构都只需要改变编程核心思维,之后用各种不同的方法来实现它们。

也就是说,所有我们觉得庞杂的编程思维,其实就像电视剧天龙特攻队中的任意几集一样,也只是吸收了最原始版本的几缕精华而已。对于我个人而言,原始版本才是称得上是最佳的创作。

所以如果你正在观看一个新的电影版的天龙特攻队的话,其实你可以猜到接下来会上演什么桥段了,例如:

● T 打算拒绝登上飞机。

● T 将会因为喝了一个空乘给的牛奶而晕倒。

● HM Murdock 将会把机组人员赶走。

● 那些坏人将会得到应有的惩罚。

同一个电影的不同版本都会对一些细节做稍稍改动,所以想要满足对其电影版变化的期待感,其实只需看多几个版本不同的电影就可以了。

同样的道理,不同的编程语言可能会有一些句法的不同和其他细微差别,但是总体上是极其相似的。

学习力强的程序员敢大胆地体验尝试新技术,他们的技术栈始终在保持不断地更新。他们能快速把握事物的本质,并判断出它能用来做什么,不能用来做什么。他们拥抱技术升级和革命,因为他们学习并掌握新技术的速度比其他人更快,所以他们永远不用担心失业。事实上,他们掌握的是「驾驶」和「学习驾驶」的技术,而不是「驾驶 XX 牌汽车」的技术。

大局观在不同的语言中

都是有效的

例如,要理解 Ruby,你需要理解如何使用面向对象的原则来解决问题。如果你看看其他编程语言,比如 Java、C++、C# 和 Swift...它们都是面向对象的!还有 Python?你猜对了!它也是面向对象的编程语言。

同样的概念也适用于继承。

编程的基础技能不一定是华而不实的。而且他们也不会有很多变化。这是个好消息!

这意味着编程技能,如...

● 学习如何使用单个函数调用将大型复杂问题分解成更小的、更易于管理的问题。

● 参考单一职责原则,将类拆分为多个类

● 调研编程问题,以了解其他人是否找到了解决方案。

更具体的事情就像...

● Ruby on Rails 如何使用 Model/View/Controller 模式来分离 Web 应用程序的职责。

...也可以应用于其他语言和框架! 例如,ExpressJS 是另一个流行的 Web 框架。你可以使用与在 Ruby on Rails 中遵循的完全相同的模式来拆分这些应用程序(如果需要的话)。

把你的精力集中在下面的事情上:

● 学习如何分解问题

● 工作在一个敏捷团队中

● 掌握大局观

如果你做了所有这些,你将可以使用任何编程语言来构建真正的项目了。

别陷入无尽追逐新的

看似有价值的东西

你可以试着去学习一些很吸引人的事儿……不仅仅停留在理解事物的表面层次

你可以选择广泛地涉猎,也可以钻研某一项事物,但是,你别指望两者皆得。

如果你选择花费大量的精力在某个特殊的工具或者某个框架的时候,你会发现这些经历会对于你学习其他的语言或者框架会非常有帮助。

不管你在做什么工作,我建议你都应该先把自己每天都要用的核心技术做到一定深度,再去拓展广度。 「什么都知道一点,但都不甚了解」是最可怕的,它会让你误以为自己已经很 NB 了。

某种独特技术最酷的方面

不一定是它最重要的地方

如果你去一些黑客新闻网站,你会发现很多尖端的技术。

如果你正在寻找如何闯入网络开发的领域,你应该去学习所有的包括像 Elixir 或者 Rust 那样的尖端技术吗?

也许没必要……

学习一个可能没有足够大的群体的东西可能是不切合实际的事情。因为你会失去很多大量人们在学习过程中总结的经验。

相反的,选择一个已经被很多信息证实过的技术然后学习那门语言里的基础知识是更可行的办法。

试想一下:你认为 杰森马耶兹、Lady Gaga、鲍勃马利、艾尔顿·约翰 他们的共同点是什么?答案可能比你想像的要多。

如果你听 Axis of Awesome's Four-Chord Song, 你会发现所有的现代流行乐曲,即使来自于彻底不同风格的乐队都遵循着类似的模版……举个例子,如果你用标准的四和弦,那么很多流行乐曲都可以融入其中。

以上的道理与学习编程语言和框架是一样的。

一旦你学会了一到两种语言,再掌握其他语言并不是特别困难。不同的语言有着不同的特点,当你熟练运用它们时,你就会欣赏不同语言本身的优缺点。

在你职业生涯早期

掌握基础知识很重要

如果你只是想成为一名专业的开发者,专注于不会改变的东西即可。

我最近写了一篇关于我如何在几乎没有任何 Web 开发经验的情况下被聘为 Web 开发人员的文章。我被雇用,是因为我的编程基础非常强大,即使我没有丰富的具体某种语言或框架的经验。

如果你采取这种心态,并专注于将复杂的问题分解成更容易管理的问题,那么你将学会如何保持与程序员的相关的所需要的技能,即使一切都在变化。

所以如果你害怕做出错误的决定,请深呼吸一下。

你应该要明白:编程的基础知识将适用于任何编程语言、框架或心态。

选择语言,学习,然后真正掌握它。在此过程中,你将掌握编程的基础知识,并能够将其应用于任何其他语言或框架。

后话

技术世界就如同一片汪洋大海,快速迭代的技术变化每天都在不断地上演。但是编程的基础技能是不会有太多变化的,你可以选择广泛地去涉猎不同领域的新技术,不过千万别忘记:拥有扎实的基础功底才是一个优秀开发者。

摘自开源中国,译者myk, Tocy, peng26

英文原文:How To Stay Relevant As A Developer While Everything Is Changing Around You

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180104B10BFQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券