一人でプログラミングを勉強していて辛いのは、ハマった時に自分一人で解決しないといけないことです。
私も何週間もハマったことがありますし、こうしてエラーが解決できなくなったときに挫折してしまう学習者も多いのではと感じます。
そして気がついたのは「何度もハマるということは勉強方法に問題があるのでは?」「ハマらないための工夫が必要なのでは?」ということです。
そもそも独学だとハマりやすい?
独学でハマると辛いとはよく聞くけど、独学だと
・作りたい物がどれほど難しいか、どんな技術が必要か曖昧なまま始めてしまう
・明らかに間のステップを飛ばしている(力不足)でも止めてくれる人がいないので、そもそもハマりやすい環境にいるのでは…とここ数ヶ月思う。
うーん。— Yuki.A 元事務職エンジニア (@YuKi313230323) June 12, 2018
以前こんなツイートをしましたが、独学だとそもそもハマりやすいのでは?と感じます。
初心者が単純に「作りたい!」と思ったものに取りかかると、想像以上に難しいことに挑戦していると気づけないまま挫折する可能性があります。
そして質問サイト(Stack Overflowなど)の人もプログラミングに関する疑問に答えてはくれますが、そもそもその課題(疑問)は今取り組むべきなのか?と聞いてはくれません。つまり、止める人がいないのです。
4つの自分ルールを作ったらハマりにくくなった
そこで私が気をつけたのは
・チュートリアル+1機能から始める
・以前作ったものをベースにする
・新しく挑戦するライブラリ(フレームワーク)は一つにする
・「○日ハマったらやめる」と期限を設定する
の4つでした。
チュートリアル+1機能から始める
どの言語やフレームワークでも大抵チュートリアルがあります。まずはそこから始め、完成したらそのチュートリアルを更に便利にするために何が必要か?を考えてみましょう。
Todoアプリなら
・Todoを並び替えられるようにする
・色分けができるようにする
・Todoに期限も設定できるようにする
・Todoの編集機能をつける
などが考えられます。
まずは複数リストアップして、難しかったら別の機能…くらいの気持ちでひとつずつ付け足すと良いと思います。
初心者にとって辛いことの一つは「どう調べたら良いか分からない」ですが、この辺りの機能なら答えを見つけやすくハマりにくいです。
以前作ったものをベースにする
チュートリアルを完成させ、2つ目のwebアプリ作ろう!と思っても、初心者にはフォルダの構成などを0から考えるのが難しい場合もあります。
そんな時は、チュートリアルで作ったwebアプリを書き換えるところから始めるのも方法の一つです。
私はチュートリアルで作ったこのTodoアプリをベースにして↓

このレシピサイト(っぽいもの)を作りました↓
見た目も全く違いますがベースは上のTodoアプリです。
ここでは機能を付け足すというよりも、ベースのwebアプリのコードを書き換えたり、不要なコードを消すことで自分が作りたいものに近づけていきました。
例えば、下のレシピサイト(っぽいもの)にある「料理名や材料を記入して送信ボタンを押すとレシピ一覧に追加される」という機能は、チュートリアルのTodo投稿機能を書き換えたものです。入力欄を追加したり、投稿後のデータの見せ方を変えることでまったく別のアプリになりました。
既に存在する機能を使って何ができるだろう?という事を意識しつつ自分が作りたいものを考えると、オリジナルのものが作りやすいと想います。
新しく挑戦するライブラリ(フレームワーク)は一つにする
本やオンライン教材を見ながら様々なライブラリを試すと、すべてを盛り込みたくなるんですよね。しかしそれを0から作るのは初心者にはめちゃめちゃ難しいです。
先程の「以前作ったものをベースにする」のステップから一つずつ試す方が良いと思います。「前回はCSSだけで書いたから、今回はBootstrapも使おう」くらいにした方が挫折する可能性は減ります。
「○日ハマったらやめる」と期限を設定する
最近は
コードを書く時間(写経含む) < ググる時間が3日超えたらコードを寝かせる=いったん中止、というマイルールを作りました。その後は基礎に戻ったり、もっとシンプルな物に変更します。
永遠とググっていても進まないし、独学の人こそ自分の中で期限を決めるのは重要かと思います。
— Yuki.A 元事務職エンジニア (@YuKi313230323) June 12, 2018
これは2週間どハマリして自分の中で決めたルールです。
3日間という期間に具体的な理由はありませんが、ここまで調べて解決できないならば自分がやりたい事は(今は)難しすぎるのだろう、と納得できるのが3日間でした。もちろん調べ方が悪いなどの理由もあるでしょうが、適切な情報を見つけられないことも含めて力不足だとしてます。
3日間調べて進まなかったら、ライブラリを変えたり、他の方法で目的の機能が実現できないか考えたり、あるいは別のものを作ったり…。そのエラーにこれ以上の時間を使わないようにしていました。
ちなみに数ヶ月後に再チャレンジしたら出来る可能性もあるので、決してコードは消さないでおきましょう。
まとめ
4つの自分ルールに共通するのは「イメージの60%くらいのものが作れたらOK」という考えです。
何かを作ろうと思うとどうしても夢が膨らみますが、初心者が一人で勉強する間は完成させることが第一目標です。小さなものを作りながら少しずつ出来ることを増やそう、という気持ちで長く続けることが大切だと感じます。
何度もハマって進めない、いろいろ作りはじめても最後まで完成させられない、という時はこの4つについて考えてみてください。