ハニー、見てくれよ。俺はテクノロジーを使ってるんだから
謝ってる時間なんてなかったよ
THE STOOGES, SEARCH AND DESTROY
この数年というもの、私が作ったもののバグについて謝るのを意識的にやめようとしてきました。
バグについて謝ろうという誘惑は強いものがあります。昔は自分も謝っていました。私の書いたコードのせいで、同僚の1日が台無しになってしまったり、ユーザに対する影響が出てしまった時には、「おっと、ごめんよ!そんなこと考えもしなかった」と言っていたものです。
この謝罪の動機はもっともなものです。あなたはチームのためにベストなことをしたいわけです。つまり、ほんのちょっと違ったやり方をしていれば、問題は防げたはずなのです。そう考えると、バグについて謝るのは害がないように見えます。しかし、次のような文化的なアンチパターンの原因になります。
- ある人またはコードの一部を、ある障害の原因として非難してもいいという考え方を助長します。
- コードを書いた時、もっとよく書くべきだったという印象を与えてしまいます。これは、ほとんど確認しようのない非現実的なことです。
- 自分の書いたコードにバグがあることを恥ずかしいと思うのが正しい感情であると位置付けてしまいます。自分がもっといいエンジニアだったら、もっといいチームメイトなら、バグは存在しなかったのに、というように。
- あなたがチーム内では上の方の立場なら、これらのアンチパターンの影響は非常に大きくなります。あなたがバグについて謝っているのを見れば、バグのないコードを書こうと頑張らなくてはならないとチームメンバーは考えるはずです。コードにバグがあったら恥ずかしいと感じることでしょう。
あなたが頭ではこれらの間違いを信じていないとしても、バグについて謝っていてはこれらを信じていると裏付けてしまうことになります。チームメイト達はあなたが何を本当に信じているかには気づきません。あなたが何を言って何をしているかしかわからないのです。
どんなコードにもバグがあることは、みんな知っています。コードは何らかの制約の下に書かれるものです。締め切りであったり、品質よりゴールであったり、未来に関する不完全な知識であったり。エンジニアとしてのあなたのスキルも制約です。バグのない完全なコードを書こうとしても、それを成し遂げることはできません。だとすると、バグについて謝るのは理にかなっていると言えるでしょうか?
私が自分に課したこのルールは、制約が原因で発生した問題と、私自身の過ちによって発生した問題を強制的に区別させてくれます。もし、ある問題が私の不注意(あるいはアクションを起こさなかったこと)が原因で問題を起こしたと考えるなら、それは私が謝るべきことでしょう。しかし、なすべきことのためにコードを書いて、その結果、状況に合わせてそれが動かないということになったのであれば、謝るべきことは何もありません。いつも何かは起きる運命だったのです。
バグについて謝るのをやめるという誓いを立てましょう。リーダーシップをとる立場ならなおさらです。それが、間違いや失敗を前向きに捉えるよう態度を変えるための、シンプルな方法です。