【编者按】Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者。在本文中,Tero 阐述了在 JavaScript 框架层出不穷的当下,不少开发者对选择框架的种种困惑,如果你也有类似的困惑,不妨读一读。

如何克服  JavaScript  框架疲劳?

JavaScript 社区正受「框架疲劳」困扰。着眼近段时间涌现出的大量新框架、技术和想法,令人振奋的同时也让人觉得很难追上科技更新的脚步。

既然难以追赶,那么必须选择专注的领域,而做这个选择也正是因为这种焦虑感。那么,你在专注于「正确的事」么?你正在学习的框架又是否是最合适你的,或许还有比它更好的?会不会下个月就发生些什么让你的选择显得过时?

这里有一些个人总结,用以抵抗这种疲惫感和焦虑感。

学会欣赏已知中的未知数

事实上如果你遭遇了这个问题,那么说明你已经很了解围绕 JavaScript 正在发生些什么。所有你认为应该学习的其实都是你有所了解的,它们都是你知识领域中的未知点。在这里,你必须要理解——「已知的未知」会不停地扩张,永无止境。事实上,恰恰相反:这不仅意味着新事物在不断出现,还意味着每一次你学习了一些东西,也会了解到与它相关的——那些你原本还不了解的事情。

举个例子,在读 Cycle.js 时,才发现对 Reactive Programming 知之甚少。学习 React 又带来了接触 React Native、GraghQL、Redux 的途径,并如此无休止的反复。一件事总是能够引起另外一件事。

与其被一系列已知的未知所扰,不如学着接受这种情况。当意识到缺乏某种知识,可以选择后续去学习。知道它存在并大概知道它是什么,这意味着你可以决定在某个时候,如果可能的话,花费时间去学习这种知识。我们总是陷入选择中,倾向于抗拒这种选择却又因为仍有那么多不会的知识而抱有负罪感。这种纠结毫无意义,进行选择比忽略所有可以学习的东西更好。

这种未知——你所不知道的知识——不能作为实际知识和技能的替代,但也绝不是毫无用处。

接受事情总是处在变化中

毫无疑问, Web 开发总在不停地衍变——更好的解决方案被共认,亦或是设备性能增强等等。

无论现在 JavaScript 最前沿的技术是什么,我敢说这个「前沿」绝对支撑不了3年。它们中的大多数会被长久的遗忘,也有一些会留存,但创新也许会围绕我们甚至还不能想象的某些事情发生。

举个例子,Angulai 1.x 现在仍然很强大并且会维系数年,但围绕它并没有创新点。这种情况最终也同样会发生在 React 或其他现今看来新奇的技术上。

我们也许并不希望这些发生,但这却是不可避免的现实,你只能选择去接受事情的持续变化或者停留在落后于前沿技术的拐点。任何一种选择都是有效的,但也都要付出成本。无论如何,变化是持续的,试图阻止这种变化往往收效甚微。

理解一切都有价值

无论你选择将时间用在哪种框架或者技术上,付出终究会得到回报,即使它不是最正确的那一个。你所学习的一切都在帮助构建你头脑中的神经元网络,会帮你建立某种联系使你在后续学习其他东西时更加容易,了解一种知识能够使你跟其他知识进行比较和对比。因此,学习总是有用的,无论学什么。

这还意味着焦虑地去寻找一种正确的框架或技术用来学习并没有想象中那么重要。不仅仅是因为所谓的正确的框架或技术很难确定,而且在很多情况下它们并不是一开始就存在的。相反,寻找有用的知识显然更为简单,它们无所不在。你也许可以学习一些看起来有趣的东西,即使它并不是绝对正确的东西。

举个例子,我花费了数年时间学习多种 Ruby 技术并且利用 Ruby 和 Rails 做 App,而在今天我用不到它们,甚至不确定以后是否会用。那么,这是否意味着我花费的那段时间一无所获?我不这么认为。那些技术不仅在当时很有用,并且所有在当时学过的东西形成了我现在的编码风格。我非常希望这种情况也最终发生在我现在学习的工具上。

那么,如何去摆脱因寻找正确框架所产生的焦虑感?在这里你不妨去寻找也许此时并不那么有用的知识——寻找一篇有趣的计算机科学论文并探索其中的观点,或者花时间在并不能直接应用于所做之事的技术上。你从这些地方得到的收益也许并不那么明显,但它们真实存在并会在不经意的地方显现。暂时摆脱激烈的框架选择也能够让人振奋。

学会学习

另一种有效的方法是回归本源,仅仅将时间花在学会学习上。为什么不练习解决问题这一过程本身,或者像刻意练习一样去研究技术。类似行为将有助于了解职业真正能带来什么。

这是 Rich Hickey 对此的看法:

你需要仔细辨识事情的本质。精通编程不在于语言、范例、平台、构建模块、开源、会议等。这些都是随着时间变化的基础知识,汲取知识的能力能够使你按需使用。我更愿意选择具备良好学习技巧和解决问题能力的程序员,而不是任何时候只汲取浅显经验的程序员。

就像学习新框架很有价值,学会学习很显然能获得更大的回报。善于学习和解决问题,将会使你遇到更少的麻烦,不论接下来你会需要什么样的新技术。

原文链接:Overcoming JavaScript Framework Fatigue