フルスタック・フルサイクル・プロダクトエンジニアの整理
近年、「フルスタックエンジニア」という職種名で採用募集を行う企業が増えています。一方、フルスタックエンジニアの求人票の中には、実際にはフルサイクルエンジニアやプロダクトエンジニアの役割を求めるものも混在しています。
ここで改めて、それぞれの職種の役割や責務について整理してみましょう。
フルスタックエンジニアについて
フロントエンド、バックエンドを中心に、ソフトウェア開発で必要な複数の技術領域を1人格で担当できるエンジニアを指します。1エンジニアが複数領域を持つことで開発工数を削減できることもありますが、1人格で見ることによりシステムを最適化して技術的な問題を解決しやすいことが特徴です。
フルサイクルエンジニアについて
ソフトウェア開発のライフサイクル全体にオーナーシップを持つエンジニアもしくはチームを指します。ライフサイクルには設計、実装、テスト、デプロイ、運用、サポートが含まれます。2018年にNetflixの開発チームがブログにて提唱したのがフルサイクルエンジニアの起源で、開発と運用の分業によるサイロ化が課題でした。DevOpsの原則「開発したものが運用する」というアプローチを用いて、効率的な学習とフィードバックにより開発と運用のスピードと品質を向上させます。
プロダクトエンジニアについて
ソフトウェア開発の中心にプロダクトの提供価値を置き、価値向上のためにあらゆる手段を用いて開発するエンジニアもしくはチームを指します。技術的にはインフラやバックエンド、フロントエンドなど広範囲にフルスタックのように振る舞いますが、顧客体験を左右しやすいフロントエンドの領域に強みを持つことが多くあります。またデザインやプロダクトマネジメントの領域へも越境し、優れた顧客体験を生むために仮説検証のループを高速に実験をします。
これらの職種を見るとフルスタックエンジニアからプロダクトエンジニアになるにつれてカバー範囲が広くなっており、後者になるにつれて難易度が高くなるように見えます。しかしながら、各職種の関わり方の濃淡が存在することには注意が必要です。フルスタックエンジニアは設計や実装の工程で関わる範囲が深く、フルサイクルエンジニアは開発サイクル全体の広さに役割があり、チームでサイクルをカバーすることも念頭に置く必要があります。プロダクトエンジニアはプロダクト的な価値に重点を置いているため、難易度の高い技術的な課題はスペシャリストの力を借りることも多くあります。
どの職種もカバー範囲は広くありますが、求められる主たる責務を整理すると各職種の要点が見えてきます。
-
フルスタックエンジニア
- ソフトウェアの開発力に責任を持ち、システム全体の最適化と技術的な問題解決を行う。
-
フルサイクルエンジニア
- 開発から運用までの全ライフサイクルに責任を持ち、安定したシステムの提供と継続的な改善を行う。
-
プロダクトエンジニア
- プロダクトの成功と失敗に責任を持ち、顧客体験を重視した機能開発と迅速な仮説検証を行う。
プロダクトエンジニアの特徴として、プロダクトの成否に関して明示的に責務を持たれていることが伺えます。
プロダクトエンジニアとは?
プロダクトエンジニアがカバーする領域
プロダクトエンジニアは、機能開発の全体にオーナーシップを持ちます。関心を持つ領域はテクノロジーを中心としたUXデザイン・ビジネスの3つです。 Martin Eriksson氏が明示したプロダクトマネジメントの図と同じ3領域となりますが、プロダクトエンジニアはテクノロジーを軸としています。
テクノロジー
一人で一つの機能を実装できる技術力があることは望ましく、これはフルスタックエンジニアのスキルに通ずる部分があります。ドメイン駆動設計などを用いて顧客のユースケースを表現して保守性の高いコードを作ることや、検証のイテレーションを素早く回す開発生産性の高さが必要です。高い技術力があるほど多様なソリューションが考えられ、優れた顧客体験を創出できます。しかし、必ずしも全ての技術を一人で担う必要はありません。技術力が不足している場合はスペシャリストに頼り、技術力を補間して開発を推進する姿勢が求められます。
デザイン
この領域では、プロダクトエンジニアには顧客体験のデザインを中心として取り組む姿勢が求められます。見た目の美しさを追求するにはUIデザインの専門性が必要となるためデザイナーと協力することも重要です。顧客の要求を整理し仮説検証を行うためには、カスタマージャーニーマップやリーン開発などの手法を活用すると良いでしょう。エンジニアがUIデザインに取り組む際には、オブジェクト指向UIや情報アーキテクチャなどの設計手法が役立ちます。
ビジネス
プロダクトエンジニアの最大の特徴は、顧客を高い解像度で理解し、その理解をもとに優れた体験を生み出すことです。顧客の実際の現場状況、業界の商慣習、ビジネスモデルなど、知るべき事柄は広範囲にわたります。これらの情報を俯瞰的に整理し、中長期的な発展を見据えたプロダクトを構築します。顧客理解を深め、ビジネスの文脈を踏まえた上で、顧客とビジネス双方にとって価値あるプロダクトを提供することが求められます。
テクノロジー、デザイン、ビジネスの3領域を統合的にカバーすることが、プロダクトエンジニアの真価です。顧客のニーズに応えながら、ビジネスの成功を支え、高品質なプロダクトを提供することで、事業の持続的な成長を実現します。
プロダクトエンジニアの役割
プロダクトエンジニアは、デザインやビジネスの領域をカバーしてプロダクトの成功のために開発を進めますが、具体的にはどのような役割を担うのでしょうか。プロダクト開発の各プロセスごとに役割を整理していきます。
顧客への関心、利用データの分析
プロダクトエンジニアは、顧客の要望やフィードバックに対して強い関心を持つ姿勢が望まれます。顧客の声を一次情報として直接聴くことで、本質的な課題の理解につなげていきます。また、顧客の利用データを継続的に収集することで、機能を正しく利用されているかを分析することができ、プロダクトの改善施策につなげることができます。
プロトタイプを用いた仮説検証
顧客要望や利用状況に基づいた改善施策は仮説に過ぎないため、検証する必要があります。プロダクトエンジニアとして、素早くプロトタイプを作り顧客課題が解決されるのを検証することも役割に含まれます。新しいアイデアや機能を小規模で試すことで、少ない工数で高速にフィードバックを得て効率的に学ぶことができます。プロダクトエンジニアが仮説検証プロセスを務めることで、迅速なイノベーションと高品質な体験を作ることにつながります。
プロダクト一気通貫での顧客体験のデザインと向上
顧客がプロダクトを通じて課題を解決するには複数の機能が関与しています。機能ごとに分業するのではなく、プロダクトエンジニアとして顧客の利用フローを整理し、一気通貫で優れた顧客体験を設計・実現する役割があります。シームレスで直感的な使用感を提供するためには、技術的な作りにも踏み込んで改善する必要があります。デザイナーと協業して進めることで顧客満足度の高い体験を作ることができます。
プロダクトのロードマップや将来に対する意見の発話
プロダクトエンジニアは、顧客の課題解決を中心に学習とフィードバックを重ねているため深いドメイン知識を獲得することができます。顧客課題や市場動向への考慮と、技術進化やアーキテクチャへの精通、ビジネスと技術の両面を理解しているので、プロダクトロードマップ策定や開発優先順位の決定に対して有用な意見を持つことができます。