ソフトウェアエンジニア的コラム×3

note はソフトウェアエンジニア的な記事を書こうと思ってたけど、結局続かずにゲームの感想書いてしまったので、ここに非公開にした記事置いときますね。

……多分イライラしてたんだと思う。まあ、イライラしてるときにだけ書ける記事があるっつうことで。

ZERO BUGS

最近「ZERO BUGS」を読んでいる。

 堅い本かと思いきや、エッセイ集みたいなアレで基本的には日本人では稀有(と僕が勝手に思っている)なプログラム大好きだが対機械だけでなく、対人間の文章も軽快で上手な人の書いた本だと感じる。僕の心の師匠、ジョエル・スポルスキ氏と似ているなと思ったら、この本の中で名前が挙がっていた。いろいろ繋がっている。

  ところで、「バグのないソフト」と偉い人が言うのを聞くと僕の頭の中のかぐや様が「おかわいいこと・・・」と呟くのだが、この本は「バグはなくセキュリティが堅牢なソフトを作ることは可能だと信じている」みたいにロマンを含んだ言い方をされていて、それが実際に素晴らしいソフトを組んだ人のソースコード付きで紹介されていたので単純に格好良かった。

 確かに、バグのないソフトが作れると信じて進む方が前向きで楽しいかもね。

 ちなみにこの本はXDDPで有名な 清水 吉男さんが激烈プッシュしていたものだ。この本の目指すところを目指さない企業は競争への参加資格すらないとまで仰っていた。いろいろ繋がっている。

 しかし現実はそうではないわけで、バグは生まれ続けているし、僕が今作っている製品もそんな感じだ。明日までにバグゼロにしろ。そんな心温まるセリフが飛び交う。

 ここで生まれるのは面白い矛盾だ。すなわち、100%確実に期限を守ってバグゼロにする方法は一つしかない。真面目にバグを修正しようと思わないことである。 

・バグを(通らないように)ちょこざいな手を加える。
・バグを(起こっていても)よく見ないと見えないようにする。
・そもそもそれはバグではなく仕様であると言い張る。 

 これなら100%約束は守れる。しかし、本当に虫を退治してスッキリしたいと思うのであれば多かれ少なかれプログラムという人の思考が作った迷宮に足を踏み入れることになるわけであり。迷宮を無事抜けられるかは五分五分と言ったところだ。みんなの大好きな「約束遵守」とかを考えると割とリスクの大きな選択である。凄腕の迷宮ダイバーを召喚することでリスクは減らせるけれども。

 しかし、バグゼロにしろと言ったお客さんは当然後者を求めているわけなので、なんだか矛盾が生じて誰も幸せにならない感じもする。強く言えば言うほど絡め手が必要になり本当にたどり着きたい場所から遠くなるのだから切ないよね。

 僕が願うのは、そういう「バグゼロ」を巡る悲劇が繰り返されないように、素晴らしいソフトウェアマネジメント技術を誰かが考案しないかなあということ。そして凄腕の迷宮ダイバープログラマには、そういう喧騒から離れて迷宮に潜る時間を与えてあげてほしいなということ。適材適所とはそう言うことだ。

 僕がこれまで一緒に仕事をしてきた人たちの99%が間違えている事実がある。人が一番生産性が上がるのは「調子がいいとき」だ。決して、一時間ごとに怖い人が怒鳴り込んでくる環境ではない。

 これも、ジョエル氏の言葉である。

 

占い師じゃないんだからソフトウェア開発をそれっぽく邪魔しないでよ

とにかくソフトウェア開発してて思うのは邪魔する人の多いこと多いこと。

「このままでは失敗するからやらなきゃいけない」
「ここは最低限のルール」
「理想と現実のギャップを検討して」
「設計書のコンテキストがルール違反」
「進捗報告の文言が前向きじゃない」

いちいち細かくあーだこーだあーだこーだ言って次に進むことを止めようとしてくる。なんですか、ライバルからの刺客ですかあなたは。

ソースコードなんだから書いてテストすればバグがあるかないかなんて分かるのであって、邪魔する人の指摘に対応して実装するまでが遅くなるのが、一番不確実なんですよねー。占い師じゃないのに未来を予言するのはやめてほしい。

三年実装から離れてたら初心者と一緒なんだからどうしても口を出したかったら「私ごとき三年実装から離れてる人間がこんな事を口出すのは申し訳なさの至りですがもし参考になれば」って必ずつけるぐらい謙虚に言っていただきたいですね。

儀式みたいな十年前に設計を引退したおじいちゃんとのレビューも、三箇所に同じこと書かなきゃいけない進捗報告も、全て滅んでしまえばいいなって、思います。結局、設計、実装する時間が一番大事なのです。

そうそう、経験を積んで自分は上流だからソースコードは読まないというルールを決めてる人とか、まあ、目隠し麻雀してるみたいでウケますね。それ誤ロンですよ。

 

進捗遅れのチームがあったら強制的に定時に帰らせよう

うまくいってないチームをうまく行かせるためにはどうするかを考えていたんだけれど、やっぱり最終的な結論として「お前ら遅れてるんだな、分かった、今後定時に必ず帰れ」といってみるのはどうかなと思ったのです。いやいや冗談抜きに。

リカバリプランを報告せよ
そんなにぽいぽい思いつかないし、そもそも、遅れてるってことはすなわち目の前に洗濯物だらけで洗うのが追いつかない状態だと思うのに「リカバリプラン報告」って洗濯物をさらに積んでどうする、って思いません?

・残業せよ、休出せよ
昭和感

ちなみに自分も同じ苦境に立った時、普通にリカバリプランを思いついたことありましたけれど、まああれは僕が天才だったからなんで普通の人には無理ですね。

もちろん冗談で、あの時はたまたま外部の研修受けてて外のアドバイスを受ける機会があったからです。運も良かった。結局、目の前に洗濯物が積まれている状況で、後ろからプレッシャー受けながらリカバリプランなんて思いつくわけないんですよ。マジで。

他にもこんなのはどうだろう。

・遅れてるんだな、分かった、スマブラしよう
・遅れてるんだな、分かった、飲みにいこう

結局、人間の器の問題でもありますね。遅れてる人をさらに責めるのは、自分も他の人に怒られるのが怖いからなんだろうと思います。ちっちゃいわね。