何故CTO職が必要なのか?
以前から何故CTOに代表される技術系の役員という役割が必要なのだろうか?と考えていた。技術が重要なだけなら昔ながらの製造業や通信産業の組織でも似たような役割が設定されていたはずだ。みんなバカじゃないので。CIOはいたがCTOはあまり聞かなかった。その違いはなんだろう?
スタートアップとして投資を受ける時にVCから「あなたのチームは技術者採用できますよね?」というのを証明するためにCTOの設置が求められたりするなど、特にWeb系企業においてはあたりまえの役割として設置されている。つまり技術者のキャリアパスとして、役員クラスまで登れるんですよ、という道筋の提示という役割はまああるのだろう。
ただ、それだと客寄せパンダにしか見えなくもなく、ビジネス的な役割が適切に存在しないのであれば長くは続かない。やはり技術部長やテックリードではなく、役員クラスとしての責任をどう果たすから技術系役員が必要だという理屈がないのであれば、組織変更を繰り返す中でいずれは駆逐されるはずだ。
自分なりに考えていることはこれ
Webサービス企業がビジネスを推進するにあたって一番リソースを割かれるのはトップラインを伸ばすための新規施策である。その中で開発が必要なものは、プロダクトの改良や機能追加という形で開発投資が行われる。
それらの活動でソースコードが生まれ、それがソフトウエア資産として蓄積されるのだが、問題は蓄積したソフトウエア資産が劣化すること。
劣化要因としては、
1.セキュリティ要因
積み上げたソースコードはもちろんだが、新たな脆弱性が発覚するなど外部環境の変化で新たなセキュリティ問題が生まれてしまう。サーバやサービスがインターネットに接続されているからこそ起きる。
2.ビジネス要因
ビジネスを継続するために必要な外部環境を原因として、改修しなくては継続性に影響が出てしまう問題
3.技術的負債要因
ソースコードクオリティによるメンテナンス性の低下はもちろん、時代の変化に伴ってOSSの部分を改修していかないといけないなどの問題。LinuxやiOS、Androidも足元から毎年変わっていく。
4.スケーラビリティ要因
サービスが成長することで、それまで問題がなかったスケーラビリティ問題が増える。AWSインスタンスを横にスケールアウトすれば済むようなサービスならそこまで問題にはならなくて、それ以上の問題が起きるようなケースだ。
などと成長するWebサービスであれば、様々な外部要因に対して変化圧力がかかる。これらの劣化要因を適切に監視し続け、システムに反映する仕事が必要だ。
Webサービスの場合、ビジネスチームと開発チームの間で、トップラインを伸ばす力学が圧倒的に強い場合、このような対処は後手に回りがちだ。ビジネスは成長してなんぼなので、後手に回りがちなのはある程度仕方ないにせよ、それが致命的な遅れをもたらしてしまったら、中長期的な時間軸で見るとビジネスの退化に繋がる。
そうならないように責任を持つ。具体的な役割としては、サービス継続リスクについて目を光らせ、役員間で適切に議論し、ビジネスプライオリティに影響を与える。
つまり、トップラインを伸ばす開発よりも防御の開発を優先しなくてはいけないタイミングを大きなトラブルが起きるよりも先に実現するために牽制関係が存在しなくてはならない(と考えている)。この人が言うならビジネスのブレーキもやむを得ないと責任を持つ役割が必要だ。短期的なビジネス推進にとっての悪役となり中長期の安定成長を下支えるする役割がCTOをはじめとする技術系役員に求められる仕事だと思う。
インターネット以前のソフトウエアは外部要因でのソフトウエア劣化要因が少ない。ネットワークでつながっていないからだし、ローカルネットワークにすることで外部から遮断して劣化しても問題ないようにしてきたからだ。それならば定常的に状況をポーリングし続ける技術担当役員はいらないという話なのかもしれない。
同様の論点で、最近COCOAのアプリがうまく動かなくなった問題で話題になっているが、一度リリースしたネイティブアプリを維持するのはとても大変。継続的開発の体制がそもそもなかったようなので論外な体制な感じはあるので、デジタル庁ができたらそこはちゃんとしてほしいと思っているし、大臣もそのような認識をお持ちの発言をされていたので「ソフトウエア資産を維持する」という視点におけるガバナンス体制をしっかり構築していただけると良いと思う。
この記事が気に入ったらサポートをしてみませんか?