先日、関わっていたプロジェクトを抜けることになりました。ここで吐き出させて下さい。20数名のメンバーの一人だったはずが、いつの間にか総勢一人になっていた僕の仕事のスケジュールに空きができ、週3日程度の仕事を探していた頃、Twitterから開発案件の依頼がきた。内容はよくあるシステムのリプレース案件。開発メンバーは既に5人程度集まっており、その後20人ほど合流するとのことで、総勢20名以上の開発メンバープロジェクトだ!こんな規模の新規開発なんて初めてだからワクワクするぞ!と思っていたら、PHPの案件なのにほとんどがJavaの人だったのでメンバーとして数えられず、参画する前に去っていってしまった。合流すると言っていた20人の話もいつの間にか無くなってる。追加で集まったメンバーにはプロジェクトの話題をしない。これは何のために集めたチームなんだ?結局、いつのまにか僕一人だけが開発メンバーということになっていた。TIP他社の見積りでは数億円規模と見積もったものを、4分の1の価格で半年で開発するという話。今回の依頼者が納品したシステムだったため、既に内容を把握しているのが強みとされていた。SNSで開発者を募集するも大スベりいくら依頼者が開発に参加するとはいえ、僕も集められたメンバーのうちの一人であって、総勢二人で開発なんてできるわけない。いうか提供できる労働力はせいぜい月100時間程度。人が集まらないと始まらない。依頼者もTwitterでエンジニアの募集をかけた。この発言内容が最悪すぎた。「時給なんて保証に甘える技術者は不要。※要約この時代錯誤な発言が凄惨な程に大スベり・・・wそのカリスマ性で人気を博していた彼のタイムラインが急にシーーーンと静まり返ったのがタイムラインからでも手に取るように感じられた。このご時世に全く刺さらないどころか、取り返し付かないレベルのミス。「たくさんのご応募ありがとうございました。」って言ってたけど、応募はもちろん0。俺も正直言って全力で逃げ出したかった。いう謎の正義感というか同情心が湧いてしまい、残ってしまった。結論から言えば残ったのは大失敗でした。稼働できるのは80〜100時間だって言ったのにいつの間にかフルコミットする約束したことになってた。仕事に情を持ち込んではいけない。炎上するのがわかっているなら、絶対に興味本位で近づいてはならない。集まったメンバーを紹介するぜ!最終的に、地元で知り合ったエンジニアさんに泣きつき、なんとか人が確保できた。2名(Masaki含む)まてまて、億の規模だぞ。開発者二人ってどういうこと?当然この後メンバー増やすんですよね?PM「このメンバーが揃ったらもう安心だ!ガッハッハ」PM「俺も開発には参加するからね。」え、人を増やさないつもり?ガチですか???いくら募集がスベったからっていじけてる場合じゃなくない???なんか作戦があるんかな。結局もう手遅れになるまで人員の追加はされませんでした。手遅れになってから人員追加しても遅いんですよ。デメリットの大きすぎた技術選定ひとまずメンバーが集まった!顧客企業さんに赴いてキックオフもされた!何故か15人も開発陣がいることになってるけど。さぁ、次はどう動く?3日ほど音沙汰なし。技術選定もまだだし、現行システムの共有もされてないし、タスクの割り振りも説明もなんもなし。せっかちなMasaki、さすがに耐えかねて聞いてみる。後で気づくんですけどこのPM、肝心な質問は全部スルーするんですよ。重要なことを何も決めない。その割にアメリカのン千万の案件を取っただとか、今朝は3時間で仕事を終わらせたなんてツイートはせっせとしてる。いやいや、これあなたのプロジェクトですよ。誰がマネジメントするんですか。このまま待っていても埒が明かないので、こちらで枠組みを作って提案してみることにした。以前にPMがLaravel+Vueでやりたいと言ってたので、ボイラープレートを使って見本を作って見せてみた。Laravel+VueのSPAはメリットも多いけどデメリットも多い。SPAの管理画面はあくまで僕が開発実績として持ってるというだけで、あくまで提案段階のつもりだった。CakePHP+jQueryとかの枯れた技術だけどみんな使えるフレームワークがあるならそちらを採用してくれてよかったんだ。jQueryも扱えるんで。他にないならこれでいくつもりではあったんだけど、まさか議論もなしに決定されてしまうとは思わなかった。結局Vueを扱えるのは俺だけという事態になり、デメリットばかりが目立つ結果になってしまった。デメリットMVCとは思想が異なるので、慣れてないと開発が遅くなるVueの学習コストが高い扱えるエンジニアが少なく、単価も高い後日談ちなみにこの技術選定も俺が決めたことにされてたらしい。俺が一人称で動くタイプだからって上長の承認も得ずに勝手に決めるようなことはしません。技術選定の前に、メンバーがどんな技術を持っているのか確認する。提案はあくまで提案であることを強調する。相変わらず遅々として何も決まってないプロジェクト。ただでさえ短い納期なのに、このままじゃ後が詰まってしんどくなるのは明白。せっかちな僕としては、しんどい部分は最初に持ってきたい。構築を済ませることを提案し、先に基盤を整えてしまうことにした。環境構築の方法をREADMEにまとめる。環境構築の方法を全員に共有。設計者さんの方も、ドキュメントをまとめるファイルサーバを用意し、設計書や仕様書はそちらにまとめる方向になった。これはすごく正解だった。自動デプロイがあることで、誰でも検証環境にアップができ、手順が簡単になった。Vueの辛いところってビルド時に色々とエラーが起きることなので、これを先に解決してしまったのは大正解。一つだけ誤算だったのは、開発者でもあるはずのPMが、環境構築すらしてなかったこと。サーバ情報も渡したはずなのに保存すらしてなくて、いつの間にか僕がサーバ管理者にされてしまいました。プロジェクトが始まるも、共有される情報量が少なすぎる。さぁ、やっとまともに開発が出来るようになりました。このプロジェクトは、もともとPMが開発して納品したシステムとのことで、その知見が活かせることが強み。・・・なんですが、なんとPMがその知見を共有してくれない。ドキュメントはもちろん、現行で動いているソースコードも、DBの中身どころかデータの構造すらも共有してくれない。共有があったのは現行の検証環境のURLとログイン情報のみ。いや、どう進めろと?もちろんこちらからも情報を催促するんですが、無視される。初めのうちは海外の案件やらで忙しいのかな―とか思ってたけど、そんなの言い訳に過ぎないし、どんなに忙しかろうと情報の共有は後回しにしないでしょ。現行の検証環境を確認しながらUIを作るしかない。誰だこんなクソみたいなUI作ったやつは。動作を確認しながら実装したものの、ユーザーから「現行と違う」と指摘が入った。聞いてみると、本番と検証環境で内容が違う。現行すらも共有出来てないじゃねーか。PM「この機能は俺がやる」→やりませんでした。マスタ系のUIの基本形はできた。DBの構造も仕様も不明な状態で組んでるので、何故この作りになってるのか?何故編集できない項目があるのか?など不明点がいろいろ出てきます。UIをモダナイズするのは良いとして、DBはできるだけ現行に合わせておきたいし、そこが流用できなければこのチームで受注したメリットが一切ない。そこで内部ミーティングでPMに確認です。僕「ここの項目は編集不可となってますが、どういうデータ構造になってますか?」PM「あーそこは結構複雑なんだよ。このマスタに関しては俺がやるから置いといて。」うーん、欲しいのは現行のDBなんだけど・・・と思いつつ、PMがやるというのでおまかせすることにして、担当者に設定してガントチャートに線を引く。メイン機能に関しても、やはり複雑な機能は自分がやるというので、それもPMを担当者にしてガントチャートに線を引いておく。ガント上で着手日になっても動きを見せないPM。変なところでつまづくし、無駄な時間を消費するが、もちろんそんなことをやっているそぶりもない。ことで、心配になって声をかけてみる。複雑な機能ということは、複数のDBが絡んでいたり、データが他の機能にまたがるような重要な機能であったりします。PMの担当しているマスタも、やはり多数の機能の根幹部分を担っているもので、これが完成しなければ他の何も完成しないと言っても過言ではない。設計者さんはもう呆れて「もう知らね」状態になってる。ガント上の締切を過ぎた。僕の方はメイン機能の開発にまで着手しており、そのマスタが関連する部分以外はざっくりと動く状態にしていた。僕「メイン機能に関してですが、マスタが完成しないとここから先が開発できない状態です。今進捗はどうなってますか?」PM「・・・(無視)」もはやこれ会社員ならば無断欠勤でクビにされても文句言えないレベルでしょ。報告も連絡も相談もなし。結局、このままでは開発が進まないので、僕が巻き取ることになった。(仕様は共有されないまま)TIPDB情報は後日共有されたものの、既に主要なマスタはスクラッチで作成済み。既存のテーブルとごちゃまぜにされてしまって訳が分からないことになってしまった。マイグレーションで管理してるDBを直接いじるもんだからマイグレーションもCIもぶっ壊れた。現行のソースコードは最後まで共有されなかった。ここで得た教訓やると言ったことをやらなかった人間を一切信用してはならない。信用できない人間とは仕事をしてはならない。最初から丸投げして来るなら工数が読める分まだマシ。早い段階で「無理」と言える。海外旅行・飲み会・トークショーざんまいプロジェクトが始まって1ヶ月もした頃から、PMが内部ミーティングどころか顧客とのミーティングにも欠席し始めるようになった。その日は予定があるその日はアメリカですその日はシンガポールですその日は沖縄です倒れてましたその日は病院ですあらゆる理由を付けて、会議を欠席する。こちらからの質問も無視する。それどころか、顧客からの問い合わせを3日以上放置する始末。倒れていたなら仕方ないかもしれない、病院もそう。アナタ、毎週飲み会にトークショーに海外にって遊び呆けてるでしょ。愚痴ったところで自業自得以外の何物でもない。連絡が来るんだからこっちにもいい迷惑。内にも外にも迷惑かけてる自覚を持ってほしい。それでも顧客企業訪問はきちんと行ってたみたいです。こっちの進捗を何も確認してないのに何を説明しに行くのか?って思うでしょ。情報共有してくれないからわからないんですよ。言ったところで話してこないし、決めてこない。みたいな話で顧客との認識齟齬が生まれる。「顧客に寄り添え」ですよ。いやいや、対話もせずにただ平伏するのは寄り添ってるとは言わないでしょうに。これじゃ顧客に媚びへつらってるだけやん。PM「俺はPMじゃない、設計者がPMだ」→設計者「もうキレた。一切仕事をしないPMの代わりに動いてくれていたのは設計者であるNさん。顧客との調整や進捗の管理なども行ってくれてました。とでも問い詰められたんでしょう。言ってしまったらしいPM。