見出し画像

エンジニアの学習サイクル INPUT→TRY→CONTRIBUTE→OUTPUT効率よく学び、貢献する

こちらは アウトプットはいいぞカレンダー Advent Calendar 2022(2つ目) の13日目の記事です。

こんにちは、hamです。普段はWeb系のソフトウェアエンジニアをやっています!
ソフトウェアエンジニアをやっていると、日々アップデートされていく技術についてインプットする機会が多いと思います。
ただ闇雲にインプットするだけでは身に付かないことが多く、実際に手を動かしたりアウトプットすることで知識として定着しやすいということがよく言われています。

私は先日、RailsのAction Cableについて知りたくなったのでインプットしたのですが、その時にタイトルに書いたインプットからアウトプットまでの流れがうまく回せたので具体例を交えて効率よい学習サイクルを紹介したいと思います。

ちなみにAction Cableについて知りたいと思った時のツイートはこちら

INPUT

まずはINPUTから始めます。
INPUTは公式ドキュメントや書籍、ブログなどから行うことが多いと思います。
※ブログなど公式以外の情報からINPUTする場合はその情報が書かれた時期に注意しましょう。古い記事の場合、現状とずれている可能性があります。

私の場合はRailsのAction Cableについて知りたいと思ったので、Railsについてインプットする時にいつもお世話になっているRailsガイドを読みました。

ドキュメントを読むだけでもわかった気にはなれますが、いざ使う時に手が動かないなど身についていないことがよくあります。
そこで、使える知識に昇華させるために、Action Cableを使って実際に動くものを実装することにしました。

TRY

次はTRYです。実際に手を動かして実装します。
実際に手を動かす場合、サンプル通りに作ってみるのも良いですが、自分が使う状況を思い浮かべて、それに近い形で実装する方が良いと思っています。
実際に使う状況をイメージしながら実装することで、本当に使うことになった時に役立つ知識になりやすいです。
※とはいえ、初手から応用しまくりで実装を始めるとドハマリする可能性が高いので、サンプル通りに作って徐々にカスタマイズしていくことをお勧めします。

今回、Railsガイドにサンプルコードは載っていたのですが、Railsでフロントエンドも実装する前提になってました。
私はWebアプリケーションを作る場合、React + Rails(API)の構成で作ることが多いので今回もサンプル通りに作るのではなく、React + Rails(Action Cable)の構成で作ることにしました。

動くものが完成した時のツイートはこちら

CONTRIBUTE

学習の過程で参照したドキュメントの誤字や使用したライブラリの不具合を見つけることがあります。
参照したドキュメントやライブラリがOSSのように報告や修正する方法が確立されている場合、間違いを指摘したり修正したりしてコントリビュートしましょう!
軽微な誤字の修正であっても今後参照する人の役に立ちますし、バグに気づいたのであれば多くの利用者の役に立ちます。
バグの場合、プルリクを出すのはハードルが高いと感じることもあると思いますが、その場合はissueで状況を報告するだけでも良いと思うのでぜひトライしてみましょう!
※GitHubなどで管理されている場合、READMEなどにコントリビュートの方法が記載されていることが多いので事前に一読しましょう。

今回、Railsガイドに一部間違っている点を見つけたので修正プルリクを作成して無事マージされました。
(ちなみに、最近は誤字やバグなどを見つけるとコントリビューションチャンス!と、ちょっと嬉しくなったりしますw)

OUTPUT

最後にアウトプットします。
実際に手を動かして作ったことで使える知識になっていると思いますが、言語化してアウトプットすることでさらに知識が定着します。
人に何かを説明すると説明している側も情報が整理されて知識が深まるということがあると思いますが、アウトプットすることで同様のことが起こります。
また、記事として残すことで今後同じようなことをしたいと思った人の助けになる可能性もあります。ちなみに「今後同じようなことをしたいと思った人」の中には自分も含まれます。
xxの実装したいな→昔実装して記事にしてたな!→読み返して復習、という流れで過去の自分に助けられたことが何度もあります!

今回は下記の記事を書きました。
記事を書いてみると、細かいところで言語化できるほど理解できていないことがわかったので、追加で調査したりしてさらに知識を深めることができました。

INPUT

OUTPUTやCONTRIBUTEしたものが次に同様のことをする人たちのインプットになります!
このサイクルを回して、皆が効率よく学習できる文化が今後も続いていくとと良いな〜と思っています!

この記事が気に入ったらサポートをしてみませんか?