プロジェクトマネージャーあるあるの動画で、顧客に強く頼みこまれてスケジュールをバッファゼロ(※理想通りに進む訳がないので、普通余分な時間を加算する。1.2~1.5倍くらいかね)の上に複数タスクを並行(設計書Aを終えたら設計書Bを書くじゃなくて、Aのレビュー中等にBを同時にやるみたいなの)で組んだらえらいことになったという動画を見て涙が出た。
私は最近サシミどころか数十のタスクが重なった現場に当たった。
システムの理解どころかドキュメントすら読んでない状態でまず三日で製造終わらせろと。マジで驚愕である。
人数も少ない。私(全コーディング、製造物の設計書、テスト仕様書、単体・結合テスト担当)、PM(雑務)、PMO(データベース、シェル、レビュー等?)、雑務(インフラ、ネットワーク、データベース、クラウド等)の四人である。
因みにインフラ、ネットワーク、データベース、クラウドも設計からやらされかけている(さすがに大部分を雑務とPMOに回した)。
プロトタイピングとその検証が終わってるから全てその通りに書くだけという触れ込みだったが、蓋を開けたら要件と全くマッチしていないPGと、おかしな日本語で書かれた嘘と欠落だらけの少ない設計書のみ。
何も書かれていない、本当に検証したかも怪しい。
因みにおかしな日本語については文章が苦手な新卒に匹敵するちぐはぐさだった。
(恐らく)レビューされてないのもとんでも突っ込みどころだが、技術者の能力も怪しい。
そして、そもそも要件定義から済んでおらず、メンバーが持つシステムの機能やロジックの認識が全員違うという作り話みたいな事まで起きる始末。
全員違うのに組むのは全て私の担当だった為、ロジックが間違っていると客、PM、PMOから「ちゃんと読め!」と糾弾される始末。
言ってる事全員違うし、そもそもこれPMO、テメーがOK出してんだよ。OK出したPM面してるテメーは一体何なんだよ。
しかも、客とPMの認知も乖離してるから、要件がコロコロ変わる。定まってない。
じゃあ要件定義書は何か?それが冒頭で述べた「プロトタイピングとその検証とイカれた設計書」なんだよ。
因みにロジックについての要件定義だけは検証後に作成されたものだったが、雑務担当とPMと客が滅茶苦茶時間かけてすり合わせまくった大作らしいに関わらず、やっぱりこれも全然間違ってたのだ。
これを基に作ろうとしたり、PMOや私が読み込んで理解しようとしたからおかしなことになってしまったのだが、結局最後まで頑なに間違っていないと言い張る始末だった。
つまり、要件に合わせて私が一人で再考し直したロジックに、どう対応するかというのを間違っていない前提ででっちあげる事になった。
※因みにもう少し具体的に言うと、評価する項目と前提が全く足りていなかった。
またシステムの全容を把握できるだけの時間も当然存在しない為、差し戻しが何度も何度も発生する。
shellの共通関数やshell仕様の共通変数を使えと後々になって要求してきたりする(※pythonです)。
元コードがトリッキーな事をしてまで部分的に非同期処理環境に変更されていて、理由が設計書に書かれていない為、部分的に書く理由を探すのに時間がかかる(普通、部分ではなく全部非同期にするべきなのだ。当時のライブラリが非同期専用だった可能性としておいたが…)。
私は爆速でコード書けるタイプの人なので、何とか無理してサシミを消化していったのだが、当然それも限界がくる。
テスト仕様書の作成(スケジュールは二日)に差し当たり、これに関して何とかノーを突き付けたのだが、「テストどうやるかわからないから教えろ」との事。
私はこの会社の様式を知らんし、正直規模の小さいPGやシステムが殆どでまともにテスト仕様書書いた事ねえし(※小規模な物で条件網羅以下やチェックリストで済ませる)、お前らより圧倒的に業務経験も短い。何を言っているんだこいつらは。
それもノーを突きつけたら、ボールを受け取って漸く事の大きさに気付き始める。
私に一人で二日三日でやれと言った手前なのに、期間を更に二週間延ばして、他部署から5人増員してテスト終わるまで長時間残業、休日出勤の要求も来る始末。
出来ねーっつってんのに出来る筈だと頑なに引かなかったのお前らだろ。なんで私が長時間残業や休日出勤等尻拭いしなきゃならんのかとキレかかっていた最中で、何故か私の責任にされ始めて詰める仕草を見せ始めたのでそのまま業務放棄した
後日談として、それの尻拭いをする事になったPMOの上司?とちょっと色々諸事情でコンタクト取ったが、「プログラム自体は少ないからなんとかなるだろ」みたいな言葉が出てきてまたキレそうになった。
元のコードを成るべく尊重しつつほぼ1から構築し直したのもあるが、(元コードでは強引に書かれた)それぞれのライブラリの存在しない共通機能を低レイヤーでクラス作りまくったり、様式に合わせつつも最善のアーキテクトを滅茶苦茶練り込んで、かつ無駄な処理減らしまくった結果のものだ。
雑に手続き型で書かれて再利用性もなければ可読性ゼロ、ハードコーディング(定義しなきゃいけない値を直に書いたりするような奴)や無意味なオーバーヘッド(負荷処理)だらけのコードを最適化した。
その結果ステップ数は1/3位削ったんだが、そもそもこの現場にアーキテクトやオブジェクト指向なんて概念知っている奴が恐らく一人もいない。
ステップ数で測れるのは定義書と設計書が全部揃っている状態でパンチするだけの場合だ。
お前ら最後まで俺に何やらせたのかすら理解してなかったのか。
と言う様な、話。
で、私は今キレて休職している。
長くはもたないかもしれないが、休職中もしばらく問題は続いたので出来るだけ長く休んでやろうという腹つもりではある。
ああ、もう一つ問題があったわ。
恐ろしい事にプログラムの実行環境が無かったから全部想像で書いたんだよね。
後半では仮想環境から仮想環境を立ち上げて、そこからリモートデスクトップで、TeraTerm(ハッカーが使ってる様な文字だけのコンソール画面)でテスト環境に接続して、逐一標準vi(専門性の高いメモ帳だと思ってもらって)でコード書いて実行しろみたいな感じ。
勿論時間あるならそれでもいいけど、そんな環境の中で時間すらないんだよね。
当然理屈は合っていても上手く動作しないコードがめちゃあっててんやわんやだそうな。