品質は作業品質で作り込まないとどうしようもないっていう話


大分前のプロジェクトでそのプロジェクトを担当するプロジェクトマネージャとプロジェクト当初くらいにこのプロジェクトの全体の日程に占める各工程のスケジュール感について会話していたときのこと。

「このプロジェクトの各工程のそれぞれの余裕度ってどのくらい取っているの?」
「要件が複雑だから、そこが疎かになると取り戻しがきかないから設計工程厚めにした。」
「そうすると試験工程でトラブルとしんどいってことだね。」
「そう。」
「じゃあ、試験工程でトラブルが発生したときの対策考えている?」
「いや、特に。」
「えっとさ、バグ出たらそれ直すじゃん?」
「当たり前。」
「でもさ、回帰テストもするものじゃん?」
「?」
「バグ修正して、影響範囲は直すじゃん?」
「そうだね。」
「それ以外のコードがデグレッてないの、どうやって保証するつもりなの?」
「やり方はあるだろうけれど、正常に動くことを確認しないと拙い?」
「試験工程は品質保証の工程でしょ?何で『問題ない』と保証するの?」
「ううん……。」
「だから試験をする他ないでしょ?やり方は選ばないといけないけど。」
「まぁ、そうですねぇ。」
「でさ、バグって1回だけ?」
「いや、そんなことないと思うけど……。」
「試験工程はどうやるの?」
「?」
自働化するとかあるじゃん?」
「このパッケージ無理。フレームワークとかちょっと変態だから。」
「何変態って?ホントに一切どこも自働化できないの?」
「無理。」
「じゃあ、もう一度聞くけどバグが出たら回帰試験はやってくれるんだよね?」
「やる。」
「何度でも?」
「出た分は。」
「で、自動化は?」
「……。」


試験工程が始まって暫し経ってから……

「あのさ。」
「はい。どうしたの?」
「Aさんいるでしょ。」
「インフラ周りお願いしたんだっけ。今は試験リーダだっけ?」
「そうそう。」
「それで?」
「大分前に試験の自働化の話をしたじゃないですか。」
「あーしたかも。でも諦めてたよね。たしか。」
「Aさんがね、やってくれたんですよ。自働化。全部じゃないけど。」
「えっ!そうなの?」
「そうなんですよ。あの話を聞いていて、設計のときからずっと考えてくれていたんだって。」
「それで?」
「所謂、フレームワークプラグインを入れたり、自動化ツールを使うわけじゃないんですけどスクリプトを作ってくれて、試験データの生成とか、バッチで試験データ投入したり、結果を入力データと突合させたりするの作ってくれたんですよ。」
「Aさんが自分から『やらせて!』って言ってくれてお願いしてたんですよ。」
「へー。で?どうだった?」
「何がですか?」
「効果。」
「そりゃもう、楽ですよ。凄いラク。」
「でしょ?」
「ですね。」


でもこれ、あくまでも省力化の話です。開発した成果物の品質を保証しているんです。要求される品質を作っているわけではないんです。
このプロジェクトのプロジェクトマネージャさんは、バグなんて出るものだから“出たら直せばいいでしょ派”だったんです。バグも匂いも元から絶たなきゃダメなのに。


作業品質が確保できなければ先へ進ませない
もう一つ、プロジェクトの話ですけど。このプロジェクトは、このプロジェクトチームメンバの作業への意識の問題が大きかったんですが。担当するシステムをいくつかの環境に順次構築していくプロジェクトだったんです。


で、1つ目の作業でメンバがおイタをやってしまった。結合試験に臨んだたら、実装しているはずの機能が期待どおりの結果にならない。前工程で機能試験をやっていると報告を聞いていたので、何かがオカシイ、と。

「この機能、機能試験やったの?」
「……。」
「やったの?やっていないの?」
「やっていません。」
「(げー!!!)」


そう言えば、このメンバは結合試験を準備する際に当日の作業計画を作ったか聞いてみたんですね。入りの時間とか帰りの時間とかが気になって。

「タイムテーブル作った?」
「なんですか、それ。」
「当日の予定表みたいなもの。良く作るんじゃないの?そういったの。」
「いえ。」
「(!)」
「いや、作るでしょ?」
「いいえ。」
「ほら、1時間ごとに何しているか予定している作業をプロットしておくの。」
「いえ。」
 :
「じゃ、作って。そして見せて。アレコレ書いて。」
「まだ少し時間があるから作業時間を信用できるくらいの精度で。」
「で、予備時間を途中で入れて。」
「はい…。」


ここで気づくべきだったんですね。結合試験に突入していいのかって。結合試験の開始してよいかどうかの前提をクリアしていたか、って。でも、このときはgoしちゃったんです。


でも、この場でこの状態では仕方がない。何を言っても何も変わらない。出来ることをやる。出来ないことを明らかにする。各方面に詫びいれて後日リトライさせて欲しいと申し入れたんですね。それもお仕事。


戻ってから、裁量は取り上げましたね、メンバから。やらないといけないことが出来るようになってから戻すかもしれないな、くらいな感じでした。兎に角、今やらないといけないコト、今後に繰り返す工程では同じことをしないように仕組みを変えること。


誓いましたね。ワタシ。アウトプットの現物がなければ信用しちゃいかん、と。


あとは、結合試験のリトライの子細な指示は勿論、後続作業の着手前に事細かく見ていく。それは本当はエンジニアなら「自由にやらせてよ。」って言うかもしれないことまで口出しました。だって、箸を上げ下げしてご飯食べているのかと思ったら何も食べていなかったんですもん。これはいただけない。ごはんだけに。


現物を確認することで作業品質を確認するようになってから何か月も経ってふと気づいたらないんです。それ以降の作り込みの部分での自責によるトラブル。やっぱり、品質は作り込むものなんだな、と。