人 vs プロセス

富士通系列のシステム開発会社(ABC,東証コンピュータシステム)は、非常に開発プロセスを重視している。ISO9001も同業他に先駆けて取得している。
しかしその会社は、プログラマの間では開発者の技術レベルが低いことで有名だ。某巨大掲示板には、名指しで批判するスレッドも在るくらいだ。

最近の、証券取引所の相次ぐシステムトラブルは、「個人の能力に頼らずに開発できる体制を作ろう」としている会社と、「どんなプロセスがあってもヘボプログラマはヘボプログラムしか書けないし、汚いプログラムを幾らテストしても綺麗なプログラムよりバグを減らすことができない」と考えているプログラマの対立において、後者の意見を後押しする強力な事例となっている。

品質を作り込むことは人間にしかできず、高品質なプログラムを短い期間で開発することは能力の高いプログラマにしか不可能である。品質のためにプロセスに出来ることは、余分な作業を減らしてプログラマの負担を減らし、より品質を作り込むのに時間を使えるようにする程度だ。

一般的に言われるプロセス改善は、プロジェクトの計測と予測の手段を提供し管理可能にする目的としたものであり、直接的に品質を上げるものではない。
むしろ、プログラマに余計な作業を強要するプロセスは、プログラマのモチベーションを低下させ、品質を作り込む時間を奪う。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。