えーと。こんちは。「消火特殊精鋭部隊」出身のMilkです。
数々のバックドラフトに遭遇してきましたが、その中でも特に印象に残っている事案について書いてみたいと思います。
それは何かって?あれですよ。
入社2年目の魔の案件ですわ・・・
魔のPJ
その案件は、年単位の長期PJでした。
しかも、システムの移植という案件。
どういう意味かと言いますと・・・
そもそもは、某ベンダーがシステムを構築して運用しておりました。
しかし、その某ベンダーはシステムメンテナンス費用がかかることで有名(これで分かる人は分かるかもしれない・・・)で、なおかつバグの嵐で収拾がつかなくなったのです。
我々としては、その案件の存在は知っていましたが、知らぬが仏。絶対に関わりたくなかった・・・
同じお客様の中でも、別案件のゲッチュを目指していました。
が!別の大型案件を受注するには、その大問題システムの面倒も見ろみたいなセット売りになっちまいまして・・・
受注しちゃったんだな!これが!!
その大問題システムは、あまりにバグバグしすぎてて、しかも設計書もなし。
一体全体、その某ベンダーはどうやって開発してたんだか、意味不明。
我々としても、コイツを延命させるのは無理。もう安楽死させてやろう・・・ってことになったのです(笑)
そいつは、Unixで動いていたのですが、Windowsに移植しよう(つまり、機能をもう一度別のプログラム言語で作りなおそう。)ってこと。
しかし・・・それが悪夢の始まりだったのだ・・・
因みに、この部分までは私は関わりなし。これとは全く関係ない案件を一生懸命やっておりました。
悪夢が始まってから、この「消火特殊精鋭部隊」のMilkが招集されたのであります。
なので、受注の経緯は後から聞きました。そして・・・心の中で号泣しました。
緊急招集
入社2年目のペーペーの私が緊急招集されました。一応、別案件から同じように特殊部隊のように招集されたプロパーもいました。
って言っても自分含めて3人ぐらいかな?
オリジナルの体制としては、プロパーが5人ぐらいで、パートナー会社のメンバーが10人ぐらいの計15人ぐらいでしょうか。
そこに我々、特殊部隊が加入しました。また、更にパートナー会社のメンバーの増援が始まり、あれよあれよと言う間に30人近くの規模になっちゃったのです。
うち10人くらいは新人ちゃん。そして、知らぬ間に新人ちゃん達は私の配下に配置されるという意味不明な体制が構築されたのです。
しかも、2週間とかの単位でメンバーが入れ替わる!
助けてぇww
教えても。教えても!教えても!!最初からやり直しだよぉ!!!
プログラム大事件
それについては、辛抱強く新人ちゃん達とコミュニケーションを取りながら、治安を安定させ一定の成果が上がり始めました。
引き継ぎ内容をマニュアル化したり、入れ替わりメンバーの予定を考慮してタッグを組ませることで引き継ぎをスムーズにしたり・・・
俺、頑張った。俺、偉い!!(たまには自分を褒めてもいいよね・・・)
さて、ある程度、古参のパートナー会社のメンバーの方々とも信頼関係が構築され始めました。
こういう荒れている現場は、いかに人間関係を修復していくかが鍵です。それによって仕事効率に雲泥の差が出ます。
「Milkさん!聞いてくださいよ!こんなPJやってられません!!元のシステムが意味分かんないんです!!」って泣き付かれました。40代のおっさん方に・・・(;´∀`)
設計者じゃないので、システムの仕様については分かりませんが、話は聞いてあげられます。
話を聞くのは自分にもダメージが来て苦しいのですが、ここも頑張ってガス抜きの意味も込めて聞くことにしました。
ですが、ちょいとびっくりな現状を聞くことになるのです。
こりゃなんの分岐だ?
プログラムには、分岐というものがあります。
大抵のプログラム言語にはif分岐というものがあって、条件が成立すればこっちの処理、成立しなければ別の処理を実行とするのです。
例えば、
int a = 3 + 5; if (a == 8) { return true; } else { return false; }
こんなのがあったとしましょう。これはaという場所に、3+5の結果を入れていて、if文ではaの値が8ならtrueという状態を戻してねって意味です。
仮に、aが8以外なら、falseという状態を戻すということになります。(この例の場合は、a = 8 以外はありえませんから、trueしか状態は返りません。)
プログラムについてちょっと理解いただけたでしょうか。
さて、システムの移植をするためには、Unixの元のプログラムを解析しなければなりません。
ですが、ある箇所が意味不明なのです。因みに、プログラム中には"//"を入れたりしてコメントを書くことが出来ます。
この"//"などが頭に付いていると、それはプログラムとは判断されずに、コンピュータは読み飛ばします。ですから、これでプログラムの意味についてコメント書きしたりするのです。
if (意味が不明な条件。どうやったら成立するのか不明。) { 何かしらの計算処理 } else { //コメント //ここに入ったらヤバイ! }
「ここに入ったらヤバイ?!」
マジで、「ここに入ったらヤバイ!」しか書いてない。
意味が分かんねーよ!!何がどうヤバイんだよ! 後、ヤバイならそんな処理作るんじゃねーよ!!
コメントで愚痴るな
あと、コメントは普通は処理についての解説を書くのです。
どういう意図でこの処理は作られているのかってことを理解してもらうために。
がしかし!このプログラマーは何をとち狂ったのか、意味不明なコメントを羅列するのです。
do { if (条件) { //本当は嫌だったけど、◯◯課長に書けと言われたから書いた。 何かしらの計算処理(※これも意味不明) } 計算処理 }while (条件)
「本当は嫌だったけど、◯◯課長に書けと言われたから書いた。?」
処理の解説を書けよ! ソースコードをお前の日記帳にしてるんじゃねぇ!! バカタレ!!
最後に
こりゃぁ泣き付かれるわけだ・・・
なんとか死物狂いでシステムの移植を成功させ、今ではある程度安定稼働しているようです。
マジで頑張ったよ。ありえないですよ。こんなプログラム・・・
聞いた瞬間に殺意が芽生えました。某ベンダーに。
もうあそこが手掛けるシステムに、二度と関わりたくねぇな・・・
そんな、ほろ苦い思い出。
苦いどころじゃねぇ!!殺す気か!!