プログラムの効率良い学習法

高専・大学とプログラムを学んで来たわけだが、正直カリキュラムが良いと思えたことがあまりない*1 *2。この事は、結構多くの人が考えているようで、色々な人から聞くことができた。
5年間情報系(ほとんどC言語)の学習をやってきて、C言語でintのスワップ関数が作れないってどうよ……


色々見てて思うことは、まず第一に意欲が少ないことが原因な気がする。こればかりは本人達次第だから、どうにかするのはかなり難しい領域な気がするけれども。
自分はある程度は進んで学習はしている方だと思う。ネット上には、自然と「できる人」の数が多く見えるので、余計に自分ができないと感じるところもあるが、それに追いつきたいと思って努力はしている。


自分が効率良いと思うのは、「理由を知る」ことだと思っている。例えばデザインパターンは、先人のノウハウをカタログ化したものであるが、失敗を知っていると「なぜ」これが有効であるのかを、経験から理解できる。この「なぜ」は、説明されても分かりづらいものがあると思う。聞いて素直に理解できる人は良いが、そうでない人も多いと思う。
では、理由を知るためにはどうすれば良いのか。自分は経験を積むことだと思う。ただし、この経験は失敗の経験でも構わない。「悪いこと」を知るからこそ、「良いこと」が判断できる場合があるためである。
自分には失敗の経験が多い。ただし、自分で「何が悪かったのか」を整理して、理解している。今現在でも大量の失敗を繰り返すだろう。それでも、その失敗を反省することで、自分(と、生み出す作品)をより良い物にしていくことができる。


それを考えると、常に「考えること」が何事においても重要なことなのかも知れない。

*1:全くないわけではない

*2:追記:ここでの良いというのは、多くの人がきちんとしたスキルを適当に身につけられるかという意味で言っている。