フルサイクルエンジニアとは
私が「フルサイクルエンジニア」という言葉に始めて触れたのは、『Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち』という本の中でした。
この本の書評は別の記事で書いているので、詳しくは読んでいただくとして、この本の中で、「SREチームを解体し、DevとOpsを同じチームにした」という趣旨のことが書かれてありました。
ざっくりいうと、フルサイクルエンジニアとは、企画・要件定義〜運用までのプロダクト・ライフサイクルのすべてを担当するエンジニアのことです。
注意すべきポイントとしては、
フルサイクルエンジニアはフルスタックエンジニアとは違う概念である
ということです。
フルスタックエンジニアとの違い
フルスタックエンジニアのイメージは、
- バックエンド・フロントエンド両方できます
- アプリケーションもインフラも両方できます
- 新しいサービスを一通り自分で作れます
という感じでしょうか。(MECEではない)
VOYAGE GROUPでは、フルサイクルを重視しているとのことです。「Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち」には以下のようなことが書かれています。
フルスタックというと、一人でプロダクトやサービスをすべて作れることに主眼がおかれていると思います。一方、フルサイクルでは、全部を作れる必要はないけれど、その代わりビジネス的要件を整理するところから一人でできること
- 結局フロントもバックエンドもインフラもある程度触れる必要はある
- フルスタックというほど全領域に長けている必要はなく、理解・協働・指示できるレベルであればいい
- どちらかというとビジネス要件を含めた上流工程からリリースまでと保守運用という工程全般を担える
イメージでいうと、それぞれの技術の深さではなく、担当する時間軸の広さを重視しているということでしょうか。
エンジニア全員フルスタックエンジニア化に必要なこと
単に1人1人の業務領域を増やすだけでは、開発スピードが上がるどころか落ちる一方になり、チームは疲弊していってしまうでしょう。
ソフトウェアライフサイクルで発生するそれぞれの業務の効率化、自動化が必須になります。
スキル底上げのための十分なトレーニングを整備する必要もあるでしょう。
VOYAGE GROUPでも領域が硬直化しそうな人は新しいサービスにアサインするなどの工夫をしているそうです。
YOJOエンジニアチームのこれまでとこれから
フルサイクルエンジニアチームを目指そうと言いつつも、実は、YOJOでは、まだ専門の分化が進んでおらず、基本的には開発者が運用も行っています。
インフラ構成もまだ重くはなく、専門のSRE職というのはないので、DevとOpsの分離が起こっていないという状態です。
ですが、現在すでに10人ほどのチームになっており、今後半年で15人ほどのチームを目指している考えると、
特に個人的に重視したいと思っているのは、
- 全開発者が機能の企画・要件定義・デザイン・設計の段階から入れる
- インフラに強みがあるメンバーであっても、アプリケーションの実装にかかわる
- 全開発者が保守・運用・緊急対応まで責任を持つ
ということです。
以下に簡単に説明していきたいと思います!
1. 全開発者が機能の企画・要件定義・デザイン・設計の段階から入れる
YOJOではインターンのエンジニアも含めて企画・要件定義・デザイン・設計の段階から入ってもらうようにしています。
ちなみに、Netflixの例では要件定義という言葉はソフトウェアライフサイクルに含まれていません。PdMなどがちゃんといて、要件定義はエンジニアチームだけの仕事ではないという認識なのでしょう。
ですが、YOJOでは、薬剤師オペレーションをIT化しているという複雑性などから、エンジニアチームが要件定義にがっつり入る(なんなら主導する)ことを必須と考え、企画・要件定義も全開発者が行うべき仕事と捉えています。
2. インフラに強みがあるメンバーであっても、アプリケーションの実装にかかわる
YOJOでは、まだSREエンジニアがいないので当たり前なのですが(笑)、アプリケーションもインフラも同じメンバーたちが分担して行っています。
今後もSREしかできません(アプリも実装する気概があれば問題はない)という方をメンバーに入れるつもりはありません。
YOJOは、アプリケーション・データ分析・機械学習などが複雑に絡み合うアプリケーションを目指しており、SREにとってもサービスのエンジニアリング的実体を理解していただくことは必須でしょう。
3. 全開発者が保守・運用・緊急対応まで責任を持つ
自分が作ったものは、その機能がきちんと運用されて価値を出すまで見届けようということですね。
どの程度の価値を出したのかの検証も開発者自信がきちんと行うべきと考えています。
また、YOJOではバグ対応や緊急対応もエンジニアチームが持ち回りで行っており、これは、各開発者がアプリケーショの全体感を理解することに一役買っていると思っています。
特にYOJOは、顧客への健康アドバイスなどを薬剤師(CS = customer success)チームが行っており、バグ報告や改善要望はCSチームから上がってくることが多いので、CSチームとの協働のためのCHエンジニアチームを運用しています。 (詳しくは、『CHエンジニアチームを立ち上げました』)
以上、YOJOが目指すフルサイクルエンジニアについて解説してみました。
参考文献
- 『Netflixにおけるフルサイクル開発者―開発したものが運用する』
- 『フルサイクルエンジニアになろう』