最近RailsやらRustをやる機会があった。 そのときにどうやって習得していくのがいいのだろうかと考え実践した結果個人的に一番良かったやり方が独学×教え合うだった。
これが最適と至るまでの思考と考察をしていく。 ちなみにこのやり方は独学できる(自走力)が結構大事だと感じた。 初心者プログラマーに向いてるかというとそこは疑問なのだけど誰か試したら教えてほしい。
あとこれを見てこの発想になった。
この戦略、自分は時間を使わず知りたいことがしれる、若者はお金をもらって技術を学べる。いいことしかない。 https://t.co/4w6StlZION
— V (@voluntas) 2020年5月12日
お金の代わりに相手が知りたい知識や知見を提供することにしたって感じ。
独学の限界
まず、このやり方には条件がある。 環境構築や開発環境、公式ドキュメントを読んで基本の文法が理解できる必要がある。
何故かというと教え合うというのはある程度以上理解をしている状態で、更に進んだ書き方や振る舞いはあるのか?や業務ではこう書くとか結構実際に動くものベースでやるから効果が高いのだ。基本がわからんときでも何がどう理解できないのか言語化できるくらいのベースが無いと片側に負荷が集中してしまう。
基礎を抑える教材は公式ドキュメントが推奨するサンプルでもいいし、UdemyやYoutubeにも動画教材がいくつもある。そのへんを自分で一通りさらってサンプルのカスタムとかができるようになったところからの成長がなかなか大変なのだ。
なぜ大変かというと具体的に作りたいものがあればそれを作ればいいのだけど、それがないとき何を次にするか。。。となる
そして自分の作りたいものがあってコツコツと作っても誰もレビューやアドバイスをくれないと 変な癖がついたり非効率な書き方したりと遠回りしてしまうのだ。
独学と業務レベルを隔てる大きい差は一言で言えば「立ち向かった問題の難易度」だ。 独学でなるべく業務レベルにちかづくには業務レベルを知る人にアドバイスをもらい、人の経験を借りて仮想の問題に立ち向かうことで壁を突破できる。
プロゲーマーの成長論から学ぶ
このやり方がいいのでは?と思ったきっかけはプロゲーマーのときどさんの著書だ。
プロゲーマーたちはかつて個人戦だからと自分の戦略や肝になる部分を出し惜しんで来たらしい。 しかし、戦略や技術をオープンにし仲間と練習してアドバイスし合ったほうが技術がレベルアップしたという。
プログラマーもそうなのでは? 自分のやってることややりたいことを晒しながら自分よりも早くその分野に参入した人に教えてもらうことでいち早く70点くらいのスキルを獲得できるのではないかと思った。
そこで自分がやりたいことを表明してレビューしてもらったり対価として違うことを教えることで 互いにレベルアップできるということが個人のレベルでは実感できた。 (僕の場合はSQLを教える代わりにレタッチを教えてもらった。)
まとめ
これからは独学だけではなくて自分のネットワークを駆使し、やりたいことを積極的に表明して 教え合うようなやり方を取るのがいいのではないかと思う。 お互いに教えてほしいことを教え合うことで知見や言語化が高まりレベルアップできる。
巨人の方に乗れとはこういうことかと言うのを実感した。