見出し画像

僕たちの作るプロダクトは、10年先も価値を届けられるだろうか

『起業とは崖から飛び降り、落ちるまでに飛行機を組み立てるようなもの』とよく言われている。

キャッチーで覚えやすいし腹落ちする例えだ。飛行機を作るのがどこまでを指しているか怪しいが、飛び立ったと言えるのはPMFくらいまでだと思っている。一番最初の一番大きな難関を抜けた所だろう。

この、やっと飛び始めたばかりの生まれたての飛行機はどこまで飛んでいけるだろうか。乗客が増え、地上の関係者も増え、要望も、機能も増えていくだろう。最初は2人乗りだった飛行機に無理やり客席を増やしたりVIPルームを増築しているかもしれない。
乗客が増え、増改築された飛行機はそのまま飛び続けられるだろうか?

僕たちの作っているプロダクトもリリースから10年経ち、ユーザーが増え、増改築をしながら開発が続いている。0→1の時に書かれたコードも残っていて、今も飛び続けている。
開発者は作業ベースでは、要望を受けて機能追加や改修を行うが、増改築することが目的ではない。より良い価値を届けられるプロダクトを作り、更にそれを安定して継続的に届けていかなければならない。安全で快適な飛行機を作り、より多くの人を乗せ続けないといけない。

飛んでいる飛行機に機能追加するのはなかなか難しいと思う。新しい客室を増やした瞬間に別の機器に影響が出るかもしれない。エンジニアリングの話をすると、SRE(サイト信頼性エンジニアリング)はこういった影響を下げ、更に遠くまで飛べるようにリードする役割だと思っている。専門職として切り出されてはいるが、サービスを作るアプリケーションエンジニアも同じ視点がないと機能追加により即墜落するリスクも考えられる。そういった意味で、『システムを作るのではなくプロダクトを作る開発組織にしたい』と思っている。
リファクタリングの観点でも、より遠くへ、より安全に、より早く、という目で見るとリファクタリングしたくなる場所が変わるような気もする。

『Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセス』の1章では『ソフトウェアエンジニアリングとは時間で積分されたプログラミングである』と説明されているが、この時間の概念が大事だなと改めて思う。積分するだけであればどんな機能を増やしてもプラスになってしまいそうなので注意は必要そうだけど。

話をタイトルに戻すと、
僕たちの作るプロダクトは、10年先も価値を届けられるだろうか?

機体自体を変える必要があるかもしれないし、複数の機体に分散する必要もあるだろう。システム全体のリアーキテクチャもこういった観点で行われていくだろう。
自分自身が10年先に同じことをしているか自体も怪しいが、この飛行機が10年先も、その先も飛び続けられるようにしていくことがソフトウェアエンジニアリングの本懐だと信じ、その価値を届けられる仕組みを作っていきたいと思う。

読んでくれてありがとうございます!少しでもいいなと思ったら「スキ❤️」してもらえると飛んで喜びます!シェアしてもらったらもっと嬉しいです!