発端はコチラの記事です。
残酷な真実から目を背けてはいけない・・・('o';)。
この記事と元記事(プログラミングを独習するのには10年かかる)を読んでみて、考えたことをプログラミング初心者としての立場から書いてみたいと思います。 何を学ぶべきか?とか正しい学び方とは?みたいな深い問題が横たわってはいると思いますが、とりあえずサッとまとめてみました。
一年生として想うこと
初心者とはいえ、本格的にプログラミングをやり始めて一年が経とうとしていて、月日の流れる速さを感じます。一年という月日は、長いようで短い。それなりにプログラミングを出来るようになったとはいえ、学ぶことはまだまだ途方もなくある、ということを実感しています。
だからこそ、そしてプログラマ一年生とはいえ、いい大人ではあるので、ここに書かれていることは正しいのだろう、と受け止める余裕はかろうじてあります。
どんな道にも近道はないのだ、ということです、残念ながら。
"一万時間"説
何かの専門技術を習得するためには、どんな人であっても一万時間かかり、最初は才能による差こそあれど、どれほど努力したかが大切である、という説です。元記事でも大きく取り上げている理論です。
逆に一万時間努力すれば、誰でも一人前になることができる、と言いなおすことができるのかもしれません。
個人的には正しい努力の仕方、身体的な素質、など懸念事項がいくつか思い浮かぶにせよ、この説は専門家の間で、高いコンセンサスを得ているようです。
もし一日三時間練習するとして、それを毎日十年間続けるとすると・・・
3 * 365 * 10 = 10950なので、雑すぎる概算ですが、独習するのなら十年というのは確かに納得のいく年月なのかなぁと思います。
お寿司屋さんの件
少しだけ話が逸れますが、以前に堀江貴文氏が『寿司で十年も修行するなんてバカらしい!俺の行ってるところは十年も修行してないけど旨いし』みたいな発言をして、炎上していましたね。
この件については、やや構造が複雑になるので、語る上でプログラミングよろしく問題をいくつか分割する必要がありますね。
炎上マーケティング的発言
最近の堀江氏は炎上芸人と化している部分があるので、この発言は炎上目的なのかもしれない。よって本心ではないのかもしれない。ということを頭に入れておくべきだろう、ということです。
例のお寿司屋さんは被害者
こういう取り上げ方をされた、件のお寿司さんは被害者と言うほかなく、実際美味しいに違いないのだろうけど、この件のせいで色眼鏡で見られてそうですよね、可哀想。
本項での堀江氏の発言への自分の考えは、このお寿司屋さんとは何も関係ないということだけ、ご理解ください。
まぁそもそも寿司屋を始めたのが最近であって、それまでの積み重ねがあったから、短い時間で寿司屋を成功できたのだと思うんですけども。
修行すれば旨い、とは限らない。
これはその通りでしょう。だから厳しい修行に耐えて店を構えてます!というのは一種のブランディングとも解釈でき、まぁそれも商売の仕方のひとつじゃん、とも言えるし、同時に現代のビジネスと何が違うの?ってことにもなるわけです。
現代的なやり方で、時間を圧縮できる
堀江氏の言いたいことは、おそらくこういうことだったのかなーと好意的に解釈すると、こんな風に言えると思います。
より現代的で科学的な技術、あるいは効率的な学習法、技術訓練法を使えば、所要時間を圧縮できるのだから、そういう新しいやり方を取り入れなきゃダメだ!という考え方です。これも、その通りではあると思います。
というわけで堀江氏の発言は、理の通った理屈ではありますし、江戸時代以来、素人目にはほとんど変わっていないように見える、寿司職人という技術は現代的なやり方で、効率性を改善出来る部分はあるのかもしれません。
しかし、それでも一人前の職人になるには十年に近い時間は、かかると自分は思います。単純な技術的な部分であるなら、才能あるものなら三年以内にマスターしてしまうのは、どんな分野でもあることだと思います。そして、従来の水準をひっくり返してしまうような天才が現れることもあるでしょう。しかし、それらは例外であって、やはり多くの人にとっては、そのくらいの時間がかかって当然だと思います。
プログラミングだって同じはずです。
何を持って"一人前"か?
日進月歩どころか、秒単位で進化を続けるコンピュータ分野においては、技術についていくことが大変であり、プロですら時間を見つけて勉強し続けなければ、生きていけない厳しい世界のようです。
そして現代において、一人がプログラミングをして何かを創り出す、ということは現実的ではなく、分業が前提です。だから、プログラミングにおいて、どこまでできれば"一人前"なのか?という定義が、自分は今だよくわかりません。
本ブログは、当面は趣味の範囲であるとはいえ、立派なインディゲームを作りたい!という欲望に基づき運営していますので、やはり世の中の流れに乗っていかないといけないわけです。そしてゲームは様々な技術の集合体であり、プログラムだけについても多くの技術が要請されます。もしまともなオンラインゲームを作るなら、課金システムなどリアルタイム通信も含め、データ・ベースに関する技術も必要になるだろうし、そこらへんは自分は手付かずです。
初心者には成れたな、とは思うのですが。果たして・・・!
残酷で、当たり前な真実
というわけで少しずつ簡単なこと、自分ができそうなことからやっていくしかない、と再確認することができました。元記事でもあるように、本屋に行けば、一日でわかる~とか一週間でマスターする!~という安易なタイトルの本が世には溢れています。楽器の教則本とかでも多いですね。
しかし、そんなに甘いワケないだろー!
ということなんですが、十年でマスターするC#とか売れるわけないですもんね。ライト層に向けて、売るには嘘をつかざるを得ない、という部分も理解できます。
自分の場合は『苦しんで覚えるC言語』という本を選びました。これは大正解だった、という報告はしておきたいと思います。
天才プログラマになることは出来なくても、一万時間説が正しいなら、一人前のプログラマにはなれる筈で、あきらめずに少しずつやっていきたいですね。
※6月7日追記
本記事を読み返していたら、初心者から4週間でプログラミングマスター!という広告が表示されていて、笑ってしまいました(^_^;)