開発会社を1年ごとに変える会社。そして毎回「前の会社のコードがクソ」と言う
先日、エンジニアの友人から面白い話を聞いた。
その友人が関わっているシステムでは、開発会社が1年くらいの周期でコロコロ変わっているらしい。
ここでいう開発会社とは、新しいシステムをゼロから作る会社の話ではない。
すでに動いているWebサービスや業務システムを引き継ぎ、機能追加や仕様変更、不具合修正を続けていく会社だ。
この手のシステムは、一度作ったら終わりではない。事業が続く限り追加開発は発生する。
ところが、その会社は開発会社を1年程度で変える。
A社からB社へ。B社からC社へ。
そして新しい開発会社が入るたびに、エンジニアから同じような声が出るらしい。
「なんだこのクソコードは……」
友人の話を聞きながら思った。
毎回、前の開発会社が無能だったのだろうか。
そんな偶然が何度も続くものなのか。
もしかすると、問題は別のところにあるのではないか。
開発会社は最初の契約だけで利益を考えるわけではない
開発会社は、最初の契約だけで利益を最大化しようとしているわけではない。
新しい取引先から声がかかれば、当然仕事は取りたい。競合もいるので、最初は低めの金額で見積もることもある。
開発会社側としては、その後も追加開発が続くことを期待している。
機能が増えれば開発量も増える。当然、契約金額を増やす話もできる。
仮に金額を増やせなかったとしても、同じシステムを長く担当すれば内部稼働は減っていく。
最初はコードを読むだけで時間がかかる。DB構成も分からないし、過去の経緯も知らない。
しかし半年、1年と担当すれば、「この機能ならこの辺だな」と分かるようになる。
以前は3日かかっていた調査が半日で終わる。
つまり開発会社から見れば、最初の契約では利益が薄くても、追加開発で契約金額を増やすか、システムへの理解を深めて内部稼働を減らすことで、長期的には利益を出しやすくなる。
ところが、この利益が出始める前に開発会社を変える事業会社がある。
一番安い時期だけ使って次へ行く
友人の話に出てきた会社は、開発会社を1年くらいで変えていた。長くても2年だそうだ。
既存の会社はそろそろ契約条件の変更を言い出してくる。
当然、経営者は新しい開発会社にも話を聞いてみる。そして低めの見積もりを提示される。
こっちのほうが安いし、変えちゃおう。
以後、これの繰り返しである。
事業会社から見れば、
「新しい会社のほうが安い」
となる。
そりゃそうだ。
毎回、最初の契約なのだから。
そして、また1年後に次の会社を探す。
なかなか賢い。
少なくとも、本人たちはそう思っているのだろう。
次の開発会社が「クソコード」と叫ぶ
新しい開発会社がソースコードを受け取る。
コードを読む。
仕様を確認する。
しかし、前の会社が持っていた知識はない。
なぜこの設計になったのか。
過去にどんな障害があったのか。
なぜこのテーブルだけ妙な構造なのか。
なぜこの処理には触ってはいけないのか。
コードだけ見れば意味不明でも、当時は何か理由があったのかもしれない。
しかし、その理由を知っている人間はもういない。
そしてエンジニアが言う。
「なんだこのクソコードは……」
まあ、気持ちは分かる。
私も何度か言ったことがある。
クソコードの上にクソコードを重ねる
問題は、新しい開発会社にも時間がないことだ。
引き継いだからといって、半年間コードを読むだけの時間をくれる事業会社はまずない。
普通に追加開発は始まる。
「この機能を追加してください」
「来月までにお願いします」
新しい開発会社は、よく分からない既存コードを解析しながら機能を追加する。
本当は設計を整理したい。
しかし予算がない。
リファクタリングしたい。
しかし納期がある。
結局、既存コードに合わせて実装する。
そして1年後。
また別の会社が入ってくる。
コードを読む。
「なんだこのクソコードは……」
前の会社も、その前の会社に同じことを言っていた。
なかなか美しいバトンリレーである。
毎回「前の会社が悪い」は少し怪しい
「前の開発会社の品質が悪くて」という話は、IT業界では珍しくない。
実際、本当に酷い会社もある。
一度なら分かる。
二度もあるかもしれない。
しかし、3年で3社変わっていて、毎回前の会社が悪いとなると少し怪しい。
会社選びが壊滅的に下手なのか。
予算の問題なのか。
無茶な納期を要求しているのか。
あるいは、開発会社を短期間で変えること自体が原因なのか。
これは人間関係と少し似ている。
「今まで付き合った恋人は全員クズだった」と言う人がいる。
一人目は相手が悪かったのかもしれない。
二人目も運が悪かったのかもしれない。
十人全員クズだったと言われると、さすがに別の可能性を考える。
安く乗り換えているつもりで、毎年新人研修をしている
開発会社を変えることで、事業会社はコストを抑えているつもりなのかもしれない。
しかし、新しい会社は毎回システムを一から勉強する。
コードを読み、DBやインフラを調べ、仕様を理解する。
前の会社なら1時間で分かることを、新しい会社は数日かけて調べる。
その時間は当然、誰かが払っている。
つまり、安い会社に乗り換えているつもりで、毎年システムの新人研修費を払っているようなものだ。
しかも、新しい開発会社がシステムを理解し、内部稼働が下がり始めた頃に次の会社へ変える。
そしてまたゼロからスタートする。
友人から聞いた話なので、実際の契約事情までは知らない。
開発会社を変えざるを得ない事情が毎回あったのかもしれない。
ただ、話を聞く限りでは思ってしまう。
それ、本当にコスト削減になっているのだろうか。
次の開発会社へ。ご愁傷様です
もし営業から、
「前の開発会社の品質が悪くて、今回うちに切り替えるそうです」
と言われたら、一つ確認したほうがいいかもしれない。
その前は、どこの会社が作っていたのか。
過去3年で3社。
しかも全部「品質が悪かった」。
なるほど。
ご愁傷様です。
おそらく1年後、自分たちも「技術力の低い前の開発会社」になっている。
そして次の会社のエンジニアが、あなたの書いたコードを見て言う。
「なんだこのクソコードは……」
大丈夫。
あなたも1年前、同じことを言っていた。
このバトンリレーには、たぶんゴールがない。
いつかシステムが本当にどうにもならなくなり、大金をかけて全面刷新する日まで続く。
そのとき事業会社は言うのだろう。
「なぜこんなシステムになってしまったのか、原因を調査してほしい」
原因?
過去の開発会社一覧を、年代順に並べてみればいい。