“コーディングなんて簡単だ、だから私は営業になった”
…そんなセリフを吐いた人を私は2人知っている。個人のプライバシー尊重のため、特に名を秘す。この2人は私より年上であるので、もしかしたら一定以上の人間がよく使う常套句なのかもしれない。
“コーディングなんて簡単だ”
果たして本当にそうなのだろうか?私はいつもコーディングに四苦八苦しているのに?
彼らはまた「書いたとおりの結果が得られるのだから面白くない」とも言っていた。
このような台詞を吐く人は、次のいずれかだろう:
- 世紀の大天才
- コーディングについて何も知らない
- 私だけがバカである
3はそのとおりとしても、その2人が「1+1と打ったら2が出た。ほら、簡単だろう。つまらないな」と言っているのだとしたら「オッサンそりゃ電卓だろ」と言ってあげるが、昔のプログラミングとはそんなに簡単だったのだろうか?どうもそうではない気がして。
私は「プログラミングとかコーディングとか呼んでいる作業は、人類がかつて出会ったことのない複雑さを持つ」と思っている。地球温暖化問題と同じく、人類がかつて出会ったことがないから、うまく対処できないのだ。それだからウォーターフォールだの、アジャイルだの、スクラムだの、熊とダンスを踊れだの、色々やっているが決定的な方法は見つからずに苦労している。
ピラミッド建設とソフトウェア開発、どちらが難しい?
ソフトウェア開発プロジェクトを、人類が経験したプロジェクトと比較してみよう。ピラミッド建設だ。これは巨大プロジェクトでもあろうし、プロジェクトマネジメントの難しさは今も昔も変わらないだろう。しかし作るものの最終的な完成図は既にあって、設計時も施工時も、宇宙の物理法則は不変であるので戦う相手は重力だけだ。途中で計画が変更になったのはスネフェル王の屈折ピラミッドくらいだろうか。それは計画が悪かったと思われる(*)。
(*)設計がまずかった事に後から気づいたのか、材料がなかったのか資金が底をつきたのかはたまたマネジメント的な問題なのかは現代では知る由もないけど
ソフトウェア開発プロジェクトの技術的困難さはどうだろうか?ピラミッドと同じ?いや違う。顧客も開発者も、完成形など想像できていないのだ。それなのに作れ、というのがまず間違っていないだろうか?完成形が見えるまで計画を放棄するか?それよりも顧客と問題を共有しながら、ぼんやりしていた完成図を作りながら詰めていくしかないだろう。「屈折ピラミッド」になりはしないかって?石を中腹まで積み上げてから計画変更せざるをえなくなったのだ。中腹まで積み上げる前までにピラミッドの小規模な模型などを作ってファラオと毎朝、スタンドアップミーティングをする必要があっただろう。
私は頭が悪いので、コーディングに四苦八苦している。これは「書いたままの結果が出るからつまらない」ものではない。「完成形が誰にも想像できていないものを皆で想像しながら作る」という、人類が初めて経験する複雑さなのだ。書いた人間の賢さも愚かさも全て出てしまう、コードという論理の塊を紡いで、しかもそれによって顧客の価値を提供するには「現実問題を数学問題に変換してやる」必要がある。それではじめてコーディングができるのだ。
これが「簡単すぎてつまらない」?大天才だな。あなたとは話が合わない。