Reduxフォームライブラリの作成者からのフルスタック開発者向けのヒント

公開: 2022-03-11

2019年2月、Toptalのコミュニティチームはまったく新しいイニシアチブを開始しました。これは、Toptalのネットワークエキスパートとリアルタイムでやり取りする毎月の機会です。 Ask Me Anything(AMA)セッションは、Toptalのコアチームとタレントネットワークのすべてのメンバーが参加できます。誰でも質問できます。 この記事では、JavaScriptとReduxのエキスパートであるErikRasmussenを使用してAMAから選択した質問と回答を厳選しました。 Erikは、オープンソースソフトウェア開発の課題、開発者向けのヒント、JavaScriptの変動する世界、需要の高い開発者としてのインポスター症候群と燃え尽き症候群への対処方法、およびポッドキャストの推奨事項について説明しています。

ErikはフルスタックのJavaScriptエキスパートであり、25年以上の開発経験があり、React、Redux、Reactのフォーム、およびGraphQLを専門としています。 ユーザー数が2800万人を超えるバージョン管理用のWebベースのホスティングサービスであるGitHubで、彼は20,000を超える星を獲得してトップ100にランクインしました。 彼はまた、Reactで1番目と3番目に人気のあるフォームライブラリの著者でもあります:Redux-FormとReact-Final-Form。

ToptalJavaScriptとReduxエキスパートのErikRasmussen

Reduxフォームとオープンソースソフトウェアの現状

Redux Formの背後で大きな成功を収めた後、なぜ別のフォームライブラリを作成することにしたのですか?

私はReduxFormで多くの教訓を学び、世界中のReactForm開発者のニーズについて洞察を得ました。 React Formの問題のいくつかは、問題を新たに見直すことなしには対処できませんでした。 (詳細はこちら)

多くの開発者は、非常に人気のあるオープンソースプロジェクトを作成することを夢見ています。 プロジェクトをReduxFormと同じくらい成功させることの予期しない結果(良い点と悪い点)にはどのようなものがありますか?

開発者またはチーム全体がプロジェクトを完了するのを妨げてきたバグを修正できると、非常にやりがいがあります。 人々が自分でバグを見つけて修正するときも、それは本当に素晴らしいことです。 これまでのところ、人々は助けを求めるとき、とても親切で親切でした。 私はまだ彼らに修正の義務があると思う正当なユーザーとのやりとりをしていません。

挑戦的な面では、燃え尽き症候群は本物であり、OSSプロジェクトに時間とエネルギーを与えたことに対してOSS開発者を補償する方法をまだ発見していません。 Redux Formは、世界中の数十億ドル規模の企業がビジネスを取引するために使用しており、その存在により、Redux Formをインストールしたチームの開発時間を数千時間節約できましたが、そのお金のほんの一部を作成者に提供するための良い解決策はありません。 。

あなたのようなオープンソース開発者を補償するための作業に有望な解決策はありますか?

私の友人はCodeFundと呼ばれるこの会社を始めました。 彼は、「コードライブラリのドキュメントに広告を掲載できるとしたらどうなるか」という考えを持っていました。 開発者として、私たちは1日中ドキュメントを見て、自分たちが行っていることを実装する方法を考え出します。 さらに、開発者は平均的なWebサーファーよりもはるかに多くのお金を稼ぐので、私たちは贅沢な製品の可能性を秘めています。

CodeFundは、ドキュメントは宣伝するのに本当に素晴らしい場所であるという考えを思いつきました。 私は最初のパイロットの一人でした。 それはかなりうまくいきましたが、GitHubで問題が発生しました。 元々、GitHubリポジトリ自体に広告を掲載していましたが、GitHubと弁護士が急襲し、ノーと言いました。 それは残念です。 CodeFundはしばらくの間彼らと交渉しましたが、結局彼らはノーと言いました。

よく人身売買された図書館の文書を使えば、月に150ドルもらえるかもしれませんが、それだけの価値はありません。 BabbleやWebpackのような珍しいライブラリがいくつかあり、それらに十分なお金が与えられているので、実際に2、3人のフルタイムの開発者がそれを改善するために働いています。 BabbleとWebpack—数十億ドル相当の企業がインフラストラクチャに依存しており、確かにReduxFormはそれらをサポートしています。

あなたがアクセスするほとんどすべてのウェブサイトで、あなたはソースを見ることができ、適切に補償されていない特定の人によって書かれたいくつかのコードを見ることができます。 人々がオープンソースとは何か、そして私たちの何人かが費やした時間についてより理解できるようにするために、意識を高める必要があります。

なぜオープンソースで無料のものを作成するのですか? あなたのような開発者へのインセンティブは何ですか?

あなたがそれを作成する理由は、あなたが現在取り組んでいるものが何であれ、それを必要とするからです。 あなたがそれを解放するとき、他の人が来てそれをより良くします。 オープンソースの夢は、「ここからあちらへと岩を運ぶのに役立つ小さな手押し車を作った」と言うことです。すると、誰かがやって来て、彼らはそれをより良くします。 次のプロジェクトでは、戻って同じライブラリを使用すると、次のようになります。 今はもっといいです。」

それはまた非常にやりがいがあります。 人々が「これは私たちを3週間遅らせてきました、そしてあなたがするのに3時間かかったこの小さな修正は私たちに3週間の時間を節約しました」と言うとき、私はドーパミンヒットを受け取ります。 それには少し中毒のサイクルがあります。そこでは前向きな強化が得られ、気分が良くなります。

私の2番目のフォームライブラリでは、「ねえ、別のフォームライブラリが欲しい」と言われることはあまりありませんでしたが、それを改善する方法を考えただけでした。

それはあなたがそれをする理由の一種の夢です。 しかし、それは確かにお金のためではありません。

理想的な世界では、オープンソースソフトウェアを作成することに対してどのくらいの報酬を受け取りますか? ケーキの上のアイシング?

誰かが私に6桁のお金を払って、一日中オープンソースで作業するだけでもかまいません。 生成された価値とコストを比較すると、オープンソースの比率は非常に高くなっています。 あなたは一つのことをする小さな小さな図書館に行き着きます、そして一つのことは本当に、本当にうまくいきます。

世界中のすべての企業がそれを行うために独自の開発者チームを割り当てる必要がある場合、結果は非常に大きく異なります。 私たちがオープンソースを持っていて、それに対する1つの解決策、つまり最高のアルゴリズムバブルを1つ持つことができるという事実は、世界中の誰もがその効率を組み込んでいることを意味します。

オープンソースのもう1つの価値は、自分が書いたものを使用していて、自分の会社だけがそれを使用している場合です。 。 。 これを1,000社が使用しているものと比較してください。 彼らは、潜在的に問題となる可能性のあるバグスペースの隅々までを見つけました。あなたはそれを受け取り、それを自分のものに接続します。あなたは金色です。 あなたはそれに対してはるかに自信を持つでしょう。

JavaScriptのダイナミックな世界

長い間JavaScriptの分野に携わってきたので、[JavaScriptアプリケーションを構築するための]非常に多くの最新の新しいフレームワークが出入りするのを見たことがあるはずです。 どのフレームワークにコミットするかを決定できるように、どのようにして業界の動向を把握していますか?

開発者コミュニティの風を感じ取る必要があります。 TypeScriptとFlowの間の現在の戦いは素晴らしい例です。 Facebookがタイピングフレームワークのより良いスチュワードであると仮定して、私は最初にそのレースで間違った馬を選びました。 しかし、TSはその戦いにほぼ勝ったと思います。そして今、私はゆっくりとその方向に物事を移行しています。

「開発者ツイッター」であるツイッターの一角があります。 十分な数の人をフォローすると(おそらく100程度のサンプルサイズが必要です)、風が吹いている場所と人気が高まっているものを感じることができます。 「以前はライブラリAを使用していましたが、ライブラリBについて学んだばかりで、すべてがはるかに簡単です」などの投稿がたくさんあります。 あなたはそれらを十分に手に入れ、「まあ、多分私はこの他の図書館をチェックするべきだ」と思っています。

トレンドはJavaScriptの分野で行き来しています。 それは常に動いていますか?

私はそれが進化し続けると思います(そして願っています)。 停滞は技術の死です。 Javaでさえ、現在大幅に革新しています。Java10でできることは、祖母のJava6とはまったく異なります。

最終的にTechXでアプリを構築して、すべてのクールな子供たちがTech Yを使用していることを確認するのは、大変なことかもしれません。しかし、それが私たちの業界です。

あなたの意見では、言語を習得するために本当に理解するために特に重要なJavaScriptの概念は何ですか?

関数型プログラミングと関数を渡すというアイデアは非常に重要だと思います。 特に、JavaやC++などの言語を使用している場合。

Reactは、SPA [シングルページアプリケーション]の構築に使用する必要があると思いますか、それとも通常のページのコンポーネントにのみ使用する必要がありますか?

それがReactの美しさです。それはとても用途が広いです。 私は日常業務で古いJava/jQueryアプリのすべての新機能にReactをゆっくりと導入してきました。 動作するDOMノードがあれば、Reactは問題なく機能します。 アプリ全体を制御する必要はありません。

新しいReactアプリを起動するとき、最初から定期的に使用するツールとライブラリは何ですか?

create-react-appが今のところ明らかに勝者だと思います。 4年前、そのようなものがなかったとき、それははるかに困難でした。

反応アプリでアプリの状態をどのように処理しますか?

Reduxが出たとき、それは明らかに答えでした。 ただし、Reduxの「状態」の多くはloadinglistOfObjectsのようなものであり、最近ではそのためにApolloGraphQLを使用しています。 isSideNavOpenのような他のものは、コンテキストベースのコンポーネントで非常に簡単に管理できます。 そうは言っても、Reduxの正当なユースケースはまだいくつかありますが、単純なReactアプリで遭遇したものはありません。

お気に入りのエディター/IDEは何ですか?

ああ、その質問!

私はJavaから来て、JetBrains IntelliJに長年満足していますが、JSにとっては少し遅いです。 最初にAtomに行きましたが、最終的にVSCodeに落ち着きました。 JestとFlowおよびTypeScriptの統合は無敵です。

rubyJSに変換し、Rubystsが純粋なRubyで(JSを記述せずに)React / Flux構造のアプリを作成するための道を開くopalのような同型開発についてどう思いますか?

JavaScriptがサーバーにジャンプしたという事実は、私が思うに、大きな問題です。 クライアントとサーバーの両方で同じコードでレンダリングできることは非常に大きなことであり、将来の道である可能性が高くなります。

現在最も人気のあるJSフレームワークの最大の問題は何だと思いますか?

完全にはわかりませんが、Zeitなどの企業がNext.jsで追求しているcss-in-js、サーバーレス、SSRの方向性は本当に気に入っています。

90年代後半にウェブサイトを構築していた私にとって、静的なウェブサイトに戻るのは本当に面白いことです。 ビルド時にすべてを生成することに戻ります。サーバーに静的なものを配置し、再水和と呼ばれるものによって動的なものを追加できます。 ページ全体をレンダリングしたら、追加のJavaScriptを取得して、実際にアニメーションを作成し、コンポーネントを移動できます。

Zeitは、Nowフレームワークを使用して、静的HTMLファイルをダウンロードするよりも高速なものはないため、Webサイトへの静的ビルドもサポートしています。 それはただのテキストファイルであり、それからブーム、あなたはそれを手に入れました。 一方、サーバーにアクセスする場合は、表示する必要のあるページを構築するために、データベースに4〜100回アクセスする必要があります。 それはとても遅いです。

静的なアイデアが人気を集めています。

JavaScriptは「成熟した」言語(JavaやC ++など)を採用し、企業が選択する言語になることができると思いますか?

絶対に。 人々が「サーバーレス」ノードで現在行っていることは非常にスケーラブルであり、エンタープライズAPI [アプリケーションプログラミングインターフェイス]は、少なくともより機敏で先進的な企業によってJavaScriptで書き直すことができます。

開発者はクライアントで何を探す必要がありますか?

あなたは、あなたがそれに値するのに十分な年長であると仮定して、あなたに与えられたレベルの信頼と自律性を望んでいます。 いつも誰かが私の肩越しに見ているような仕事はしたくありません。 多くの場合、開発作業では、修正に5分かかることがありますが、実際にテストできないようにするビルドの小さな問題に4時間費やします。 問題に8時間から10時間費やすことがよくあります。実際に作業していて、ずっと集中している場合、実際の解決策は2行のコードのようなものです。 あなたはあなたの仕事がどのようなものかについてそのレベルの理解を持っている雇用主を望んでいます。

インポスター症候群、燃え尽き症候群、ストレス解消について

インポスター症候群は、開発者の間では珍しい現象ではないようです。 あなたはそれを経験しますか、もしそうなら、あなたはそれをどのように扱いますか?

絶対。 特に会議で話すとき。 (またはAMAを実行していますか?)

教育/メンタリングに関しては、先月よりも自分のしていることについてもっとよく知っていることを理解する必要があります。 エルゴ、あなたがかつてあった場所に戻って、あなたの知識から利益を得ることができる人々が常にいます。

「わからない、一緒に調べてみよう」と言えることも重要です(これも子育てのコツです)。

最近の会議で話すエリック・ラスムッセン

あなたの人生の一日はどんな感じですか? 週に100時間働いて燃え尽きないように、どのようにすべてをスケジュールしますか?

私がオープンソースに深く関わってきたとき、それは私の時間の多くを要します。 時々、私は一度に一ヶ月かそこら引き戻さなければなりません。 私は子供たちを学校に連れて行き、それから私は人々がどんな種類の問題を抱えているかを見ることに時間を費やします。 彼らが本当に深刻な場合、私はそれらを改善するか、役立つ方法で対応するためにいくつかの努力を費やします。

オープンソースとはまったく関係のない日課があり、時間がかかります。 一日中、何か深刻な問題があるかどうかを確認できるように通知を設定しています。 新機能などがリリースされた場合は、その頃にバグが発生する可能性が高くなります。

プロジェクトの要件を書いている人は誰でも、「これは昨日行われるべきだったのに、なぜまだ行われていないのか」と確信していることを学びました。 私の作品を受け取っているチームが実際に本番環境に移行するまでに3週間ほどかかることが何度もありました。 そして、あなたは「まあ、そのストレスは何だったの?」のようなものです。

金曜日までにタスクを実行する必要があり、それが次の金曜日までに完了する場合、失敗したためにビジネスがシャットダウンすることはほとんどありません。 あなたが若くてよくわからないときは、「なんてことだ、これを戸外に出さなければならない」と感じます。 しかし、それを十分な回数行った後、「ちょっと待ってください、彼らが私たちに言っていたことが本当に真実ではなかった」とあなたは見ることができます。 なんでもいい。 それが完了すると、それは完了します。」

去年の10月にReactがReactHooksと呼ばれるものを発表したとき、私は少し燃え尽きました。 もし私がそこにいて、何か新しいことを取り上げてそれを実行する準備ができていたら、ReactHooksに最初に参加した人の1人であることから多くのマイレージを得ることができたでしょう。 次の大きなことになるかもしれないことに目を光らせているようなものです。

ストレスを和らげるために、自由時間に何をしますか?

私は散歩をして、開発に関するものではないポッドキャストを聴きます。

おすすめできるものはありますか?

私が聞いている本当の技術ポッドキャストはTheUndefinedPodcastだけです。これは、技術と開発者のヒントについてのみ接線方向に関係しています。 また、React Podcastも聴いています。これは、間もなく登場します(エディターの品質によっては、ある程度意味があると思います)。

私が選んだポッドキャッチャーであるOvercastを見ると、私の最優先のポッドキャストは次のとおりです。

  • ロデリック・オン・ザ・ライン
  • 理にかなっている
  • 偶発的な技術ポッドキャスト
  • 道路工事
  • 指数
  • こんにちはインターネット
  • Radiolab
  • 全員に返信

最近、私は実際に2つのポッドキャストを自分で始めました。

最初のものはシーク・ジャスティスと呼ばれ、刑事司法制度についてほとんど何も知らない適度に知的な人である私が、彼のキャリア全体を調査して改革に取り組んできた私の友人にインタビューします。 彼は、刑務所の人口と再犯を解放後に減らすために、いくつかの米国の州の知事と直接協力しています。 それは私が今まで本当に興味を持っていたトピックではありませんが、私の共同ホストはすべてのエピソードを魅了します。

2つ目は、デニスとエリックとのハッピーアワーと呼ばれる純粋な愚かさのショーです。同じ友人と私がいくつかの夜の飲み物に参加し、私たちの生活について話し、お互いを笑わせます。 シークジャスティスはあなたの明るい目の通勤のためのものであり、ハッピーアワーはあなたのくつろぎのドライブホームのためのものです。

それを開発に戻すために、私のポッドキャストの努力は、業界で解決策を見つけることができなかった問題を解決するのに役立ちました。アルバムアートを備えた簡単なMP3プレーヤーで、Twitterカードとしても機能しました。 だから私はAudioCardを書きました。