プログラミング

Udemyのチュートリアル地獄、そしてそれを回避する方法

「ITエンジニアになる為に学校へ通うのは時代遅れ」だと近年よく感じます。私は大学院でITの勉強をしましたが、仕事で使っている技術はほぼ全て学校を卒業した後に自力で覚えました。これまでに「大金払って大学院へ行って良かった」と思えた瞬間は、せいぜい就労ビザの取得時くらいでした。

ネット上にはプログラミングを覚えるために必要な情報がすでにたくさん存在します。そして(国立大学とかは別ですけど)学校よりも安価な、それでいて出来の良い学習サービスがたくさん存在します。その中で個人的に一番気に入っているのがUdemyです。

私は2,3年位前からUdemyを愛用していて、これまでウェブ開発のフレームワーク、Linuxの構造とコマンド、Nginx(ウェブサーバー)の使い方なんかをUdemyを通じて覚えました。Udemyを利用すれば利用するほど「俺、どうして大学院なんぞに何百万円も突っ込んだのかね?こういうサービスを使えば英語もプログラミングも覚えられるじゃん…」と感じずにはいられませんでした。

じゃあ「Udemyだけ使っていれば誰でも独学でエンジニアになれるか?」と言われると、必ずしもそうではありません。Udemyを使っていると度々チュートリアル地獄というやつに陥ってしまうのです。今日はそれを回避する為に気を付けていることを書こうかなと。

チュートリアル地獄とは

チュートリアルにならってコードを書き続けてはいるものの、その技術を使って何かを作るほどの応用力が身につかない様

…です(ちなみにこの定義は私が勝手に付けました)。私はこの言葉をYoutubeを観てた時に知ったんですが、初めてこの言葉について知ったときに「あぁ、わかるわかる!」と強烈な馴染みを覚えました。

例を挙げます。

今年の始め、私はSpring(Javaのフレームワーク)を覚えようとしてUdemyのコースを受けていました。が、かなりボリュームのあるコースであり、また途中でビザの更新のために勉強を中断していたため、コース全体の7割くらいが終わった時点で前半カバーした部分をほとんど覚えていませんでした。で、特に何かを作れるようになったわけでもないので、また初めの方から動画を見直していました(「お前の記憶力が低いだけでは」、とか言わないでね)。

こういったことは過去にもありました。その時はフロントエンドのフレームワークを覚えようとしていて、動画を見ながらTo-doリストを作り、コースが終わってしばらく時間が経つと『あれ、Webpackってどうやって使うんだっけ』と、また動画を最初の方から見直して…といった具合に、チュートリアル地獄とは、動画を見つつそれに倣って手を動かしているにも関わらず、応用力がつかない状況です。

チュートリアル地獄を回避する為に気を付けていること

『普通に動画を見ながらコードを書いているだけじゃ大して頭に入らない…他にもっと効率の良い方法があるのでは?』

と、これまで試行錯誤してきた結果、チュートリアルを見ながら何かを覚える際に私は以下のようなことを意識しています。

1:ボリュームのあるコースは最初から最後まで全部やろうとしない

例えば、さっき話したSpringですが、勉強を再開した時に『これ、今全部やる必要無くね?』という単純な事実に気付きました。そもそもSpringを覚え始めた理由とは今の会社で使う必要が生じたからであり、私が職場で任されていることはREST APIのエンドポイントを更新することだけでした(その時点では)。なので…

  1. まず基本的なことをカバーしている初めの1~2章を覚える
  2. それからREST APIに関連している所を集中して勉強する
  3. それ以外(認証の仕組み、message queueなど)は全部その後でやる

といった具合に、必要性の高いものから先に覚えるのです。私の例だと、REST APIのエンドポイントの更新は仕事でするので、勉強したことをすぐアウトプットできます。なので「Udemyで以前勉強したけど覚えていない」ということは起こりません

80:20の法則って聞いたことがありますか。全体の利益の80%は20%の要因がもたらすという考えで、社会現象や人間関係にも当てはめられて使われるものです。Springの勉強を再開した時、私はこの80:20の法則をぼんやりと思い出しました。『これって勉強にも当てはまるよな』って。例えば30時間のチュートリアルがあったら、その内の中で今の仕事で本当に役に立つコンテンツはせいぜい6時間程度。残りの24時間は自分がやることとは(少なくとも、今の時点では)関連性が低い。それなら、基本的なことをカバーしている始めの数章を終わらせたら、特に役に立つ20%を見つけ、まずそこを全力で習得すべき。残りの80%はその後でやればいいのでは

じゃあ、その”特に役に立つ20%”はどうやって見つければいいんでしょうか?

もしあなたが今の仕事で使っている技術を覚えたいなら、仕事と関連している部分がそれに該当するでしょう。そうでない場合(すぐに使う必要性のない技術について勉強する場合)は…コースを始める前にそれを使って何を作るか決めるのです。

2:コースを始める前に何を作るか決める

これはプログラミングに限った話ではないのですが、新しい技術を身に着けるにはアウトプットを欠かせません。人の脳はインプットをしている時よりもアウトプットをしている時の方が、情報の定着率が高いからです。「何を根拠にそんなこと言うのか」って?このインプット/アウトプットと記憶の関係を証明する実験報告はたくさん存在しますので、興味があったらネットで調べてみてください。

じゃあ、何を作ればいいのでしょうか?それはあなたが興味のあるものなら何でもいいです。あなた私と同様にウェブ開発をしており、「これを作ってみよう」というアイデアが特に何も思いつかないなら、個人的にはECサイトのクローンを作ってみることを勧めます。CSRF攻撃対策や認証など、ECサイトを一つ作ろうとするとウェブ開発のいろんな場面で応用の利く技術を覚えられるからです。

(話はそれますが、以前私は練習が目的で架空のECサイトを作りました。このブログのサブドメインで。リンクを貼っておくんで、もしよかったら遊んでください。『こうした方がいいんでないの』といった感想をもらえたら非常にありがたいです)

あるいは、すでに自分が作った成果物に変更を加えるも良いんじゃないかと思います。私の場合、Reactのテストの書き方をUdemyで勉強した後、以前実験用に作ったアプリに追加しました。それ以降、仕事でReactを使って新しいコンポーネントを作って『こういう時、どうやってテストを書けばいいんだったっけ?』という状況になったら、それを見返すことで思い出しています。この『テストの書き方を覚える→実験用のアプリに追加する→書き方を忘れたらそれを見返して思い出す』は今でも役に立ってます。それに加えてレジュメにも載せられますので、転職したい人にとってはアピール材料にもなります。

(くどいようですが…そのアプリのgithubのリンクもついでに貼っておきますので、よかったらフィードバックをください)

まとめ

まとめると、

  1. ボリュームのあるコースは全部やろうとせず、大事だと思う場所をまず集中して覚える
  2. すぐにアウトプットする

というのが今日の話でした。チュートリアルは見終わるまでが前半、それを作って何かを作る部分が後半なのです。もしあなたが他にもっと効率の良いUdemy(あるいは似たサービス)の使い方を知っていましたら、是非教えてください。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください