開発案件はなぜ炎上するのだろうか。優秀なPM(プロジェクトマネージャー)の話では「すべてはPMが原因」とのことである。確かに能力の低いPMの元で働くと長時間労働になりがちで、しかも大きくコケる。一方、優秀なPMだとちゃんと週4勤務ができたりする。
これはおそらく、遅れた理由をきちんとお客さんに説明してリスケするかどうか、だと思う。お客さんの要件定義は遅れに遅れて、自分たちの設計や開発フェーズのスケジュールは見積もりの通りに「死守」しなければならないというのはいかがなものか。
理由がどうあれ、要件定義が遅れたら、設計も、開発も遅れるはず。もちろんその後のQAテストも受け入れテストもである。
なので、PMは遅れた理由をきちんと把握して、お客さんに説明して、リスケしてほしい。
システム開発における作戦は「急がば回れ」しか無い
去年1年間の大炎上、大ゴケを経験して思ったことがこれ。急ぐとバグる、単体テストを端折る。開発が一通り終わっていないのに、そのままQAテストが走る。開発者は開発とQAテストからくるバグのFIXを並行で行い、余計忙しくなり、バグやデグレが頻発してしまう。
そしてそこを無能なPMは急かしてくる。優秀なPMは交通整理してリスケしてくれる。
まぁ、ほんとは開発フェーズの実装&単体テストが一通り終わってからQAテストして欲しいけどね。もしくは他のバグFIX要員を入れて欲しいけど、やっぱり実装した人とバグFIXした人が違うのもどうかなとは思う。それだったら開発フェーズの最初の段階から人を増やしてほしい。やばくなってから人を増やすと、開発環境の設定とか、アプリの仕様の説明で工数を消費してしまう。
人月の神話ってやつだ。あれから何年経ったんだよって。
やっぱりウォーターフォール開発はきつい
いい加減にウォーターフォール開発をやめて欲しい。契約とかの問題もあるので、請負の場合はお客さん依存だったりするだろう。
かといってアジャイルもよろしくないという意見もある。実際に僕はアジャイル開発案件に参加したことがないのでよく分からない。
テストコードを書かせて欲しい
テストコードを書くか、書かないか。これは現在実装者に依存しているが、プロジェクトとしてテストコード書くことを推奨してもらえるといいね。
そしてJenkinsをいつまでも使い続けるのではなく、そこをアップデートしてGitlab CI/CDパイプラインを導入したいところ。ここら辺は僕の勉強不足でもある。導入したらええやんってことかもしれない。ただ、若い開発者も現状に疑問を抱いていないのが驚き。多く声が上がってきて欲しいなぁ。
無能なPMの特徴
無能な人に対しての愚痴を書いても状況は解決しないと思うが、ある程度の共通点がある気がするので、優秀なPMとの対比も含めて考えてみたい。
手段が目的になっている
正しい手順を踏めば万事解決すると思ってしまってそれに固執してしまうが現実はそう甘くは無い。目的を明確にして臨機応変に仕事してほしい。
設計 -> 社内設計レビュー -> 社外設計レビュー -> 実装 -> QAテスト
この流れに従えば万事うまくいくわけじゃ無い。実装しながらお客さんへの確認事項が出たりして、設計書を修正してっていうのが必要な場合もある。
納期を守ろうとし、リスケしない
開発者を急かしても全く意味がない。むしろ急かすほどバグが増えるし、コードの中身も汚くなり、保守性が落ちる。開発は営業ではない。焦りが良い結果に繋がることはまずない。
自分の仕事を開発者にやらせようとする
これをやるほど、開発スケジュールは遅れる。1日に何回も打ち合わせをして開発者に質問したり、お客さんとの打ち合わせ資料を作らせたり、お客さんとのやり取りを開発者に任せたり。結果的に開発者は実装する時間がほとんど無くなる。1日2時間しか実装時間を取れない場合もある。それだと一人日の実装でも4日かかることになる。それは間に合わないよ。
無能なPMは転職するしかない
無能なPMが他人や企業にかける迷惑はとても大きい。努力しても無能なPMは有能になれない。PMという職業は人を選ぶ。だから無能なPMは転職して、二度とPMにならないでほしい。