CV駆動開発とは、自分の履歴書 (CV) をよりよく見せることを優先して設計や開発などの意思決定を行うソフトウェア開発プロセスである。
CV Driven Development (CDD) is a software development process which prioritises design and development choices that will enhance the implementing programmer’s Curriculum Vitae over other potential solutions, regardless of how rational that choice is.
CV駆動 (としか思えないよう) な技術選定を目の当たりにしたエンジニアも多いのではないだろうか。
特にマイクロサービス。「なぜマイクロサービスなのか?」という質問をしてまともな答えが返ってきた試しがない。
このような質問を投げかけていくと、当の本人には
ということが多々ある。 モチベーションが問題解決ではなく自分の技術的好奇心あるいはCVに向いているのだろう。 知らないことは決して悪いことではない。 しかし、知らないことを知らないまま会社の重要な意思決定行うことは誠実でない。
私はかつて超巨大なBtoBプロダクトでマイクロサービスを経験した。 そのプロジェクトはモノシリックアーキテクチャからスタートした。 しかしコードベースが肥大化するにつれ、CIビルドは半日近く (つまり所定労働時間の殆ど) かかるようになり、それがソフトウェア品質にも影響を及ぼすようになったことでマイクロサービス化を決断した。
しかし、マイクロサービス化にも多くの苦難を伴った。
マイクロサービス化により発生しうる問題の殆どは計画段階で予見されていた。 しかし、将来的にはマイクロサービスに移行するメリットが上回ると考えてマイクロサービス化に踏み切ったそうだ。
ソフトウェアのアーキテクチャ1つで、開発プロセスにこれだけの副作用がある。 それを自分のCVの見栄えを優先して意思決定してしまうのは不誠実だと私は考える。 もっとも、CDDを「不誠実だ」と批判したところで、やる本人は自分に得があれば実行する。 なので私はCDDは買い手側 (つまり会社側) のリテラシー問題だと考える。