novtanの日常

ネタです。ネタなんです。マジレスする人は撲滅すべき敵です。だからネタだってば!

システムの作り逃げはなぜ起こるのか

流石にイラッとしたので殴り書いておこう。

xtech.nikkei.com

あのね、こういうのって発注側に責任があることがほとんどですよ。「要件を満たすクソコード」を生むのは発注側ですよ。早く安く=クソコードリスク極大なんですよ。をーたーほーるで設計をちゃんと検収するとかすればよかったんじゃないですかね?あるいは、「正しい見積を出してきたベンダーに任せる」のですよ。それを判断できない?じゃあ、高いITベンダーに「食い物にされている」と思わずに依存してください(その方が絶対品質上がるので。金はかかるけど)。

あくまで筆者の経験を基にした主観的な見解だが、「作り逃げ」は「なんちゃってアジャイル」(雑に手早く構築することがアジャイル開発だと勘違いしている)なベンダーやエンジニアに目立つ。

この話も、現象として捉えると確かにそのとおりだと思うけど、これ絶対ろくなRFPを振り出してないし、コンペになったときに見栄えがよいプレゼンで中身を大して評価せずに決めてるよね。だいたい、古くて実績のあるベンダーと、早く安く作りまっせというベンチャーとの差異は見積り金額において3倍、下手すると10倍を叩き出すことすらある。なぜそんな差がつくかというと、クソベンチャーの提案している費用の前提には往々にして「正常系しかない」のである。異常系フローもなければ障害時運用の考慮もない。「xxが起きたらどうなりますか?」「データロストします。再登録してください」「取引のトランザクションデータを手で再登録できるかクソが!!」というやり取りもフィクションではない。

それでも、それで問題ない、使い捨てのシステムだったり、手でのリカバリが可能なレベルしかデータのボリュームがないシステムってのはあります。だから、そういう作り方が悪いわけではないけど、長く強く使っていくシステムにおいては初期の設計で異常系が考慮されていないものなど建て増しリスクしかない。

システムの品質についてよくエンジニアの力量の問題にする人がいる。確かに、きちんとしたコードを書き、保守性を高めるために完璧なCI/CDを作り込み、みたいなエンジニアが作る「コードの」品質は良いんだと思うんだけど、システムの品質を決めるのはつまるところ、品質に対する要件にほかならないわけです。要件は発注側が決めるんですよ?可用性にしたって拡張性にしたって保守性にしたって、みんなそうですよ。やっすい提案してきた奴らの提案書にそのあたりが明記されてましたか?

あとのことなんて想像できない人たちがは作り「逃げ」なんてしません。逃げてる意識すらない。彼らは表面上言われた通りのものを作ることが仕事、という認識しかないんですよ。そして、それでも良い世界はあるんです。そのことそのものが悪いとは全然思わない。でも、書いてないことをわざわざやってくれる人は、ほとんどいません。

そういう仕事しかしないエンジニアばかりではもちろんないんだけど、じゃあ、たまたまハイスキルでそういった経験も豊富で隅々まで目の行き届く人に巡り会えたからといって、次の仕事もそういう人が見つかるかというと分の悪い掛けです。困ったことに、超ハイスキルエンジニアの生産性はとても高く、その人だったらX人月でできた仕事なのでそのくらいが相場だろうと思ってちゃんとしたベンダーに頼んだ場合、軽く5倍はかかることがあるでしょうね。「なんでそんなに掛かるんだ!」って怒ってはいけません。そっちが本当の相場であり、超ハイスキルエンジニアはものすごくお買い得だったんですよ。そういう人を見つけたら今の倍払っても抱え込んだほうが良いですよね?え?そんなに継続して仕事ない?ですよね。だから高くてもベンダーに頼むんですよ。システムを作り続けるのが自社の重要な事業でない限りは、そこでわざわざリスクを取るの、まともな判断でできるわけないですよね。