未来的工作11分钟阅读

回来的表单库创建者的全栈开发技巧

JavaScript和回来的专家埃里克 Rasmussen讨论了开源软件开发的挑战, 多变的JavaScript世界, 作为一名炙手可热的开发者,他是如何应对冒名顶替综合症和职业倦怠的, 以及他推荐的顶级播客.

JavaScript和回来的专家埃里克 Rasmussen讨论了开源软件开发的挑战, 多变的JavaScript世界, 作为一名炙手可热的开发者,他是如何应对冒名顶替综合症和职业倦怠的, 以及他推荐的顶级播客.

Toptal研究的个人资料图片

Toptal研究

分享

2019年2月, Toptal的社区团队推出了一项全新的计划:每月一次与Toptal的网络专家实时互动的机会. “问我任何问题”(AMA)会议对Toptal核心团队和人才网络的所有成员开放——任何人都可以提问. 在这篇文章中, 我们从JavaScript和回来的专家埃里克 Rasmussen的AMA中精选了一些问题和答案. 埃里克讨论了开源软件开发的挑战, 开发技巧, 以及多变的JavaScript世界, 作为一名炙手可热的开发者,他是如何应对冒名顶替综合症和职业倦怠的, 以及他推荐的顶级播客.

埃里克 是一个拥有超过25年开发经验的全栈JavaScript专家, 专攻React, 回来的, React中的表单, 和GraphQL. 在github上——一个拥有超过2800万用户的基于网络的版本控制托管服务——他以超过20个用户进入了前100名,000颗恒星. 他也是React中最受欢迎的表单库的第一和第三名的作者: 回来的-FormReact-Final-Form.

JavaScript和回来的专家埃里克 Rasmussen

回来的表单和开源软件的状态

在取得巨大成功之后,您为什么决定创建另一个表单库 回来的形式?

在使用回来的形式的过程中,我学到了很多东西,并且深入了解了全世界React Form开发者的需求. 如果不重新审视问题,React Form的一些问题是无法解决的. (更多细节 在这里.)

很多开发者都梦想着创建一个大受欢迎的开源项目. 拥有一个像回来的形式这样成功的项目会带来哪些意想不到的后果(好的和坏的)?

当你能够修复阻碍开发人员或整个团队完成项目的漏洞时,这是非常值得的. 当人们自己发现并修复bug时,这真的很棒. 到目前为止, people have been very nice 和 gracious when they ask for help; I’ve not yet had an interaction with a righteous user 那。 thinks I owe them a fix.

在挑战的一面, 精疲力竭是真实存在的, 而且我们还没有找到一种方法来补偿OSS开发人员为OSS项目付出的时间和精力. 回来的表格被世界上数十亿美元的公司用来交易业务, 它的存在为安装它的团队节省了数千小时的开发时间, 但是,没有一个好的解决方案可以给这些作者哪怕是一小部分钱.

有没有什么有希望的解决方案来补偿像你这样的开源开发者?

我的一个朋友开了一家公司 CodeFund. 他有这样一个想法:“如果我们能在代码库文档上放广告会怎么样??作为开发者, 我们整天都在看文档,弄清楚如何实现我们正在做的事情. +, 开发者赚的钱比一般的网民多得多, 所以我们是一个有潜力的奢侈品.

CodeFund认为文档是一个很好的宣传场所. 我是最初的飞行员之一. 它工作得很好,但他们遇到了一个问题与GitHub. 最初, 我们在GitHub仓库上放广告, 但是GitHub和律师们突然冲进来说不行. 这是一个耻辱. CodeFund和他们谈了一段时间,但最后他们拒绝了.

使用大量的库文档, 你一个月大概能拿到150美元, 这是不值得付出的吗. 有一些罕见的库,比如Babble或webpack,他们得到的钱足以支持两三个全职的开发人员把它做得更好. Babble和webpack——价值数十亿美元的公司正坐在他们的基础设施上,这是肯定的, 回来的形式支持它们.

在你访问的几乎所有网站上, 你可以查看源代码,你可以看到一些代码是由一个特定的人写的,他没有得到适当的补偿. 我们需要提高人们的意识,让人们更加欣赏什么是开源,以及我们所投入的时间.

为什么要创建开源和免费的东西呢? 这对像你这样的开发者有什么激励呢?

你创建它的原因是因为你需要它来做你正在做的事情. 当你发布它时,其他人会来改进它. 开源梦想是你说的, “我造了一辆小推车,可以帮我把石头从这里搬到那里,“然后有人出现了,他们让事情变得更好. 关于你的下一个项目, 你回去用同一个库,然后你就会, “哇, 这东西移动得快多了. 现在好多了.”

这也是非常值得的. 我一听到别人说, “这个问题让我们耽搁了三个星期,而这个花了你三个小时的小问题却为我们节省了三个星期的时间.“这有点上瘾的循环, 你得到了积极的强化,感觉很好.

用我的二年级图书馆, 并不是人们说的那么多, “嘿, 我们需要另一个表单库,“我只是想到了一个更好的方法.

这就是你为什么要做的梦想. 但肯定不是为了钱.

在一个理想的世界里,你创造开源软件会得到多少报酬? 只是锦上添花而已?

如果有人给我六位数的薪水,让我整天从事开源工作,我也不介意. 如果你看看所产生的价值和成本,开源的比例是如此之高. 你可以找到一些小的库,它们只做一件事,而且做得非常非常好.

如果世界上的每个公司都必须分配自己的开发团队来做这件事, 结果会有很大的不同. 事实上,我们有开源,我们可以有一个解决方案——在顶部的一个算法泡沫是最好的——这意味着世界上每个人都有内置的效率.

开源的另一个价值是,如果你在使用你自己写的东西,而只有你的公司在使用它 . . . 与1000家公司正在使用的东西相比. 他们找到了每一个可能成为问题的小角落和缝隙, 你拿着它,把它插进你的东西里,你就成功了. 这样你就更有信心了.

JavaScript的动态世界

在JavaScript领域呆了这么久, 你一定见过这么多热门的新框架(用于构建JavaScript应用程序)来来往往. 你如何保持行业的脉搏,以便你可以决定要致力于什么框架?

你必须了解开发社区的风向. 当前TypeScript和Flow之间的争斗就是一个很好的例子. 在那次比赛中,我一开始选错了马, 假设Facebook会是打字框架的更好管家. 但我认为TS几乎赢得了这场战斗, 现在我正慢慢地向那个方向迁移.

Twitter上有一个角落是“开发者Twitter”.“如果你跟踪了足够多的人——也许你需要100人左右的样本量——你就能对风向和流行趋势有个大致的了解. 你会收到很多这样的帖子, “我以前常去A图书馆, 但我刚了解了B库,一切都容易多了.你看够了,就会想:“好吧,也许我应该去别的图书馆看看。.”

JavaScript领域的趋势来来去去. 它会一直处于运动状态吗?

我认为(并希望)它将继续发展. 在科技领域,停滞就是死亡. 甚至Java现在也在进行显著的创新:Java 10中可以做的事情与您祖母的Java 6完全不同.

当你的应用最终使用了技术X,却发现所有的酷孩子都在使用技术Y时,你可能会感到筋疲力尽. 但这就是我们所处的行业.

在你看来, 要想真正掌握这门语言,哪些JavaScript概念是特别重要的?

我认为函数式编程和传递函数的思想是非常重要的. 特别是如果你使用的是Java或c++这样的语言.

你认为React应该用于构建spa(单页面应用程序)还是只用于构建常规页面中的组件?

这就是React的美妙之处:它是如此的通用. 在我的日常工作中,我一直在慢慢地为一个旧的Java/jQuery应用程序引入React的所有新功能. 只要有一个DOM节点,React就能很好地工作. 它不需要控制整个应用程序.

当开始一个新的React应用程序时,你经常从零开始使用哪些工具和库?

我认为 create-react-app 现在谁是赢家了吗. 四年前,当时还没有这样的东西,这要困难得多.

如何在react应用中处理应用状态?

当回来的出现时,它显然就是答案. 然而,我发现我的回来的“状态”大部分是这样的 加载listOfObjects,我最近一直在使用Apollo GraphQL来处理这些事情. 其他的比如 isSideNavOpen 是否可以很容易地使用基于上下文的组件进行管理. 也就是说, 回来的仍然有一些合法的用例, 但我在简单的React应用程序中没有遇到过.

你最喜欢的编辑器/IDE是什么?

Ah, 那。 问题!

我来自Java, 多年来,我一直对JetBrains IntelliJ非常满意, 但是对于JS来说有点慢. 首先我选择了Atom,但最终选择了VS Code. 它对Jest、Flow和TypeScript的集成是无与伦比的.

你对同构开发有什么看法 蛋白石 这意味着 ruby to JS 然后为Rubysts打开了用纯Ruby编写React/ flux结构应用程序的道路(不需要编写任何JS)。?

我认为,JavaScript跳转到服务器这一事实是一件大事. 能够在客户端和服务器端使用相同的代码进行渲染是非常重要的 巨大的更有可能是未来的方式.

你认为当前最流行的JS框架最大的问题是什么?

我不太确定, 但我很喜欢css-in-js的方向, serverless, 而像时代科技这样的公司正在与Next合作.js.

这对我来说真的很有趣, 作为一个在90年代末建立网站的人, 我们将回到静态网站. 我们将回到在构建时生成所有内容, 然后你把静态的东西放在服务器上然后你可以通过所谓的再水化来添加动态的东西. 在渲染整个页面之后, 然后你就可以使用额外的JavaScript来制作动画和移动组件.

时间, 他们现在的框架, 也支持静态建设到您的网站, 因为没有什么比下载静态HTML文件更快的了. 它只是一个文本文件,然后你就搞定了. 然而,如果你要访问服务器, 它可能需要访问数据库4到100次才能建立你需要显示的页面. 这是超级慢的.

静态的观点越来越受欢迎.

你觉得JavaScript可以取代“成熟”的语言(比如Java和c++),成为企业的首选语言吗?

肯定. 人们现在使用“无服务器”节点所做的事情具有极强的可扩展性,我认为企业api(应用程序编程接口)可以而且将会用JavaScript重写, 至少对那些更灵活、更有远见的公司来说是这样.

开发人员应该在客户端寻找什么?

你希望得到一定程度的信任和自主权,假设你的级别足够高,值得这样做. 我不想接受一份总是有人监视着我的工作. 很多时候, 有了开发工作, 你可以有需要五分钟才能修好的东西, 但是你却花了4个小时去解决一些小问题,以至于你无法真正测试它. 很多时候,我要花8到10个小时来解决一个问题,而实际上我是在努力, 真正集中精力——实际的解决方案就像两行代码. 你希望雇主对你的工作有一定程度的了解.

关于冒名顶替综合症,倦怠和减压

冒名顶替综合症似乎在开发者中并不罕见. 你有过这种经历吗?如果有,你是如何处理的?

绝对. 尤其是在会议上发言的时候. (或者做AMA?)

当涉及到教学/指导时, 你需要意识到你比上个月更了解你所做的事情. 因此, 总有一些人回到了你曾经的地方,他们可以从你的知识中受益.

能够说出来也很重要, “我不知道, 让我们一起调查吧”(也是一个很好的育儿技巧).

埃里克·拉斯穆森在最近的一次会议上说

你生命中的一天是怎样的? 你如何安排好每件事,这样你就不会每周工作100个小时而精疲力竭?

当我真正深入开源的时候, 那。 takes a lot more of my time; sometimes, 我每次都得休息一个月左右. 我送我的孩子去学校,然后花时间观察人们有什么样的问题. 如果他们是认真的, 然后我花一些精力去补救它们,或者以一种有益的方式回应它们.

我有一份与开源完全无关的日常工作,它占用了我很多时间. 一整天, 我设置了通知,这样我就能知道是否有什么严重的问题. 如果发布了新功能之类的, 那么在那个时候更有可能有虫子.

我了解到,为项目编写需求的人肯定, “这件事昨天就该做了, 那为什么还没有完成呢?“我遇到过很多次这样的情况,无论哪个团队收到我的作品,都要花上三周的时间才能真正投入生产. 你会想,“好吧,压力是怎么来的?”

如果一项任务需要在周五之前完成, 最后在下周五完成, 几乎从来不会因为你的失败而倒闭. 当你还年轻,什么都不懂的时候, 感觉就像, 我的天啊, 我们得把这个弄出去.“但在你这样做了足够多次之后, 你看, “等一下。, 他们告诉我们的不是真的,你可以这样说, “好吧, 是的. 无论. 该完成的时候就会完成.”

去年10月,当React宣布这个叫做React Hooks的东西时,我有点筋疲力尽. 如果我在那里, 准备好接受任何新事物并付诸实践, 作为第一批接触React Hooks的人之一,我本可以从中获得很多经验. 我一直在关注下一件大事.

你在空闲时间做些什么来减轻压力?

我散步,听一些与发展无关的播客.

你能推荐什么吗??

我唯一听的真正的科技播客是 未定义的播客,这本书只简略地介绍了技术和开发技巧. 我也听 反应播客-我很快就会出现(希望有一些意义,取决于他们的编辑质量).

看着我选择的捕虫器, ,我最优先考虑的播客包括:

最近,我自己开了两个播客:

第一个叫做 寻求正义, 其中我, 一个对刑事司法系统几乎一无所知的中等智商的人, 采访我的一个朋友,他的整个职业生涯都在研究和努力改革它. 他正在与美国几个州的州长直接合作,以减少监狱人口和释放后的累犯率. 这不是我真正感兴趣的话题,但我的搭档每集都让我着迷.

第二种是纯粹愚蠢的表演,叫做 丹尼斯和埃里克的欢乐时光, 我和同一个朋友晚上一起喝几杯酒, 谈论我们的生活, 让彼此开怀大笑. “寻求正义”是为你上班路上的明亮眼睛准备的, 而欢乐时光则是为你放松驾车回家而准备的.

把它带回开发, 我在播客上的努力帮助我解决了一个在业内找不到解决方案的问题:一个简单的MP3播放器, 带有专辑封面, 这也可以作为推特名片. 所以我写了 AudioCard.

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

订阅意味着同意我们的 隐私政策