自分はこんなに努力している。頑張って勉強している。なのにいつまでたってもプログラムが書けるようにならない。
こんな悩みを持っている人はいないでしょうか。
プログラムを独学で勉強しようとする人は結構多くいるようです。そのような人達の大半はまずは「入門○○言語」のようなタイトルの本を探したりするところから始めるのが普通だろうと思います。

私がプログラミングを覚えた頃はコンピュータ関連の本などほとんどありませんでした。今ではどこの本屋にもプログラム言語の入門書などが並んでいるし、インターネットにもいくらでもプログラミング関連の情報が転がっています。今はいい時代だなあと感じると同時に、そのように情報が簡単に手に入ってしまう為にかえって間違った勉強の仕方をしてしまう人も多いのではないかと思います。

買ってきた入門書に載っているサンプルコードをその通りに打ち込んでみて、コンパイルして実行したら動いた!といって喜んでいる人を見かける事があります。本人は真剣に、これでプログラミングを勉強しているつもりになっています。信じられない事なのですが、こういう人が結構な割合で本当にいるんですよ。

またクラスライブラリに含まれるクラスの使い方をとにかく覚えようとする人もいます。特にListBoxとかDataGridとかのGUI部品の使い方をネットで検索して、コードをコピペして見様見真似で動かしてみるとか。ライブラリに含まれるクラスの使い方を覚える事がプログラムを覚える事だと信じているのですが、これもまた驚きです。
もっとひどいのになると、VisualStudioなどの開発ツールの使い方を一生懸命覚えようとしたりします。

あなたはこのような勉強法で『無駄に』頑張ってはいませんか?
このような勉強法では一生プログラムは書けるようにはなりません

私の頃はそもそも個人がコンピュータを所有してプログラムを書くなど考えられない時代で、プログラミングなんて本当に一部のマニアックなオタクだけの趣味でしかありませんでした。だから、とりあえず手っ取り早く動かしてみる、という事ができません。本に載っているコードをどうするかというと、とにかく読むのです。「読む」というのは、文章を読むようにサラサラっと流すのではなく、ここで何故これをやってるのか、この時どの変数がどんな値になってるのか、という事を1行1行考えながら見ていくのです。実際に動かしてみたらこう動くはずだよね、という事を自分の頭の中で確認する、つまり自分がコンピュータになってコードを擬似実行してみるという作業です。

そう!要するに我々が普段やっている机上デバッグというやつですね。
最近の若いプログラマは机上デバッグが出来ないのが多いなと感じます。実機でしかデバッグ出来ない人ですごいスキルのプログラマなんて見た事がありません。自分一人で自由に使えるマシンが目の前にあるのが当たり前の環境で育ったプログラマには仕方のない事かもしれませんが、だからこそ、誰かが勉強の仕方を教えてあげるのが非常に重要なのだと思います。

以前にも書きましたが、プログラムの勉強はそれを始める最初の1年が一番大事だと思っています。ここで方向性を間違うと後から修正が効かなくなるのは経験上はっきり言えます。
独学で勉強を始めようと思っている人は、安易に間違った勉強の仕方をしてしまう危険を知り、頑張りを正しい方向に向けるようにしてください。