不要盲目跟着JavaScript的趋势走

2020 年 7 月 06 日

不要盲目跟着JavaScript的趋势走

在生活中,炒作和兴奋有时是有用的。没有它,生活将会乏味而无聊。偶尔跟风可能会让你精神振奋,但是你首先应该自己做好调查。当尝试采用一个被大肆宣传的全新的库或框架时,要先进行研究和测试,并听取他人的意见。


本文最初发布于 Pragmatic Pineapple 博客,经原作者授权由 InfoQ 中文站翻译并分享。


有一天,你在浏览器里输入了twitter.com,然后看到了某人发的一条关于如何使用 React Hooks 的新消息。但是,由于某些原因,你的公司或团队并没有转而使用 Hooks。或者,也许你正在使用它们,但不是以一种新的“符合潮流”的方式。也许你正在使用 Vue.js 或者 Angular,但是 React Hooks 无处不在。


这一天,你开始质疑你代码库中的内容是否正确?你是否应该用你刚刚读到的内容来重构那部分逻辑?得出答案后,你开始想象它在自己的代码中会是什么样子。


现在,你突然有了使用它的冲动。你告知团队负责人,或者向整个团队发送消息介绍这个又酷又新潮的方法,然后提出你要开始使用它。


重写代码



不久前,@ThePracticalDev的 Twitter 账户上出现了一本假想著作的封面。早在 2016 年,取笑多变的 JavaScript 世界就是一种时尚,虽然方式与今天有所不同。



嘘,我发明了时间机器(不要告诉任何人)!让我们闪回到 2016 年。嗖的一声!我们到了。JavaScript 生态圈看起来是这样的:


如果你正在使用JavaScript框架或是想要使用一个框架,你可能会选择Angular.js。但是,你很快就会看到这样的消息:Angular 2会需要你重写几乎所有的东西。而且,React.js即将到来,并日渐成熟。当然,还是有使用Vanilla JS和不使用框架的人。2016年,不使用框架仍然是一个流行的观点,但这个观点正在慢慢消失。


在了解了这一切之后,你会怎么做?你会选择哪条路?为什么?答案似乎很明显,因为你来自未来。但是,如果你之前决定使用 Angular.js,那么几年之后,你将尝试使用新的 Angular 版本并重写你的代码。如果你选择使用 React,你将成为一个幸运的赢家,因为现在每个人都搭了 React 的便车。现在,你可能想放弃类组件,借助那些妙不可言的钩子使用函数组件,对吧?好吧,至少它不像 Angular.js 到 Angular 2 的变化那么大,不需要学习全新的 API,对吧?


选择这么多,时间这么少。我们该怎么做?


不管我们现在选什么,过去选什么,这都不重要。我们仍然会被诱惑或者不得不重写我们的代码。这样做的理由可能有许多:


  • 你的公司以前使用[框架名],但现在已经无法招聘到新人了;

  • 你觉得以前的解决方案不再有效,需要引入一些新东西;

  • 你屈从于行业趋势,想要使用最新最好的。


除非我们打破这个循环。


打破循环


不断改进并提供一个更好的新版本已经成为我们这个行业的基因。我们总是非常迫切地希望制定更高效、更简单、更巧妙、更健壮的解决方案。违背不断学习和进步的理念,就会走到现如今一切人和事的对立面。我现在不打算走这条路,但是如果你想在将来听到更多关于这方面的信息,可以考虑订阅这份简报


学习新东西的想法是好的,我同意这一点,但是你应该多久学习一次呢?看看 JavaScript 的世界吧,这里经常会出现新的想法、博文、库、框架和某个不知名的新玩意。当它变得越来越流行,人们很快就会尝试采用它。我并不是说你不应该采用新的东西,也不是说你不应该考虑解决方案的不同方法,完全不是!我的意思是,降低下频次。


让我们更加务实点。我以前使用过axios,它非常棒。你可以适当地测试它,它获得了广泛的支持,有很多的点赞(GitHub 星),等等。然后,我看到一篇博文,它告诉你替换 axios 并开发自己的获取逻辑。


在读了这篇文章的标题“用一个简单的自定义fetch包装器替换axios”之后,你会从头开始思考这个问题,质疑自己的选择。


我不会详细探讨你是否应该按照这篇博文所说的那样做,那篇文章本身就很好地做到了这一点。我可以帮你做基本的决定。你现在对 axios 满意吗?如果答案是肯定的,那么最好不要考虑替代它。对你或你的团队来说,axios 会带来困难吗?如果答案是肯定的,那么就按照博文所说的去做,看看效果如何。


简而言之:不要轻信炒作。试着去“感受”什么对你有效,然后再去做。试着不要盲目跟随那些炫技的新推文、博客文章、Hacker News 热文、你应该或不应该做什么的热门话题标签。


炒作驱动的开发


炒作在我们行业很常见。还记得 NoSQL 吗?或者是每个人都为之疯狂的微服务?或者是人工智能/机器学习的爆发?这样的例子不胜枚举。人们总是会对新的、突破性的技术和想法感到兴奋。Gartner 在描绘技术炒作周期方面做得非常出色:



上图展示了一个典型的新兴技术的生命周期。你是否意识到你现在使用的任何东西都可能会落在图表的某个部分?Ayman做了一个更详细的炒作周期图:



对照这张图回想一下,就最近的 JS 趋势来说,它处于哪个位置?


如何应对炒作


在生活中,炒作和兴奋有时是有用的。没有它,生活将会乏味而无聊。偶尔跟风可能会让你精神振奋,但是你应该首先自己做好调查。


当尝试采用一个被大肆宣传的全新的库或框架时,请记住这一点。问问你自己和你的团队:


在做决定之前研究并测试了吗?


阅读博客文章、推特和公告有帮助,但更好的做法是,不管某个东西是否适合你,你都要从中获得经验。如果你计划用什么,就尝试构建一个原型。看看它是如何与你正在做的其他事情“共舞”的。


如果你计划在团队层面上做一些事情,可以尝试团队黑客马拉松。黑客马拉松是与你的团队一起测试新技术的好方法,也是你为解决方案疯狂的地方。然后,你可以和团队进行某种回顾,讨论利弊。


它解决了你的问题吗?代价是什么?


你当前的实现有什么特别的问题吗?如果是的话,测试一下,看看新技术是否能解决这个问题。要花多少时间?学习它和重写你的解决方案值得吗?这会在多大程度上减缓团队的开发工作?


听取他人的意见了吗?


如果你在一家小公司工作,或者团队里的成员没那么有经验,这个问题可能会很棘手。试着征求架构师或高级工程师的意见。不能仅仅因为某个库适合 AirBnB 和他们的网站,你就要采用它,可能对你来说它不是最好的,你可能忽略了其中的某些方面。有时候,与有经验的人交谈是一种特权,如果你有,就好好利用它!


如果你是一名高级工程师,试着和一名初级工程师或者没你那么有经验的人交谈。许多公司都在实施所谓的“反向辅导”项目,由初级员工指导公司的资深员工。资深员工的经验可以换来初级员工的新观点。你会惊讶于自己能学到和分享的东西。


总之,尽量不要在你刚刚看到某个东西时就匆忙做出决定。


如果你喜欢这篇文章,可以把它分享给你的朋友和同事。如果你有什么想法,也可以通过推特(@nikolalsvk)联系作者。


作者介绍:


Nikola Đuza在塞尔维亚诺维萨德工作和生活,主要使用 JavaScript 和 Ruby 进行开发。你可以在Twitter上关注他


原文链接:


Do Not Follow JavaScript Trends


2020 年 7 月 06 日 08:566475

评论 5 条评论

发布
用户头像
可以说,2016之后的前端就是在原地造轮子。
想当初flash可是支持,易用的矢量和位图渲染,专业级的动画,商业级页游和3d游戏,视频流技术,甚至后来的夸端air。。。敢问这些目前js前端有那个达到这个高度的?
2020 年 07 月 11 日 22:21
回复
可能操作系统厂家和浏览器厂家想赢者通吃吧,这个角度,微软还是可以的,其实和随便封你的应用手腕同出一辙
2020 年 08 月 06 日 10:46
回复
用户头像
已经落后于时代的脚步了
2020 年 07 月 11 日 20:56
回复
用户头像
这篇文章还有很有价值的:

1:2016年的JavaScript生态是怎么样的;
2:我们这个行业的基因就是不断迭代,想要更好,所以过去选择什么,对现在的束缚并不大;
3:以及一种新技术,框架和库的炒作生命周期;
4:告诉我们不要盲目,做好前提技术研究和测试;
2020 年 07 月 06 日 11:11
回复
用户头像
已收藏,凡事慢三拍。
2020 年 07 月 06 日 10:59
回复
没有更多评论了
发现更多内容

媲美物理机,裸金属云主机如何轻松应对11.11大促

京东智联云开发者

云计算 服务器 云主机 裸金属容器

号外!5G+X联创营华为云官网上线,5G 创业春天来了!

华为云开发者社区

华为 程序员 AI 5G

MySQL 连接为什么挂死了?

华为云开发者社区

微服务 数据 存储

《迅雷链精品课》第六课:主流区块链数据存储分析(一)

迅雷链

区块链

【JDD京智大咖说】AI 未来,路在何方?NLP、CV 技术的探索与展望

京东智联云开发者

人工智能 CV nlp

32核打赢AMD64核 英特尔Ice Lake为HPC提供强劲性能

intel001

【得物技术】浅谈分布式事务中间件Seata

得物技术

开源 分布式事务 中间件 解决方案 seata

Scrum指南这么改,我看要完蛋!

华为云开发者社区

Scrum 敏捷 改版

企业工作流设计原则及多项目整合开发注意事项

Marilyn

敏捷开发 工作流 企业开发

互联网券商系统搭建建议书

软件开发大鱼V15724971504

国际配售 港股交易系统开发 证券交易系统 IPO系统开发 金融平台搭建

3年Java开发经验从阿里、美团、滴滴面试回来,想和Java程序员谈一谈感悟及面经

Java架构之路

Java 程序员 架构 面试 编程语言

入坑 docsify,一款神奇的文档生成利器!

沉默王二

docsify

6. 自定义容器类型元素验证,类级别验证(多字段联合验证)

YourBatman

Hibernate-Validator Bean Validation 多字段联合验证

DataPipeline 王睿:业务异常实时自动化检测 — 基于人工智能的系统实战

DataPipeline

大数据

京东T8Java架构师总结整理的15w字的Java面试手册,2021年金三银四不愁涨不了薪!

Java架构之路

Java 程序员 架构 面试 编程语言

一周信创舆情观察(11.9~11.15)

统小信uos

Redis也能搞定时任务,你们要讲武德

周老师

Java 编程 程序员 架构 面试

AI技术在音乐类产品中的应用场景

HIFIVE嗨翻屋

人工智能 AI 音乐 音乐制作

数字人民币究竟是什么

CECBC区块链专委会

数字货币

接口测试学习之json

测试人生路

json 接口测试

快进收藏吃灰!字节跳动大佬用最通俗方法讲明白了红黑树算法

小Q

Java 学习 架构 面试 算法

DataPipeline CTO 陈肃:构建批流一体数据融合平台的一致性语义保证

DataPipeline

数据融合

第九周学习性能优化 3 总结

三板斧

极客大学架构师训练营

DataOps系列丨数据的「资产负债表」与「现状」

DataPipeline

大数据

架构师训练营 1 期 - 第九周 - 性能优化 3

三板斧

架构师训练营 1 期 -- 第九周作业

曾彪彪

极客大学架构师训练营

微服务手册:高速查询?除了Redis我们还有另外的选择

互联网应用架构

redis 微服务 springboot Caffeine 高速缓存

阿里达摩院副院长亲自所写Java架构29大核心知识体系+大厂面试真题+微服务

Java架构追梦

Java 学习 阿里巴巴 架构 面试

Springboot过滤器和拦截器详解及使用场景

996小迁

Java 编程 架构 面试 springboot

前嗅教你大数据——史上最全代理IP服务商对比

前嗅大数据

大数据 数据采集 动态代理 静态代理 代理IP

阿里P8架构师吐血整理的《SpringBoot+Vue全栈开发实战》文档资料

Java架构之路

Java 程序员 架构 面试 编程语言

不要盲目跟着JavaScript的趋势走-InfoQ