いつか作ります RSSフィード

2008-12-03

プログラミングができる人とできない人 03:43 プログラミングができる人とできない人 - いつか作ります を含むブックマーク はてなブックマーク - プログラミングができる人とできない人 - いつか作ります プログラミングができる人とできない人 - いつか作ります のブックマークコメント

IT業界への就職が近い人とかが色々考えているのか、最近プログラム入門っぽい記事が多い感じ。

というわけで、自分なりに「プログラムができるための条件」を考えてみた。たまにはニコニコ以外の事も考察しないと脳が腐る。

プログラムができる人、って考えるとピンと来ないので、「プログラムが出来ない人」にどんな特徴があるかを考えてみる。よく思うのが、プログラムがダメな人には「要素技術を全部知っているのに、それを統合してプログラムを作れない人」が多いな、という事。

例えば、掲示板を作るのに必要なのは、究極的には

  • 変数と関数の概念
  • ファイルを読み書きする機能
  • 文字を出力する機能
  • ループ制御(これを10回繰り返す、とか)

ぐらいのものだったりする。この位の事は数日で覚えられるので、プログラム勉強開始一週間もすれば、(機能は貧弱だったりするかもしれないけど)掲示板らしきものを作ろうとすれば作れる。

でも、「プログラムができない人」は、一月教えても掲示板を作れない。「こういう形式でファイルに書き出して、それを読み込んで、こう表示して」と説明すれば、もちろん作れるのだけれど、自分ひとりで何かを作ろう、となるとそこで止まってしまう。

タイプ別

で、経験上、こういうパターンの人には複数のタイプが存在する。

  • やりたい事、作りたいもののイメージがいつまでも漠然としていて、モノの形にならない
    • 「2ch型掲示板作りたいんです!」とかで止まってしまう。何をどう保存して、どこをどうクリックすると何が表示されて、という詳細を詰められない、あるいは詰めようとしない。
  • 「ここがこう動いて、こうなって…」というレベルの設計はできるのだが、それをいま自分の知っている機能で実現するにはどうすればいいか?を考えない
    • プログラマは魔法使いだと信じているタイプ。方向キーを押したら左に動くようにするには、「方向キーが押されたら左に動かす処理」を自分でガシガシ書かないといけないのに、「方向キーでキャラを動かすための魔法」がどこかにあり、プログラマはその魔法を操っているのだと信じている。
    • 掲示板の例を継続するなら、「ログを記録する魔法」があると信じていて、何をどう保存すればそれが実現できるかに思いが及ばない。
    • 1から10まで全部書けばいい(というか書くしかない)事に気づかないタイプと、自分の知識が信じられず「こんな初心者っぽい方法じゃなくて、何かもっといい方法があるはずだ」と足を止めてしまうタイプに分かれる。
  • ファイルに書き込んで表示すれば…とか、割と細かい所まで詰められるのだが、因果関係の詰めが甘い
    • いわゆる「論理的でない」タイプは、前2項をクリアしてもここで引っかかる。たとえば、「掲示板の記事に投稿日時を載せるには、記事と一緒に日付も保存しておかないといけない」「でもそれは書き込み時にプログラム側で取得できるので、打ち込ませる必要は無い」とか、細部が全然詰められない。掲示板を作らせると、書き込みのたびに全記事ごっそり上下が逆転したりする。

総論

はてなおやさんは「実現したいことを計算機の問題に置き換えることが『技術力』」と言っていた。

かなりレベルは落ちるのだけれども、プログラマの入り口に立つのもきっと同じ事。

つまり、自分のやりたい事(ブログ作りたい!)を、機能レベルに分解(記事を保存できて、月別に一覧が表示できて、記事単体を指定表示できて…)し、それを自分の知っている材料で組み立てられるレベルまでさらに細分化する(本文はテキストファイルで保存して、そのリストの載ったファイルがここにあって…)事、それと「ここまで分割できたから、後は頑張れば作れる」という見切り判断ができる事が、プログラムを書くのに必要な最大の資質だと思う。


参考

新着エントリは上に追加。コメントは「はてなユーザのみ」、公開設定はパブリック (だれでも閲覧ができます)。