家だったら数億円も出せば豪邸が建つのに何故ソフトウェアは何十億も掛けてゴミしかできないのか?
「ソフトウェア工学的に正しいゴミ」
…というものを、ソフトウェア・エンジニア人生で何度も見てきた。ここまで読んだ皆さん、「お前の書いたコードだってゴミだろ」というのはそのとおりですが、今回はそのことではありません。
その1・大メーカーの頭の良いプロパー社員がお書きになった超絶フレームワークを採用することを強制された案件
私が書かされたのは、その大メーカーの、とある地方にあるグループ企業の社員様がお書きになった独自フレームワークだった。当然マニュアルなどない。分からないことがあれば、その度に電話会議を開いて作者に聞くしか無い。その社員様は、自作の独自フレームワークを作って入るが、それを利用したことはなかったそうで、最初の二週間くらいはまともに動きもしなかった。それが数え切れないほどの電話会議を経て、なんとか動くようになったのだが「結局フレームワークなんて使わないほうが効率が良かったかも」と思った。
アーロン・ヒレガスが「Mac OS X Cocoaプログラミング」で語っていたのだけど、昔、IBMとAppleの合弁会社でTaligentという会社があり、そこが開発したプログラミング言語のPinkを見本市で見かけた時、彼はそこの社員にHello, Worldを書いてくれと頼んだ。Taligent社員はそこからクラスを作り、継承し…と、30分くらいかけて作ったのを見てヒレガスはこの会社の先行きについてある確信があったという。
端的に言うと私はそれに近い体験をした。Taligent社員も、IBMだかAppleだかから出向した、頭の良い人ではあろうけど、やはりこういう間違いを犯すものだ。
その2・元大メーカーの偉いエンジニア様が考案された超絶ナウい設計のマイクロサービスシステムは画面遷移に10秒掛かる
タイトルのみ。一枚岩の方がマシなんじゃないですかね?ユーザーにしたら、バックエンドがどう動いているか、なんてものに興味はなく、ただ動作が遅ければ使いませんよ。
そこでタイトルに戻る。
“家だったら数億円も出せば豪邸が建つのにソフトウェアは何十億も掛けて何故ゴミしかできないのか?”
そう思いますよね?少なくとも私はそう思います。建設作業だってプロジェクトです。失敗することもあるでしょう(この間の、アメリカ・フロリダ州の崩落したアパートのように)。しかしほとんどの建物は一見、失敗していないように見えます。
予算を承認する会社のお偉いさんだって、「自宅の数億円の邸宅は何の問題もなく建立できたぞ!それなのになぜソフトウェアはそれ以上の予算をかけて失敗するんだ!」と思われるでしょう。
ここで私の信仰を告白します。エッセイ「ハッカーと画家」で有名なポール・グレアムは、「コーディングは建設作業と本質的に違い、どちらかというとデッサンに近い」というような意味のことを言っており、全くその通りであると思います。つまりキャンバスに向かって、描いてはパンくずで消し…と繰り返していると、おぼろげだった姿が徐々に見えてくる、といった具合に。ダムの建設のような「計画→実行」でソフトウェアは作れないのだと。そこにとらわれる、いわゆる「ソフトウェア工学」というものに価値はありません。
しかし、まあ、会社の決まりで「計画→実行」で勧めないと予算が下りない、という場合もあるでしょう。金にあかせて「有名大学でCS系の学位を取得して大メーカーでキャリアを積んだ」人を引っ張ってくることもできるでしょう。
頭の良い彼らの設計するインフラも、フレームワークも、いわゆる「ソフトウェア工学」から見れば正しい。しかしゴミなんですよ。だとしたら間違っているのはソフトウェア工学の方なのでは?
しょうがないんじゃないですか?ソフトウェアはダム建設とは違うんですよ。
あ、請求書はここに置いておきますので、期限までに振り込みをお願いします。それじゃ、後は大メーカー出身の優秀エンジニア様にお任せします。設計も彼によるものですから。