プログラマーライフ

#100DaysOfCodeとは?プログラミング独学で挫折しない3つのルール

こんにちは、WEBプログラマーのとうふです。

まよい羊
まよい羊
初心者プログラマーです!独学で勉強してまーす!

という人の中で、

まよい羊A
まよい羊A
始めたものの何からやったりいのかわかりませーん!
まよい羊B
まよい羊B
独学じゃ続かないし、挫折しそうでーす!

という方も多いのではないでしょうか?
実際プログラミングの学習はものすっごく孤独で、自分との戦いですよね。

WEB系の言語なら、PHPやRubyを始める前にHTMLやCSSも覚えなくちゃだし、
プログラミング言語を始めるにも環境構築やサーバー・ネットワークの知識も必要。

範囲が広く分からないことをググればさらに分からないことが出てきて、

「途方もねぇ…独学でできる気がしねぇ…」

そうして挫折していく人も多いのではないでしょうか。

ただ言えるのは、
プログラミングの独学習得は「必ずできます」!

では、独学でプログラミングを勉強し、言語を習得するにはどうすれば良いのか?
挫折してしまう人にはある共通点があり、それを打破するためのポイントがあります。

今回は私も実践してきた挫折しない勉強方法を紹介していきます!

初心者にもおすすめ!100DaysOfCodeとは?

これは、海外発祥の「プログラミング100日間チャレンジ」といって、
「100日間、毎日プログラミングをしよう!コードを書こう!」という企画です。

進捗とチャレンジ日数を発信し、プログラミングを楽しく習慣化するのが目的です。

最近はプログラミングを勉強している人が「#100DaysOfCode」の
タグを付け、自分の学習進捗をTwitterに投稿しているのをよく見かけますよね。

何を学んだか?どういうことで詰まってどう解決したか?をアウトプットすることは
勉強中の人にはとてもおすすめな学習方法の一つです。なぜなら、

  • 自分のできなかったことを整理して理解することができる
  • 誰かが見ている場でそれを発言することでアドバイスをもらえる
  • 誰かに見てもらうことで自分のモチベーションにもなる
  • 同じように詰まっている人の解決になればさらにモチベUP

など様々なメリットがあるからです!

またプログラミングや言語を習得したければ、1行でも多くコード書くべきです。
ifやforeachの書き方を本で読んでも、自分で書けなければ意味がありません。

「毎日プログラミングをする」というのは初心者では案外、
意識しないとできないことではないでしょうか?
これを楽しく習慣化していく取り組みは、とても面白いなと思います。

ただし、毎日「今日はPHPのifとswitchの使い方を勉強しました。」と
やったことを呟くだけではなんの成長にも繋がりません。

どうしてなのかわからない人は、「独学挫折予備軍」です。
挫折せず、100日間でもっとあなたを成長させるための勉強ルールを次に書いていきます!

挫折の前に:「目標、立ててますか?」

下記は100日チャレンジで最近話題になっていた@かしいさんの挑戦。

100日でサービスをリリースする!という目標をやり遂げて、
未経験とは思えないくらい、素敵なサービスをリリースされていましたね…!

あなたは「どうしてプログラミングの勉強をしている」のでしょうか?

プログラマー・エンジニアになるため?
WEBサービスを自分で作れるようになるため?
フリーランスで働くため?

そうなって、どうしたいのでしょうか。
本来の目的を忘れ「勉強すること」が目標になっていないでしょうか?

100日後あなたは何を達成しているか想像ができますか?

プログラミング学習において、
最終的に自分は何をしたいのか?作りたいのか?という目標を明確に持つことが大切です。

目標のない勉強は自分の経験値になりにくいです。
学生時代「これを覚えて将来役に立つの?」「何のために勉強してるんだろう」と
思いながらただ勉強していたのではないでしょうか。

そのときのように、
どうして今、この勉強をしているのかのゴールが分からなければ、
モチベーションを保つことが難しくなります。

また「なんとなく必要そう」といった考えで自分にとって今は不必要なことに時間を使い、
余計に難しく途方もなく感じ、自分には向いてないかもなど挫折に繋がってしまいます。

もっともっと目の前の小さな目標ポイントを立てていくことから始めましょう!

ルール① 途方も無いからルートを決める

ではどのように目標を立てれば良いのでしょうか?
特に努力することが続かない人は、小さなゴールを沢山作っていきましょう。

それをクリアすることで成功体験にもなり、継続して勉強を続けやすくなります。
また、先に何日でやりきるかも決めておくと良いです。

間で分からないことがあって脱線するよりも、今やっていることを終わらせてから
やることで全部が中途半端にならないようにしていきます。

例えば100日間チャレンジするなら、最終目標で何ができるようになるかを決め、
◯日時点でここまでできるように。◯日時点で一旦復習。最後の◯日で総仕上げ。
と細々自分のゴールを決めていきましょう。

ルール② ダラダラ続けても意味がない

独学で勉強している人は、本業や学業の合間を縫ってしている人も多いと思います。
だからと言って、「今日はできなかった・・・」とダラダラと延ばしてはいけません。

1時間でもいいので、1行でもコードを書くことを意識しましょう。
プログラミングはコードを自分で実際に書かなければ本当に身に付いていきません。

何を書けばいいのかわからないなら、

  • 練習問題を探してやってみる
  • おみくじ、Twitter風掲示板、ログインフォーム等を作ってみる
  • 好きなWEBサイトをトレースしてみる

などにチャレンジしてみると、
自分のできることできないことも分かってくるのでオススメです。

覚えたことは実際に手を動かして刷り込んでいきましょう!

ルール③ 意味あるアウトプットを心がける

学んだことはアウトプットすることでさらに自分に定着していきます!

Twitterやブログ、Qiita、社内チャットなどたアウトプットできる場が沢山存在します。
そこで「今日は◯◯を勉強しました〜」だけを発信するなんてもったいないです。

私も未経験でエンジニアに就職した後、社内のエンジニア全員が見られる場所で
分からなくて調べたこと、参考にしたこと、自分なりに挑戦したこと、反省&失敗 etc…
を常に発信するようにしていました。

誰かが見てくれる場で発信することで、別のエンジニアからコメントをもらったり、
間違いを指摘してもらったり、もっと良い方法などを教われるチャンスにもなります。

そうしたアウトプットは今も習慣として身に付いていて、
新しく覚えた技術や、自分なりの環境構築方法をQiitaに書いて共有することで
同じところで詰まったとき見返したり、知識をアップデートしていくことができます。

自分がどんなことをやってきたか、成長を可視化することで振り返りやすくなりますし、
就職や転職でもアピールできる材料にもなり得ます。

自分の着地点を見直そう

プログラミングの勉強をしていて、
例えば「WEBサービスを作りたい」と考えている人が、HTMLやCSS、jQueryに
時間をかけて勉強しているのは良いとは思います。

ですが、まだ機能の実装すらできない、プログラミング言語も触っていないのに
そこに時間を費やしてしまっているのを私はもったいないと思います。
UI・ユーザービリティについて考えたりとかリッチな動きつけたりはもってのほか。

そういう人を見るたび「本当にエンジニア目指してるのかな?」と思ってしまいます。
最終的には作りながら、手を動かしながら必要になれば学べばOK。
全く分からないのは問題外ですが、見た目の部分はその道のプロに任せたって良いのです。

自分がどうしてプログラミングの勉強をしているのか、今一度考えて
これからの100日間を無駄のない有意義な時間にして欲しいなと思います。