プロジェクトAに配属されたプログラマのB君はプロジェクトオーナーのCさんとプロダクトを育てることになりました。
B君はちょっとおっちょこちょいだけどやる気に溢れる若者でCさんの望みを叶えるために毎日頑張っていました。
プロジェクトAは開発からN年の月日が経っておりコードは悲惨な状況でした。
開発当初のエンジニアはおらず、B君は仕様も不明なコードに対し苦しい思いをしながらも日々カイゼンを続けていました。
テストもないこのプロジェクト、今何とかしないともう先がない。テストをかけるように改善しなくては!
しかし、B君の思いとは裏腹に数多くのバグが生まれます。思いもよらぬバグが。
CさんはB君のことを「バグばかり出す糞プログラマだな」と思いました。
Dさんは別のプロジェクトにアサインされてから全然バグを出しません! すごい!
CさんはB君の代わりにDさんをほしいと思うようになり、そして異動させました。これで我がプロジェクトもバグもなく推進されるであろう!
もうB君はいらないな。どこかに放出してしまおう! B君はプロジェクトEに放出されました。
それからしばらく月日が経ちました。
なぜかプロジェクトAは進みが遅くなりました。
Dさんは慎重派です。
B君の3倍くらい工数を要求してきます。 何もかも既存コードが糞だから安全のために仕方ないと言います。
バグは全然出ませんが、Cさんはプロダクトとしてこれが良かったのか不安になります。
一方B君はというと
テストやレビューの整備されたプロジェクトFに配属されていました。
プロジェクトFのオーナーGさんとCさんがランチに行った時のことです。
C「B君の働きはどうですか?」
G「B君は素晴らしい働きですよ。譲っていただけて感謝しています」
G「確かに。 彼はバグが少々多いところはありますが、それを補って余りある勇気とパワーが有ります。
バグはレビューとテストでどうにかなるのですが、やる気は人それぞれです。彼の勢いはチームにとって有益です。
バグはチームの責任ですから、彼一人がどうという話ではないでしょう」
バグ出すか出さないか、ってのはそんなに重要じゃない。 つか、誰でもバグは出すだろ。バグ出さないプログラマなんて見たことねー。 糞プログラマってのは読めないプログラムを書く...