初心者プログラマーがプログラミングを諦めてしまう瞬間
今、プログラムを学習しようとしている人は、すごく簡単に学べる時代になっています。
無料の勉強系サービスが沢山あるし、書籍やWEBサイト、色々な所から簡単に学べてしまう時代です。
こんな簡単に学べる時代なのになぜ挫折してしまうんでしょうか。
それは以下のような流れもあるんじゃないでしょうか。
- プログラミングやってみたい!(フリーソフトを作ったり、ゲームを作ったりしたい!)
- プログラミングって何をやればいいんだろう、調べてみよう。
- とりあえずネットでは言語はCをやれと言われた(見た)から、Cをやってみよう!
- 入門書を買ってみよう!これで分かるはず!
- 統合開発環境という環境が必要なのか・・・。
- まずはHello Worldを表示しろとの事なので表示してみた!できた!!
- 関数・・・?ポインタ・・・?戻り値・・?オブジェクト、クラス、メソッド・・・よくわからないワードが増えてきた。
- ◯◯を作ってみましょう!と本には書いてあるけど、よくわからない。でもとりあえず作ってみた、うまく動かない、とりあえず先に進めてみよう。
- さっき作ったものに◯◯をしてみましょう!と書いてある、けどやってみてもできない、どこか間違えたのかな。
- 本はどんどん先に進んでいくし、戻ってやり直してもやっぱりできない、どうしたらいいのか分からない。
- 諦めよう・・。
この流れにキッチリ当てはまる人もいると思いますが、大体「手順どおりに進めていたはずなのに、とある所で進めなくなった」「意味の分からないワードだらけになった」「本をひと通り読んだけど全くわからないから無理だと思った」という理由が多いと思います。
書籍などは、学んだ後に読むと理解ができるとよく聞きます。
実際、今私が書籍を読むと、役に立つことが沢山ありますし、その書籍がいいものかどうかもある程度理解ができるようになりました。
しかし初心者プログラマーの人には、学ぶために購入したはずの書籍が、学んだ後に読んで理解ができて、何の意味を成すのでしょう。
入門書として素晴らしい書籍は沢山ありますが、この情報過多な時代、入門書としてはやはりあまり良くない書籍も沢山あります。
初心者の人がその素晴らしい書籍に出会うことはまず無理だと思います。
5000円もする高い書籍を買って、頑張って進めてみても完成せず、挫折、これでプログラムを諦めず、嫌いにならず、と言っても無理な話です。
私なら辞めます。
初心者プログラマーの人にとって必要なことは、とりあえずやってみることではありますが、それを継続することはとても困難なことです。
インターネットが普及して、学習サービスが増えたと言ってもやはり、ほんとの初心者向け!というのはあまり見かけた事がありません。
しかし挫折の原因がわかっているのであれば、少し前に進めやすくなると思います。
・とりあえず何かを作る!という気持ちは少し置いて置く。
この場合の何かは、大体ゲームだったりちょっと私から見てもうーん?と思うほどすごいものだったりします。
しかし、いつかは作れるようになるわけですから、とりあえずその気持ちは端っこの方へ置いておきましょう。
この気持ちが挫折への道です。
今、◯◯を作る!という気持ちは目標としてあまりにも高すぎて、それが作れない、と理解してしまった時、おそらく挫折します。
◯◯をいつか作りたいから、今は簡単なものから頑張る!という気持ちのほうが、◯◯をいつか作る事が目標になるので、それを作るいつかが来た時は達成感も大きいと思います。
・分からないキーワードはとりあえず無視!
分からないキーワードが出た時は、気持ちが悪いものです。
人は理解ができない言葉に対し、かなり消極的な気持ち(恐怖)を持ちます。そしてそれを自分なりに理解しようとして頑張ります。
自分なりに理解しようとしても、書籍などの説明する物が、その説明をそもそもしていないケースが多いです。(というか全部してたら本もとんでもない厚さになることでしょう)
そのキーワードには本質がありますが、その理解はいずれで大丈夫です。
分からないキーワードに振り回される必要はありません。
私も昔、戻り値という言葉がわからず、当時の先輩に聞きました。
先輩曰く、「関数で処理するじゃん、その結果が値として戻ってくるんだよ」ということを5分ぐらいかけて説明してもらった記憶があります。
当時は本に書いてあった戻り値という言葉の意味を質問しただけですので、そもそも関数を知りませんでした。
当然、理解できず、しかし教えてもらっている手前、全くわかりませんともいえず、お礼を述べましたが、「自分に理解することは無理なんじゃないか」と諦めの気持ちが生まれていたと思います。
しかし戻り値というキーワードは理解できずとも、プログラムは進んでいきました。
とりあえず戻り値という言葉があるという事だけ理解し、先へ進めました。
その後、結構すぐですが、戻り値の意味が理解できました。
こんな感じでいつか理解できる時が来ますので、分からないキーワードは一旦置いておいて大丈夫です。
ヘッダーファイルやオブジェクト志向やポインタ等についても同様に、最初はそれがルールなんだ程度で大丈夫です。理解して使いこなす必要は最初はありません。
まぁでもちょっとオブジェクト志向は理解が難しいと思うので、いつか説明がかけるといいですね。
・実現可能な目標がない!
◯◯を作りたい!というすごい目標を掲げたとして、本一冊終わった頃にもその目標には到底到達ができない事を理解できることでしょう。
この◯◯については、一旦置いておいたとしても、そこへ向かって学習していくためには、小さな目標が常に必要だと思います。
すべてがその◯◯についてのプロセスになってしまうと、苦痛でしかなくなってしまうからです。
小さな目標は、「Hello Worldを出す!」でも、「今やってるゲームを少し自動化!」でも、「お気に入りのWEBサイトを一括で開くマクロ作成!」でもいいと思います。
でもゲーム自動化はオンラインの場合は利用規約に反しない程度にしましょうね。
小さな目標(お題)を常に見つけつつ、それを達成することに喜びを感じていけば、いずれ、最初に思った目標に到達できると思います。
こんな感じで挫折のポイントがあるのだとしたら、それはただ最初に理解が出来ない(現状の実力に即していない、言葉の意味がわからない)ことだけですので、それは特に気にせず先に進めてみてください。
そして理解ができなかった事で、「自分には無理だ」と諦めてしまわないでください。
今教育をさせてもらっている人たちも含めて、ほとんどの人は最初はそうだったと思いますよ。
しかし自分達で当時始めた時の気持ちを振り返ってみると、その思いは必要なかった、という結論に至る人ばかりです。
それは今では当たり前のようにできてしまっているからです
プログラムをかけるようになりたい!という気持ちを大事に、前に進めていくために頑張りましょう!