tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

プログラマの壁

mewの作者のかずさんが、「プログラマの壁」ということを言われています。

プログラマの壁 - あどけない話

まず、プログラマになれるかなれないかの壁があるのでしょう。なれたとしても、ある機能を理解できるかどうかの壁があります。その機能が理解できたとしても、次の機能が分るとは限りません。

ここでは、壁になりそうな機能を思いつくままに挙げてみることにします。

# 面白いエントリですので、まずは一読することをおススメします。

で、以下「壁」となる機能として、FizzBuzz, アルゴリズムとデータ構造、ポインタ、オブジェクト指向 etc. を挙げているのですが、決定的に一個足りないな、と思いました。

過去の自分も、自分が見てきた沢山の人がそうだったのですが、関数を使って、機能を分割するということ。これも大事な「壁」なのではないかな。

自分がコレを意識するようになったのは、びっくりするほど最近だし、今だってできているか自信がない。でも、そもそも「論理的に機能を分割する」ってことを意識してコーディング(つーか本当は設計だね)しているプログラマって、結構少ないのではないか、と思った。

でもコレができないと、関数ポインタもうま味が無いし、オブジェクト指向も無理だし、その他高度な機能もなかなか使いこなせないのではないかな、と思う。

で、もうちょっと考えたらひらめいたんだけど、プログラマの壁って、「プログラミング言語の機能を使いこなすか、機能に振り回されるか」の違いじゃないかな?

「○○がやりたい」と思ったとき、そもそもやり方をまったく思いつかなかったり、ぐぐったコードをコピペしたり、本を見てやり方をパクるのが、「機能に振り回される」状態。逆に、「○○がやりたい」と思ったときに、いくつかの方法が思いついて、その中で自分の思うベストを使えるのが「機能を使いこなす」ということ。もちろん、「配列は振り回してるけど、正規表現には振り回されてる」みたいな状態はありえて、多分それが普通。

少しずつ壁を乗り越えて、振り回せる機能を増やしていければいいな、と思います。自分も、周りの人たちも。