Coda

論文メモ A Tale from the Trenches: Cognitive Biases and Software Development

July 31, 2020

エンジニア10人の普段の開発状況から、認知バイアスが開発者にあたえる影響やバイアスの頻度、対策方法について調査した。

最大で1時間の間、考えていることを口に出して日常業務の開発をしてもらい、音声、スクリーン、作業環境を記録した。 被検者は、全員同じ米国のスタートアップに所属している。 新規性は、日常の開発における認知バイアスを調査した点にある。 従来のソフトウェア開発における認知バイアスの先行研究は、馴染みのない作業や学生の被検者実験を採用しており、現実の開発と実験の設定に乖離があった。

認知バイアスによる影響の善し悪しを区別するために、無駄になった作業をReversal Actionと呼び、意味のあった作業(Action)と区別し、それぞれの作業時間を計測した。 被検者全員の作業時間を合計した結果は、以下の四象限の図の通りになった。 全体の作業時間の34.51%(783921407)をReversal Actionが占めていた。 Reversal Actionのうち70%(783911187)は、認知バイアスによるものだった。 dist

認知バイアスは、先行研究にしたがって10のカテゴリ(CB1-10)に分類される。 次のツリーマップは、カテゴリごとの影響の大きさを示す。 各カテゴリの影響度は、カテゴリに属する作業の回数で測定はされ、図中の数字はその回数を示す。 dist CB3(Fixation), CB6(Convenience)が特に顕著にみられ、この2つで全体の半分以上を占める。 Fixationは、エラーや警告など、試している解決策と矛盾することが起きていても、その解決策を試しつづけることを示す。 リロードすればよいだけなのに、関数の定義を修正しつづけるような行為が該当する。 Convenienceは、最適でないと分かっていながら簡単なやり方で進め、後で立ちいかなくなることを意味する。 単純で冗長な実装によってコードがスパゲッティコード化することは、これに該当する。

実験の後に、被検者を含めた16人に、カテゴリーに分類された認知バイアスに対してどれだけ自覚的かアンケートをとると、次の結果になった。 実験ではほとんど観測されなかったCB10が上位にきていた。 ツリーマップと順位が異なるところに、認知バイアスへの自覚の難しさがあらわれている。

dist