品質について思うところ

  • 品質は、仕様ではなく、要求で決まる。
  • 要求は、人によって違う。
  • 仕様は、人のパワーバランスで決まる。

プログラマは、仕様を100%満たせばそれでいいと考える。建前上はそれは正しいのだが、実際のところそれじゃまずいことが多いと思う。何故なら、仕様とは流動的なものであることが多いから。建前では、仕様はソフトウェアのゴールということになっているけど、本当のゴールはユーザの満足。ただ、ユーザの満足は、ユーザごとに異なるので、じゃあ、こういうものを作りましょう、とまとめたのが仕様。
まとまっているんだから、それを満たせばいいんじゃないかという話なんだけど、そもそも仕様というのはきちっと形式化されていないことがほとんどだし、抜け漏れもあるから、ある時点で凍結して、それでソフトウェアが完成する、というものでもない。そして、仕様というのがそういうものだから、ユーザ側の政治の上手な人はそこに付け込んで、あれもこれもと仕様を増やそうとする。開発側の政治が上手な人は、それは違う、これは違う、といって仕様の膨らむのを防がなければならない。
プログラマは、その結果仕様がどうなり得るかということまで予想しながら設計及び開発を行わなければならない。そこの読みを外すと、無茶な改修を迫られ、遅延し、デスマーチ化する。品質を満たしているつもりなのに品質が上がらないと言われて、モチベーションも低下する。プログラマからは、仕様をころころ変えるのが悪い、としか思えない。客観的に見ると、プログラマの方が難易度の高いことをしている、という風にも思えるが・・・。実際はどうなんだろう。