見出し画像

技術選定にあたって

こんにちは。アイスタイルでエンジニアをしている佐渡です。

前回、アイスタイルのシステムに積み上がっている技術的負債の話をしました。これからその技術的負債を返済していかなければならないのですが、それにあたって「技術選定基本方針」を定めた時の話をしたいと思います。

何が問題だったか?

これまでも、アイスタイルではその時々で新しい技術を採用したり、検証してみたりということは行われてきました。言語だけを見てみても、PHP、ruby(on rails)、java、scala、Go、JavaScript(node.js)など様々な言語が使われています。しかし、部署ごとに利用している言語がバラバラで異動や引き継ぎの際の障害になったり、その後の改修の障壁となったり、アップデートの障壁となったり、と見事に負債として積み上がっていました。

いろいろな技術を適材適所に使い分けることとは重要なことですが、今の運用では大変になるばかりで、開発もままならない状態に陥りかねない危険がありました。

技術を選定する

そこで、アイスタイルでは、各技術を選定するにあたっての基準やガイドラインを定めようと考えました。とはいえ、言語一つとっても基準やガイドラインを定める上での判断基準はいろいろあります。決めるにあたって、我々にとってどの判断基準が重要なんだろう?という疑問が出てきます。そこで、まずはどのように技術を選定すべきかを明確にするために「技術選定基本方針」を定めることにしました。

例えば、スタートアップならスピードを重視し、「開発速度を重視した技術選定を行う」という基本方針になるかもしれません。また、銀行などではセキュリティや正確な処理ができることを最優先にするかもしれません。

どんな方針?

それでは、我々がどのような基本方針を定めたか紹介したいと思います。方針は3つあります。

一つめは、「事業との一体感のある開発ができる開発フローを選定する」です。これまでは、新規開発を重視するあまり、リファクタリングなどの保守に手を割けず、結果として機能追加にかける開発工数が肥大してしまったり、障害が起きてしまい対応に手が取られてしまうということが度々発生していました。こういった状況をエンジニアのがんばりで乗り切っていましたが、エンジニアが疲弊しモチベーションが下がる原因となってしまいます。また、開発している機能の事業における意図があまり伝わっておらず、これもモチベーションが上がらない原因になっていました。エンジニアも事業を理解できる環境がモチベーション向上にも繋がると考えこのような方針を定めています。

二つめは「個人としても組織としても成長できる技術を選定する」です。エンジニアのモチベーションを維持するには、事業的な成果を出すとともに、個人として成長している感覚が重要だと思います。これまでは、レガシー化した技術を使ったサービスの保守などが多く、エンジニアが成長している感覚をなかなか持てていなかったようでした。そのような状況なので、積極的に社外の勉強会に出たり、発表したりという雰囲気も少ないです。これからは、個人として成長を感じられる技術を採用していくとともに、組織としての技術力をマネジメントし、成長していくためにこの方針を定めています。

三つめは「最適技術を積極的に採用できるように、調査・検証・運用体制を整える」です。ちょっと方針というよりは何をするかという感じになっていますが、込めた思いは、このタイミングで色々決めたとしても、それをきちんと運用できないと、また元の状態に戻ってしまう。そうならないように継続的に基準やガイドラインを改善してかなければならないということです。

おわりに

以上が、「技術選定基本方針」となります、ちょっと抽象的な表現もあるので、これをブレイクダウンしていき、各技術の選定基準やガイドラインを定めるための指針にしていきたいと思います。

アイスタイルでは、美容関連のメディアやECサイト、またコスメ販売の店舗なども運用しており、生活者中心の新しいビジネスを作ろうとしています。興味を持たれた方はぜひこちらからご連絡ください。お待ちしております。

この記事が気に入ったらサポートをしてみませんか?