こんにちは。Greenエンジニアチームの櫻井が担当します。
Greenに異動してちょうど2年になるので、今回は日頃Greenのエンジニアチームの中で意識していることを書こうと思います。
改めてですが、Greenはリリースして15年以上経つ転職サイトです。
Webサービスとしては比較的、息の長いサービスになっていて、改善の繰り返しの上に今のサービスが成り立っています。
これからもグロースするべく様々な企画や開発を行っていきたいと思っています。
しかしながら、既存のシステムを維持しながらそのような改善を進めていくことは簡単ではありません。
ソフトウェアなので簡単に変えられると思いがちだと思うのですが、変えられ続ける土壌を作ることが決して簡単ではないと言うのがこの2年での気づきです。
Webサービスのハードウェア化はすぐそこに
エンジニアとしてプロダクトを作る上で重要視すべきことは何でしょうか。
一つはわかりやすく貢献できていると感じられる何らかの機能を開発することでしょうか。それとも、発生した不具合・バグを早急に修正することでしょうか。
僕自身の考えとしては、一番責任を持つべきことはプロダクトがソフトウェアであり続けることだと思います。
ソフトウェアとは文字通りソフトなウェアであり、それが意味することは簡単に変更ができることだと思います。簡単に変更できないものはハードウェアだと思います。
様々な機能の開発やバグの修正は価値を提供しているものとしては非常に意味のあるものですが、それらが簡単に変更できるものという意識を持たずに作り続けるとそれは少しずつ同じような開発量でも開発リソースは大きく取られることになります。
ジェンガをイメージするとわかりやすいかなと思います。
段々と開発がしづらくなり、データ構造やロジックの複雑さからそれは変更することが難しくなり、ハードウェア化してしまうということはプロダクトを作り続ける上で発生しやすいものだと思います。
そして、この変更が難しくなることはIT企業にとっては致命的なことだと思います。
このようなソフトウェアであり続けれるかどうかの評価をビジネスサイドのメンバーがすることは非常に難しく、エンジニアが責任を持つべき要素だと思っています。
自分たちが価値あるプロダクトを作りたいと思っているからこそ、ニーズや市場に合わせた機能を提供したい要望と天秤にかけた正しい意思決定が必要だと思います。
変わり続けるために努力すること
では、ソフトウェアであり続けるために意識することは何なのでしょうか。
変更を容易にするための戦略は、できるだけ長い期間、できるだけ多くの選択肢を残すことです。
この一文だけを読むと、とても当たり前のことを言っているように感じるのですが、システムを適切に動作させることが最も重要と考えているプロダクトを作る上で、できるだけ多くの選択肢を残す方法を取ることを共存して考えることは非常に難しいです。
なので、毎回意識しなくとも自然とできるだけ多くの選択肢を残す方法を取れる構造・設計をすることが重要であり、その大前提が担保された状態で機能を開発していくという道筋がソフトウェアであり続けるために必要なことと考えています。
そうなった場合、ありとあらゆる選択肢を残すべきなのかという話になってきますが戦略上、集中すべき時もありますので、常にあらゆることを選択肢を残し続けることは難しいでしょう。
では、どういった選択肢を残し続けるべきかでいうと、自分たちが届けたい価値や重要な意思決定に影響しないものだと思います。(本来影響すべきでないという表現の方が正しいかもしれません)
自分たちが新たに価値があると思った機能を作る際に使用しているデータベースだとその機能は作れません。みたいな事象を避けることだという風に考えています。
何か自分たちが方針立てをした際に極力その意思決定に不要な影響を与えないように選択肢を残し続けること。これが変わり続けるために必要なことだと思います。
それはプロダクトも組織も個人も変わらないことなのでは?
プロダクトの話がだいぶ続いてしまいましたが、こういったプロダクトの作り方を考えることを通して、感じたことは個人・チーム・会社においても同じことが言えるのではないかということです。
引用するには、あまりに有名過ぎるダーウィンの「変化し続けられるものが残る」という言葉を是とすると色んなことに転用できそうです。
自分たちのチームが担っている役割を意識する余り、市場や事業の大きな変更に耐えきれないことや理想のチーム像はあるが、今のチームの雰囲気が影響し、中々変化ができないこと。
個人ならば、自分ができることや貢献できることに固執し、貢献するべきこと・自分が成し遂げたいことの阻害要因となっていないか。などなど、考え始めれば結構キリがないなと思いました。
今回は2年間Greenを作る上で意識していることを書きましたが、結果的にはプロダクトだけに通じるものではないと気づきました。
自分たちが成し遂げたいことや重要な意思決定を実行するために戦略的にあらゆる選択肢を残せるようにしようということとプロダクトは意外と機能作るってことだけではないということが伝われば幸いです。
最近のコメント