プログラミングにおける認知バイアス

Cognitive Biases in Programming

translated on

開発者として、私たちは生産性を妨げる様々な問題をよく知っています。しかし、広い視野で物事を見ることに関して見過ごしがちです。

認知バイアスにより、生産性の低下、バグ、フラストレーションを招く可能性があります。これらの影響を最小限に抑えることができれば理想的です。本記事では、プログラミングする際に知っておくべき5つの認知バイアスを示します。

Cognitive Biases in Programming

双曲割引(Hyperbolic Discounting)

後の利益よりも直近の利益を優先する

あなたはテストを書くのを遅らせたことがありますか?Vim を使う際、矢印キーを使ってカーソルを移動させたことがありますか?おめでとうございます、それが双曲割引です。HJKL による慣れない操作を覚えるよりも、矢印キーを使用するほうが楽でいいでしょう。しかし、一度 HJKL による移動方法を学ぶと、将来の利益は遥かに高くなります。結果として、あなたは多くの時間を節約することになるでしょう。

イケア効果(IKEA Effect)

あなたが導き出した問題に対する解決策を過大評価する一方で、他のソリューションを過小評価する

イケア効果は、自分で作ったものに、本来以上の価値を与えてしまう(例えば自分で組み立てた家具に愛着を持ってしまう)という認知バイアスです。私たちは、問題に対する独自の解決策を過大評価する傾向があり、一方、他の解決策を過小評価する傾向があります。もしあなたが、イケてるツールではなく、イケてない社内ツールを使用するような企業に働いたことがあれば、私が何を言いたいのかわかるでしょう。

時期尚早な最適化(Premature Optimization)

何が必要かを知る前に最適化する

説明もいりませんね。古びた車のエンジンを修理する前にスポイラーをつけたところで、速く走るようにはならないでしょう。実験的なコードなのにパフォーマンスを完璧にチューニングする、という例がもっともふさわしいでしょう。

計画の誤り(Planning Fallacy)

タスクを完了するのに必要な時間を楽観的に見積もる

計画の誤り(Planning Fallacy)は、大部分の人に関係のある話です。それが私達であれ、プロジェクトマネージャーであれ、プロダクトを使う顧客であれ、実際にいつタスクが終わるのかについて楽観的な傾向があります。これは、古い格言によってよく説明されています:

コードの最初の90%が開発時間の90%を占め、残りの10%が90%の開発時間を占める(90対90の法則

新近性バイアス(Recency Bias)

過去に起こったことよりも最近のできごとに高い価値を置く

新近性バイアス(Recency Bias)は、何か問題を解決する必要がある際によく出くわします。「最近似たような問題を解決したから同じようにやってみなよ!それでうまくいったし、今なら覚えてるからさ!」あなたは同じデザインパターンを繰り返し使っていませんか?もしそうなら、あなたは同じレンズから異なる問題を覗いているかもしれません。

私たちはバイアス(偏見)を完全に捨て去ることはできません。しかし、バイアスが我々にどのように影響を与えているかを知ることにより、それによって引き起こされる問題を緩和することができます。

これを手伝ってくれた Rob Trame に感謝します。画像提供:clipartfest.com.