スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ブログランキングに参加しています。応援クリックいただけると嬉しいです♪
FC2ブログランキング
人気ブログランキングへ

未熟者です・・・・・

6月に入ってずっと肌寒かったポートランドですが、今日になってやっといいお天気が戻ってきました。
IMG_1166.jpg

さて、最近しばらく仕事のことを書いていなかったのですが、それはずっと産みの苦しみが続いていたから。

でも、昨日やっとテストプランを完成させました。といっても、これからマネージャーやシニアプログラマーなどに見せて、手直しが入ることでしょうけど、とりあえず、何とか形になりました。21ページにわたる文書になりましたが、我ながらよく書けたと思います。

それは昨日一日の中で良かった部分。残りの部分はあまりいい日ではなく、久々に切れそうになりました。

今プログラマーの一人が、既存の機能は変えずにその部分のコードを改善するリファクターという作業をしています。コードを変えるわけですから、そのコード用の既存のユニットテストも当然書き換えられなければなりません。

でも、彼女は最初からユニットテストを全てコメントアウトし、彼女が書き換えたコードが、ちゃんと既存の機能を果たしているかユニットテストを使って確認することを全くせず、リファクターの作業だけをどんどん進めていったようです。

今回のリファクターで彼女が変えたのは379個ものクラス。何千行かのコードを変えたことになります。

これだけ大きなリファクターをする過程で、彼女は全くユニットテストを実行しなかった。それだけでも問題なのに、リファクターが終わり、既存のテストがフェイルしたのを見て、「このテストはもう無効だから消していい?」なんて平気で私とシニアプログラマーにメールしてきました。

彼女がこんなことを言うのは今回が初めてではなく、私は「またか・・・・。」とこの時点で既に頭にきていたので、最初はシニアプログラマーにメールの返事をしてもらっていました。が、メールではらちがあかなかったようで、次の日に直接彼女と話をすることになりました。

昨日の朝一番から、シニアプログラマーと彼女との間で議論が始まりました。

が、いくらシニアプログラマーが、「リファクターのせいでテストがフェイルした場合は、そのテストをアップデートするのはそのリファクターをしたプログラマーの責任だ。君はどうして最初から、少しずつコードを変え、その度にテストを実行する、必要ならテストをアップデートという手順をとらなかったんだ?それをしなかったのは君の責任だ。君がそれを怠ったせいで、たくさんのテストがフェイルしているからといって、そのテストを消していいということじゃないよ。」と言っても、彼女は、「でもどうせこれらのテストはうまく書かれていないんだから、今消して後から書き直せばいいじゃない。」と言うばかり。

シニアプログラマーと彼女の間で議論はしばらく続きましたが、それでもまだらちがあかないので、テストチームのマネージャーの意見を聞きにいこうということになり、私も呼ばれました。

彼女は相変わらず、「テストは無効だから、消して、後でまた書き直せばいい。私はこれ以上このコードをチェックインするのを引き伸ばしたくない。」の一点張り。彼女が、「どうして無効のテストを消しちゃいけないの?」とまた言ったとき、私の堪忍袋の緒がぷちっと切れて、

無効なのはあなたの論点よ、テストじゃないの!テストがフェイルしているのは、あなたが最初からテストを実行するのを怠ったせいでしょ?!そのせいで、今になってこんなにたくさんのテストがフェイルしていて、それをアップデートする作業をしたくないからって、テストなしでシステムをビルドするっていうの?その間、システムのその部分にバグが発生しやすくなるし、そのバグを見つけるための代わりのテストはないのよ?!どうするの?!」

と怒鳴りそうになりましたが、それを察したらしい私のマネージャーにやんわりと妨害されました・・・・。シニアプログラマーにも後で、「声で怒ってるのわかってたよ(笑)。」と言われてしまいました・・・・。

でも、プログラマーがユニットテストを消したり、アップデートするのを怠ったりした場合、最終的に一番影響を受けるのはテスターチームなんですよね。なぜなら、余計な仕事が増えるから。ユニットテストがちゃんと実行されていたら、そのテストが見つけたであろうバグをテスターが見つけなきゃいけなくなり、バグを見つけたら見つけたで、そのたびごとにバグレポートを書かなきゃならない。

そして、バグが直された時には、それを確認する作業。ユニットテストが消されたばかりに、これらの作業が全部テスターチームにのしかかってくるんです。

今のテスターチームは、テスターは私も含めて3人しかいません。人手不足ということは、マネージャーをはじめ誰もが知っていることです。だから、私達はこの少ない人数でスケジュール内にテストを終わらせるためにいつも必死だし、できるだけ最善のプロセスで仕事をしようと努めています。

それなのに、彼女が自分勝手な仕事のし方をしたばっかりに、しなくていいはずの仕事がテスターチームにまわってくる・・・・。

負担はテスターチームばかりではなく、プログラマーチームにものしかかってきます。バグが報告されるたびに、他のプログラマーにもそのバグを直す作業が課せられることになる。全て、ちゃんとユニットテストが実行されていれば、しなくてすむ作業です。

彼女はそういうことを全く考えていなかった。いや、わかっていても、彼女にとって一番大切なのは、自分に課せられた仕事をとにかく期限内に仕上げることだけ。彼女がしようとしていることがチームのみんなにどれだけ余計な負担を与えるか、またシステムの安定性や品質にどんな影響があるか、まったくお構いなし。

議論の途中で思わずぽろっと、「今回私が変えた部分には、きっとたくさんバグがあると思うわ。」なんてこぼしているにも関わらず・・・・。

彼女のそんな身勝手さに、声が震えるくらい腹が立ちました。

が、だからと言って、怒鳴って問題が解決するということではないですよね・・・・。怒鳴られて、素直に「はい、そうですね。」と言う人は滅多にいないだろうし・・・。まだまだホワイトボックス エンジニアとして未熟な自分を痛感した瞬間でした。

最後に彼女が、「これらのテストをアップデートするのは時間がかかるし、とりあえず今はテストを消して、コードをチェックインしたい。テストはまた後から書けばいいと思う。」と言ったのに対して、マネージャーが、「ながこ、君はどう思う?」と言ってくれたので、深呼吸してから、こう言いました。

「これらのテストが一番理想的な形で書かれていないのは、私もわかっています。でも、だからといってこれらのテストが無効というわけではありません。これらのテストは今までそれなりの役目を果たしてきています。今回これだけ大きなリファクターが行われた部分のテストを、代わりのテストもないままに消してしまうのには賛成できません。これらのテストの書かれ方が適当でないというのなら、まず新しいテストを用意し、それを作動させてから、これらのテストを消すべきだと思います。でも、新しいテストが用意できるまでは、彼女にこれらのテストをちゃんとアップデートして、そのテストが彼女のコンピューター上でちゃんとパスしてから、それからコードをチェックインしてほしいと思います。」

マネージャーは、「僕も君の意見に賛成だ。」と言ってくれ、結局彼女はテストをアップデートすることになりました。

シニアプログラマーも、「彼女には期限が迫ってきてるのはわかってたから、僕は妥協して、とりあえずコードをチェックインして、それからテストをアップデートするように言うつもりだったんだけど、よく言い切ったね。テストがアップデートされることになったのは僕や君のマネージャーのおかげじゃない。君の功績だよ。」と言ってくれ、話し合いは終わりました。

でも、いくら正当な理由があったとはいえ、途中であんなにかっとなるなんて、まだまだ私も修行が足りないなと思いました。最終的に何を解決したいのかだけに集中して、それを達成するためにはどうやって議論を展開していったらいいか、もっと冷静に考えながら話ができるようにならなきゃだめだなと、深く反省した一日でした。


ブログランキングに参加しています。応援クリックいただけると嬉しいです♪
FC2ブログランキング
人気ブログランキングへ

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。