プロジェクトエンジニアというロール
を考えてみる。
プロジェクトマネージャーやは良く聞くけど、プロジェクトエンジニアというロールはほとんど聞かない。
それは何故か?
そもそもエンジニアのロールはつくる対象と結びつきが強い。ざっと挙げると
- フロントエンドエンジニア
- バックエンドエンジニア
- iOSエンジニア
- Androidエンジニア
- SRE
等々。
では、プロジェクトエンジニアはプロジェクトをつくるのか? というとやはりちょっと違う。そこで、そもそもプロジェクトとは何なのかから考える。
新しいものを考え出し、実用化するための研究や事業。 「商品開発-」
大辞林
IT系でいえば、何もつくらないプロジェクトというのはかなり例外で、一般的には業務改善だろうが新規サービスだろうが何かしらモノができる。
ここで良く言われるプロジェクトとプロダクトの違いは何か? という話で、プロジェクトは終わらせるのが目的、プロダクトは終わらせないのが目的と言われたりする。
どちらもつくるものがサービスだったりアプリだったりするけれど、とりあえずプロジェクトには期限があるという前提をたてる。
そうすると、プロジェクトマネージャーの責務としては、サービス等を期限までに予算内で高品質でリリースできるようにマネジメントすることになる。
プロジェクトとプロジェクトマネージャーをなんとなく定義できたので、プロジェクトエンジニアの責務は、
1. プロジェクトへのコミット
2.プロジェクトの対象の企画、定義、実装
3. PM、SRE、QA、メンバーのブリッジ
と定義する。
1はまあ当たり前として、2はどういうことか?
プロジェクト初期だと、そもそもつくるモノがぼんやりしている場合が多い。B2BでもB2Cでもヒアリングやインタビューからコンセプトを固める場合がある。プロジェクトエンジニアはもうその段階からコミットし、今までの経験と知識から実現可能性や市場についての見通しについてもアドバイスできなければならない。
つまり、言われただけのモノをつくるのではなく、何をつくるかの段階からコミットできるエンジニアになる。
3については、これはマネジメントでは? という意見もある。
たしかに、この責務は最近だとエンジニアリングマネージャー(EM)というロールが受け持つことが多い。
しかし、スタートアップではEMをプロジェクトごとに配置するのはほぼ不可能と思う。また、プロジェクト横断的にEMがマネジメントするのもありだが、プロジェクはその性格上深いドメイン知識を要求されることが多いので、EMがそこまでキャッチアップするのは大変である。
そのため、プロジェクトのドメイン知識を持ち、要件から実装、テストまで見通せるロールが必要になり、それがプロジェクトエンジニアに該当する。
以上を簡単にまとめると、プロジェクトエンジニアはプロジェクトマネージャーと協力しながら、エンジニアリングチームをリードしプロジェクトを成功に導くロールと言える。
このロールは個人的に考えたものなので、全く一般的ではないが、これからの日本のITの現場ではますます必要とされるロールになっていくと予想する。