ZAPAnet総合情報局 > ZAPAブログ2.0 > 頭脳戦であるプログラミングは「麻雀」と同じである

頭脳戦であるプログラミングは「麻雀」と同じである

2008年01月21日 プログラミングTIPS
プログラミングは「麻雀」ではないという。
プログラミングにはランダムな要素などなく、自分の書いたコードによって全てが決まるという。
プログラミング能力は個人差が激しく、「純粋な頭脳労働」だから「時間と頭脳があれば原理的に何でもできる」のだという。
情報を集めて勉強して、ひたすらコードを書いて、どんどん「強く」なっていくのだという。


本当に?


いや、違う。
プログラミングは頭脳戦であるがゆえに、「麻雀」と同じである。
麻雀と同じように、「流れ」がある。「ツキ」がある。「勢い」がある。
どこで何を切るか、一瞬の「ヒラメキ」も大事である。

それらは経験や勘によって培われる場合もあるし、その人特有の「センス」である場合もある。
いくら情報を集めて、頭でっかちに「強く」なったとしても、「センス」のある人間には勝てない。「勢い」に勝てない。「流れ」に勝てない。「天才」に勝てない。

調子の良い日は1000行書けることがあっても、次の日調子が悪くなって10行しか書けないこともある。場合によっては、ミスに気づいて-100行のこともある。

誰かが頑張って3000行のソースコードを書いたのに、センスのある人が100行に縮めてしまうこともある。
3000行のソースコードを書いた人は勉強不足だったのか?
いや、違う。センスの差で負けただけ。
「時間と頭脳があれば原理的に何でもできる」かもしれないが、かかる時間も、できあがったプログラムの質も全然違う。

プログラミングは、理詰めで完璧にこなせるほどの、言わば定石のような、囲碁みたいな究極の一手は研究され尽くしていない。
その場その場で流れが変わる「麻雀」に近い。
もちろん定石が生まれているパターンもあるし、誰もが定石に頼りたいと思っている。
でも実際はそんな簡単な局面ばかりではない。常に流れている。
仕様変更の流れも日常茶飯事なら、その日の調子も大きくプログラミングに影響する。

少しでも被害を食い止めるため、コーディング規約に則ったり、開発手法を限定したりする。
複数で開発するには、個人の最適な生産性は無視される。
手戻りが発生しないように、理論上のドキュメントを増産する。
だがそれは、プログラマ本来が持っている、最速のプログラミングスピードとはほど遠いものになってしまっている。
運に左右される「麻雀」のようにしたくない人間の、一種の逃げだ。
運で負けてしまったらどうしようもないから、少しでもリスクを減らすために、最速の開発スピードは犠牲にする。

だからプログラミングは「麻雀」ではないという。
自分の書いたコードによって全てが決まる「囲碁」と同じなのだ、と。


でも、それは違う。

本来、プログラミングは「麻雀」と同じなのだ。
麻雀と同じように、流れやツキや勢いや調子やセンスやヒラメキで、大きく生産性の変わる頭脳戦なのだ。