未経験の技術への取り組みについて


はじめに

本記事はMakuake Product Team Advent Calendar 2018の2日目の記事です。
株式会社マクアケ開発本部マネージャーのkimura-ryoheiと申します。

チーム・個人で扱っていない未経験の技術への取り組みを始める際には、当然ながらうまく導入を開始したいという考えが生まれます。マクアケでもそれは同様で、導入のたびにうまく導入するための努力をしてきました。今回は、直近で未経験の技術への取り組みを行う際に、意識したことをまとめます。チームで行った取り組みと個人で行った取り組みの両方について、大きく以下の3点について意識をしていました。「素早い知識浸透」「未経験領域でもできるアウトプット貢献」「リリースの際のリスク軽減」の3つです。これらを具体例も踏まえて書かせていただきます。

素早い知識浸透

モブプログラミングの活用

モブプログラミングの詳細については割愛します。概要としては、一人のドライバー(PCを操作する人)の書いているコードを見ながら、周りを複数名のナビゲーター(ディスプレイを見ながら指示を出す人)が囲み、ドライバーに対して適宜指示を出すことで、一つの機能を全員で一気に実装する仕組みです。弊社ではjQueryを主に使っていた環境に対して、新しくVue.jsを導入したいという流れになり、その導入時にモブプログラミングを行ったのが最初でした。モブプログラミングの効果の一つとして知識共有の高速化があり、未経験の技術の知識を参加メンバー全員に早く浸透させることができました。

方針を考えるところから一緒に議論

現在、弊社では新しくマイクロサービス化に取り組んでおり、その一環として実装の方針を週一回定例の時間を設けて議論しています。具体的な例としては、システムの分割とチームの分割について議論しました。マイクロサービス化後のシステムの形に合わせた組織の分割をしたいという考えのもと、チームの役割分担や進め方に関わるメンバー全員で議論やすり合わせを行いました。方針策定の時点からメンバーを巻き込むことで、同じ知識・目線を持った上でマイクロサービス化を進めていけると考えています。

定期的な勉強会で一緒にインプット

前述のマイクロサービス化の取り組みの中で行っていることです。マイクロサービスの理解に必要と思われるキーワードを挙げ、担当者設定の上、毎週発表・質疑応答により知識共有・浸透を図っています。こちらは現在も進行中で、最近では“コンウェイの法則”や、“マイクロサービスにとってのDDD”などのキーワードについてメンバーから発表してもらい、議論を行いました。

質問しやすい環境づくり

こちらは筆者がマクアケにジョインした際に、個人的に未経験の技術に取り組むことを経験しており、その中で経験的に良かったと思うことになります。未経験の技術に取り組む際には一人で取り組むことも重要ですが、同時に誰かに質問をしながらすすめることも重要です。この領域の質問は誰にすればよいのかが明確になっていると、質問がしやすく効率的に技術理解を進められたと感じています。そのためには、質問してもいいんだという心理的安全な環境を作っておくことも重要だと思います。質問のやり方についても、直接口頭で話したほうが早いことも多く、相談・回答できる相手を近くの座席に配置することも効果的でした。

経験者のサポート

これはマイクロサービス化の取り組みでも、前述の筆者の経験からも重要だと感じました。当たり前のことではありますが、未経験者を経験者がサポートすることはとても重要です。界隈に知れ渡っているベストプラクティスなどを取り入れることで、無駄な失敗を減らすことができます。チーム内に経験者がいなければチーム外から招くことも選択肢に入れることが大事です。弊社では、実際にマイクロサービス化の際に、社外のマイクロサービス化経験者をお招きし、マイクロサービスについての知見を伺いました。

未経験領域でもできるアウトプット貢献

技術領域に依存しない知識の活用

こちらも筆者の経験から重要だと思うことになります。例えばプログラムの設計知識(疎結合にする、抽象化するなど)は、言語や技術領域に依存せずに使えるので、新規技術領域だとして品質向上に貢献できる可能性があります。ある技術領域の未経験者が過去の知見から、既に経験者によって作られたプログラムの改善を提案することもありうるということです。この際、ある技術領域の未経験者の発言だからといって、経験者がその発言を軽視するようなことがないようにしましょう。

リリースの際のリスク軽減

ビッグバンリリース回避

こちらはVue.jsの導入時に行いました。大規模に一度にリリースをするのではなく、小規模なリリースを複数回行う方針を取るということです。弊社の例ですと、Vue.js導入時に、まずは新規ページを一つだけVue.jsを用いて作成し、そこで成功例を作りました。その後に既存のページの置き換え等の大きめの変更にも着手、リリースを進めました。これらの後、今では新規ページは基本的にVue.jsを使うようになっています。

まとめ

以上、マクアケが未経験の技術に挑戦する際に行っていることをまとめました。大きく3点、「素早い知識浸透」「未経験領域でもできるアウトプット貢献」「リリースの際のリスク軽減」について意識をしています。今後もマクアケでは未経験の技術も取り入れながら、サービスをより良くしていきます。
また、一緒に「世界をつなぎ、アタラシイを創る」エンジニアを募集しております。ご興味持っていただけた方はぜひ一度、「各種エンジニア募集! クラウドファンディングMakuake」からご連絡いただければと思います。