判断時の速さと正確さのトレードオフ
この記事は UMITRON Advent Calendar 2023 18 日目の記事です。
こんにちは。 UMITRON でソフトウェアエンジニアをしている室田です。
今回は、某大流行ゲームにインスパイアされて、サカナゲームの作り方 🐡🐟🦈 ...という記事を書きたかったのですが、残念ながら時間を取れそうになかったため、やむなく今回は技術と関係のない作文でお茶を濁すことにします🍵
結構前なのですが、息子の付き添いで救急車に乗ることがありました。 (その時点では救急車を呼ぶのもやむ無しという判断でしたが、結果的には無事でありました)
救急車に息子を乗せた後、いろいろと救急隊員のリーダーの方から質問をされたのですが、そこで気づきがあったので、それが今回のテーマです。
質問の一つに、
と聞かれました。
私は、その時点で、正直その答えが分かりませんでした。それに似た疾患にかかったような覚えはあるけど、違うかもしれない、というレベルでした。
そこで自信なさげに、
と答えました。
それに対して、救急隊員が少しいらつかれたような様子で、
と聞かれました。
それで、ハッとしたんですが、これってもしかしたらソフトウェアエンジニアが陥りがちな癖なんじゃないかと。
以下は私の主観ですが・・・
ソフトウェアエンジニアは、コードを書くときにできるだけ確度の高い状態にしてから実装します。それは、曖昧な仕様を明確にすることもそうですし、技術的難度の高い箇所は下調べしてから本実装しようとします。
そして、曖昧な箇所については TODO コメントをつけるなどして、後できちんと確認する癖を付けていると思います。
それは、一重に間違ったコードは正しく動かないからです。バグを出さないようにトレーニングしていった結果、極端に言えば、そのようにコード全般に渡って、正確さを担保する形で実装を進められるように気をつける癖を付けている人は多いんじゃないかと思います。だから判断するときに記憶が曖昧な箇所は、後回しにして、後から正確な判断をしよう、ということが往々にしてあります。
そのため、コードを書くとき以外、例えば、見積もりを立てるときにでも、どうしても前提条件を付けたり、確認して後で回答しますと言ったり、少なくとも私はしがちです。大きく見積もりがブレると不味いので、ソフトウェアエンジニアとしては正しい判断の仕方だとは思っています。
それに対して、救急隊員の判断は、とにかく速さが大事。救急にしろ消防にしろ、今判断しないと、もしかしたら命が失われるかもしれない、という状況。
予め用意されたフローチャートに沿って (もしくは場合によっては柔軟に) テキパキと判断して、そこから得られた結論で、応急処置などをすることが求められるとすれば、その判断を後回しにすることはできない。たとえ、間違っている可能性はあろうとも、確率のより高いと信じる方に進むしかないのだろうなと。
以前読んだんですが、この記事の判断とか、その最たるものな気がします。
「太ももの肉ごと持っていかれそうに」「一か八か喉元にナイフを」 人食いヒグマを撃退した消防隊員の壮絶な独白(デイリー新潮)|dメニューニュース(NTTドコモ)
スポーツとかもそうでしょうし、また、業務に危険を伴う職業の方は、自然とそうする癖がついていそうです。そうした癖がついている人にとっては、何を当たり前のことを今更、という感じでしょう。
翻って、この気付きを活かすとすると、判断には、速さと正確さのトレードオフがあると。ソフトウェア開発をしていると、正確さを優先する場面が多々あり、そうする癖が付きがちだけど、ビジネス上の判断などは速さを優先すべき場面があるなど、ケースバイケースにそって切り替えることが必要なんだなと、思ったりしました。なかなか癖なので、意識しないと難しいんですけどね・・・
駄文でしたが、最後までお読みいただきありがとうございました🙇♂
ウミトロンでは一緒に働く仲間を募集しております。持続可能な水産養殖を地球に実装するというミッションの元で、私たちと一緒に水産養殖xテクノロジーに取り組みませんか?