今、私が参加しているプロジェクトでは、10年来続くシステムの大幅改修を行っており、現在単体テストのフェーズに入っている。
しかし、その単体テストがなかなか終わらず、納期を伸ばしてもらったにも関わらず、残業最低2時間+休日出勤しないと終わらないという事態に陥っている。

このプロジェクトがなぜこのような事態になったのか、そして、これから体調を崩さないようにどうやって納期に間に合わせるか。
これを会社の特定につながらない程度にざっと書いていく。

今回のブログは、私の思考をまとめるメモ程度のようなものなので、皆様は読みづらいかもしれませんが、興味のある方のみご覧ください。

【プロジェクトの概要】
・とある機能の大幅改修
・10年くらい続くプロジェクトなので、改修が何度も入っている。だから設計書もメンテナンスされているはず!

【要件定義、設計、実装の段階ではどうだったのか?】
要件定義
こちらは私は全くのノータッチなので、よくわからないが、この時期でもチームは毎日夜中まで残業していたと認識している。

設計
こちらも私はノータッチだが、この時、短期間のみプロジェクトに関わったオッサンが一部設計を行っていたそうだ。
そのオッサンは話が長く、チームのメンバーからも煙たがられていたようで、すぐにいなくなった。

実装
ここでソースコードと設計書が異なる部分が多く、設計書の修正に時間がかかったとのこと。
ここから私もプロジェクトに参画した。
C言語を用いた修正を主に行っており、数十ファイル修正+新規プログラム1つ製造した。
ここでもソースと設計書の違いが顕著に出ており、かなりの数修正したと記憶している。

そして、初めてC言語を触るため、上司に丁寧に教えてもらいながら、修正を行った。
が、私は言われたとおりにしか動かないコピペプログラマー(割と真剣にそこから脱却したいと思っている)なので、今触っている機能がどこの段階でどういう風に動くのかなんて考えずに修正してた。
ってか、C言語やるだけで精一杯やったしね。

そして、私は急に体調を崩し、1週間会社を休むという事態となった。

その病み上がりの状態で迎えたのが次に記載する地獄の単体テストフェーズである。

【単体テスト】
私が充てられた機能は、主にC言語で修正した機能とVBで作った画面が10数件で、似たような修正なら、ある程度机上テストでもOKということでプロジェクトメンバーも合意している(そのやり方は結構危険だけどね)。

ということやったので、私の担当分はほとんど机上テストで終わるかなと思ってたんだけど、データのやり取りの都合上、机上テストではなくマシン上で実際に動かさないといけないとのこと(まあそれが普通なんだけどね)。

しかし、驚いたのは、以下の通りである。

・単体テストフェーズになっているのにも関わらず、テスト仕様書ができておらず、テスト全体の見積もりがしづらい状態。
・メンバーには私も含め、システムがよく理解できていないメンバーが多い→だから一部のベテランに質問が集中する。
・さらに、先日、主力メンバーの一人がのっぴきならない理由でチームを脱退。
・急遽、かつて該当システムに関わってたお局様が加入た ※私はお局様と相性が悪く、向こうも私と合わないのでプロジェクトが収束するまでちょびっと憂鬱。。。
・C言語はサクラエディタで修正しており、めっちゃ非効率
・テストの段階で初めて、設計書とソースが違うところを多々見つける
・俺自身病み上がりで体調が万全ではない

そんな状況でプラスして、いちいち先輩に聞かなきゃいけないし、その先輩もよく休憩行ってていないし、テストに使えそうなデータが実は使えなかったり、俺自身テスト内容を全部把握できないという状況なので、本当に納期までにテストが終わり、自分の分の休みを確保することができるのかがとても不安な状態ですね。。。

ほんとどうしてこうなった。。。

【本当はどうすればよかったのか】
・10年以上行われ続けた保守や改修で、設計書のメンテナンスを逐一行うべきだった←今回のプチ炎上の原因はこれ
→プロジェクト毎に設計書のメンテナンスを徹底するとかしたい、ってか一回、工数を取って、ソースと設計書のすり合わせをやりたい。

・C言語のエディタがサクラエディタ
→VBで言うVisual Studioとか、JAVAで言うeclipseとか、高機能のエディタを導入するべきだ。マジで。

・データ作るときのマニュアルとか作っていて欲しい。
→自分で作れやって話なんだが、初めてやる人にとってわかりやすい使えるマニュアルとかおいててほしい。

【それはさておき、今自分は何をするべきか】
この記事を書いているのは2019年3月17日の夜で、3月21日が春分の日で祝日です。
なので、土日祝が休日の会社では、21日に休み、22日に出社し、また土日があるというちょっと変わった流れになっています。
そこで私は22日に有給を取っており、4連休やったぜってなるようにしていました。

ただ、全員が残業+休日出勤しないといけない状況になっている以上、4日間丸々休むなんて行為がめっちゃやりづらい(そんな状況がそもそもおかしいんですけどね)

だから!せめて、自分の担当分のテストを今週中に片づけたい!

そのために何をするべきか、今の自分に考えられるのはこれくらいでしょうか?

・システムのソースの流れを頭に叩き込む
先輩に逐一質問しているので、自分の範囲はある程度把握できているが、まだまだ聞かなきゃいけないことがたくさんある
これまで聞いた内容を自分なりにわかりやすくまとめたり、一覧表にしたりしないと厳しいだろうな

・VB、Cの勉強を続ける
初めて見るソースは頭がフリーズして、なかなかテスト作成に着手できないことがあるため、せめて、ソースを見てストレスにならない程度には勉強しておく必要がある
自分は、Cの絵本とやさしいCという本を購入しているので、これらを読みながら対応していく感じになるだろうか

・体調を整える
できれば定時に帰ってしっかり休養を取って、明日に備えたいが、今はそんなことができない状況。
せめて余った時間はしっかり寝たり、体を適度に動かしたり、体力をしっかり回復していきたいところ、どうも自分は夜中にゲームをする癖(最近はスーパーマリオRPGとかファイアーエムブレムif 白夜王国とかやってる)があるので、その辺のバランスをとっていきたい。
どっかで遊びに行きたいなー行く友達いないけどなー

もうちょっと分析する必要があると思うが、これ以上書くと、特定されたりしそうなので、この辺にしておこう。
明日も頑張りますか。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください