なぜテスターが必要なのか?
From The Joel on Software Translation Project
Joel Spolsky / Fujimoto訳
2010年1月26日 火曜
私の姉妹が子供のために子犬を飼うことにしたのだけど、今はその子犬のしつけをしようと頑張っているところだ。家の中で一緒に暮らすには、犬にいろいろ教え込まなくてはならないのだ。人の上を跳び越えるなとか、家の中でおしっこをしてはダメだとか、命令されたらちゃんと座りなさいとか、そして、絶対に、絶対に絶対iPodを噛むなとか。絶対に噛んだらダメだからね。よし、いい子だ。
犬をしつける一番のこつは、フィードバックをすぐに与えてやることだ。もし、あなたが家に帰ってきて、犬が数時間前にキッチンのゴミ入れをひっくり返していたことを見つけたなら、もうしつけをするには遅すぎる。犬を怒鳴りつけることはできるだろうが、犬の方はあなたが何についてガミガミ言っているのか理解しないだろう。要するに、犬はそこまで賢く無いのだ。
プログラマーについても、自分がやっていることをもっとうまくできるようにしたいなら、自分がやったことについてすぐにフィードバックをもらう必要がある。それがポジティブなものであれ、ネガティブなものであれね。フィードバックをもらうのが早ければ早いほど、すぐに学ぶことができるようになる。しかし、リリースサイクルの長いパッケージ・ソフトウェアだと、顧客からフィードバックをもらうのに一年かそれ以上の時間がかかりうる。
私たちがテスターを持つ理由の一つはここにある。すばらしいテスターがいれば、プログラマは何を正しくやり、何を間違えてやってしまったのたのかについて即座にフィードバックを得られる。信じられないかもしれないが、テスターを持つことの最も大きな効能は、プログラマの良い振る舞いに対して良い評価を与えることでそれを助長してくれることにあるのだ。プログラマのやる気や幸福感、主観的な満足度を高めるには、La MarzoccoのLineaエスプレッソマシン頻繁に開発者からリリースを受け取り、それを試し、ネガティブなフィードバックに加えてポジティブなフィードバックを与えてくれる熱心なテスターにしくものはない。そういうテスターがいなければ、プログラマになるのはひどく気が滅入ることになるだろう。ほら、僕はここでキーボードをカタカタやって、この素晴らしいコードを全部書き上げたけど、関心を持つ人は誰もいない。あーあ。
どのような人がテスターになるべきだろうか? これは少し厄介なんだ! ソフトウェアのテストというのはあまりよく知られていない職業だから、テスターの仕事にすごく向いていて、この仕事をとても楽しんでやれるだろう人たちはいるのだけれど、その多くはテスターとして仕事に応募しようとは考えもしないのだ。
優れたテスターの特徴:
- 科学的。
- 面白いパズルが好き。そのパズルが解くのに数日かかるような種類のものであっても構わない。
- 系統立てて物事を考えたがる。
- 大抵の場合、ソフトウェアやコンピューターを相手に働くのが好き。
テスターとなるのにプログラマである必要はない。多くの会社はテスターを自動テストスイートを書くプログラマにしがちだが、これはその方が効率的に見えるからだ。このことはテスターが何をするものなのかに対する誤解を表している。テスターとは新しいコードを評価し、良い部分を探し、悪い部分も探し、正/負の強化作用を開発者に与えるものだ。もちろん、自動テストスイートは便利だが、ソフトウェアのテストという仕事は単にそれだけにはとどまらない。そういうスクリプトにあまりに重きを置きすぎると、ずれたテキストや意地悪いユーザーインターフェイス、まずい色使い、一貫性の無さなどを見落としてしまうだろう。そして、さらに悪いことに、テスターが自分のコードを動くものにしようと夢中になって取り組み出すようになりかねない。そうなれば、あなたがテスターにやってほしいと考えていた仕事—つまり、他の人のコードを評価する仕事—が放り出されてしまう。
とりわけまずいのは、あなたの会社に応募してきたけれど、プログラマの仕事をさせるには力不足な人たちにテスターの仕事を申し出ることだ。確かにテスターがプログラマである必要はないのだが、テスターが単なる能力の足りないプログラマの仕事であるかのようにしていると、そのうちに有能なテスターグループの代わりに能力の足りないプログラマのチームが出来上がってしまう。テストすること自体は仕事で教えられるが、汎用な知性はそのように鍛えることができないので、その人がたとえテスター関連の仕事をやったことが無かろうが、とにかく非常に頭の切れる人をテスターにしなければならない。現に私が一緒に働いたことにある最も優れたテスターの多くは、その仕事をオファーされるまでテスターの仕事をやってみたいと思ってすらいなかったのだ。
もし、あなたが:
- ソフトウェアとコンピューターを愛していて
- ソフトウェアのチームで働きたいと思っているが
- とりたててプログラミングが好きでない
なら、テスターとなることを考えてみるべきだろう。 (ちょうどFog Creekでも募集しているよ! なんて偶然なんだ!)
(オリジナル: Why testers?)