知っていてほしい「学び方を学ぶ」ということ
はじめに
ウェブアプリ開発の表面上をすくい取ってもReact、Vue、linuxの知識、WebサーバやDocker、RDB、NoSQL、プログラミン言語、フレームワークなど学ぶ項目は無限にあります。
メンター、先輩として教えられることはできるだけ教えるのですがこの業界は常に学ぶことが多くすべてを教えてあげることは困難だと感じています。
ここで助けとなってくれるのが独学の方法です。
メンターをしていたりするとうまく学習サイクルを回せていないなと感じることがよくあります。
その背景から私はできるだけ自走する技術を教えることを意識しています。
まずやってみる
メンターをしていてよくあったのはプログラミング言語やフレームワークについての本を読み込んで勉強したが実践でやってみると全くと行っていいほどうまくいきません。
やっていることを観察してみると技術本を最初から最後まで読み切ってからその技術について実際に触り始めるまたはわかった気になってそのままになっていました。
こんな経験は皆さんもあるのではないでしょうか?
私もアジャイル開発の本を読んだ後、実践する機会がなかったこともあるのですがわかった気になっていました。
初めてアジャイル開発に参加した時、最初の1ヶ月ははっきりいってグダグダでした。
頭で理解していることと実際にやってみるのではそのギャップに驚かされます。
最初から最後まで本を読んでから実践すると大きなギャップが生まれるのでなかなかうまく進めることができません。
最初の概要を理解したらすぐに実践すると小さいギャップですみちょっとの軌道修正で前へ進むことができます。
学習の基本は学習 -> 実践 -> 学習です。
アジャイルの考えと同じですね。
目的駆動で考える
ただ漠然といつ使うかわからないフレームやプログラミング言語、それらの機能を勉強をするのは辛いですよね。
時間が湯水のようにある場合は問題ないのかもしれませんが普通はみんな忙しいです。
取捨選択をしなければなりません。
私がよく考えるのは自分のやりたい目的をベースに考えるということです。
例えば、Webエンジニアの場合はこういうサービスを作れるようになりたいという目的(目標)を設定します。
そのサービスを作るには何が必要でしょうか?
基本は兎にも角にもサーバが必要になってくると思います。
サーバについてまず学習しなければなりません。
このように目的に沿って進んでいくと目の前に超えなくてはならない壁がいくつも立ち塞がってきます。
それを順々に解決していくことでいま必要な知識を身につけることができ効率的に学ぶことが可能になります。
* ウェブサイトの作り方は?
-> まずサーバが必要っぽい
-> サーバの立て方を学習する
* サーバに配置したコンテンツの閲覧方法は?
-> Webサーバが必要らしい。
-> Webサーバの立て方を学習する。
* ドメインが契約サービスのものになっている。変えたい
-> ドメインを取得しなければ行けないっぽい
-> ドメインを取得してみる
…(目的達成まで続く)
いつか使うかもしれない知識を網羅的に勉強するのと目的を持って勉強をするのでは解像度が違ってきます。
目的設定しステップを踏んで着実に進んでことを確認することでモチベーションを維持でき継続して学習することが可能になるのです。
魚をくださいではなく魚のとり方を学ぶ
老子の格言で 「授人以魚 不如授人以漁」 という言葉があるそうです。
この言葉の意味は 「飢えている人がいるときに、魚を与えるか、魚の釣り方を教えるか。」 という話で、 伝えたい意味としては、 「人に魚を与えれば一日で食べてしまうが、釣り方を教えれば一生食べていける」 ということのようです。
行き詰まっている時に先輩たちに相談するととんでもない速さで問題解決してくれたという経験は皆さんもあるのではないでしょうか?
ここで提示された問題解決を提示されて解決!!となっていないでしょうか?
先程の格言に照らしわわせるとこれが魚を与えられている行為です。
解決策ももちろん大事なのですがその解く過程についてより注目するととても学びが多いように思われます。
ではどうすればと良いかというと簡単です。
答えだけを提示された場合は、こういう質問をすると良いでしょう。
「どういう過程でその結論に行き着いたのですか?」
ちなみに自分場合は、ある問題を解く過程であるライブラリに問題がありそうだという仮説を立てていました。
その時私がやったのはググるのではなくギットハブる(github上で課題が上がっていないかなどを直接issueに検索したりする行為)なのですが目からウロコだったようです。
自分が当たり前にやっていることでも他の人にとっては特別なことをしていたようです。
このように過程に注目することによって新たな知識を得ることができるのです。
人に教えよう
大学時代面白い先輩がいて勉強をしながらパワーポイントを作っていました。
何をしているのか聞いてみると人に教えられるレベルになるのが一番手っ取り早く理解が進むと言っていてなるほどと思いました。
実際学習したことを要点をまとめて伝えるということは非常に難しいと感じます。
今すぐ人に教えようと言われてもいやちょっと。。となるのは非常にわかります。
ここで一つ覚えて欲しいのは、教えるという行為を難しく捉えないことです。
例えば雑談中に最近React hookでこんなことやったんですよね〜とかでいいのです。
エキスパートである必要はありません。
相手が初心者ならReact hookってなんですか?なんのために存在するんですか?というような質問が出てきたりします。
そこで初めて実際わかっているんだけどぼやっとしか答えられない問題に気づくことができ学び直しによって技術の解像度をより上げることができるのです。
最後に
いかがだったでしょうか?
エンジニアをしているといくらでも学ぶことが出てくるので
この記事を通して 学ぶことが多すぎて何からやったら良いのかわからない、
どれくらい深くやれば良いのかわからない、
モチベーションが続かない、
という方の助けになれば幸いです。
Discussion