こんにちは、サーバーサイドエンジニアの鬼木です。
今年はテックブログ改善委員会の頑張りもありテックブログが盛り上がっているのですが、自分も書こうと宣言して時だけが過ぎてしまったので背水の陣でアドベントカレンダー枠を確保しましたw
今回は私が普段行っているヤプリのプロジェクトリードエンジニアとしての業務について紹介したいと思います。
プロジェクトのメンバー構成
プロジェクトリードエンジニアの業務についてお話しする前に開発部のプロジェクトのメンバー構成について紹介できればと思います。
基本的に1プロジェクトはディレクター、エンジニア、デザイナー、QAのメンバーで構成されています。YappliのCMSやアプリに関する開発プロジェクトのようなユーザーインターフェースが含まれるプロジェクトはこちらのような体制になっていますし、ユーザーインターフェースに直接関係せず技術的負債を解消するプロジェクトだと構成メンバーがエンジニアのみのパターンもありますが基本的にどのプロジェクトにも必ず一人プロジェクトリードエンジニアを立てる形になっています。
プロジェクトリードエンジニアの仕事
それでは本題のプロジェクトリードエンジニアの仕事とはどういったものなのかという部分ですが、主に以下の2つの業務を行っています。
仕様についてディレクターと調整
プロジェクトは発足時にプロジェクトの何をやるのか(◯◯機能の開発 など)は決定されていますがそこからの詳細な仕様決定やスケジュール引きなどはプロジェクト側で進めていく形になります。(※発足からスケジュールが決まっているプロジェクトもあります)
そのためステークホルダへのヒアリング、調査、開発の計画などをプロジェクト内のメンバーで行っていきますがその過程でエンジニア的な視点で仕様策定をディレクターやチームメンバーと協力しながら行っていきます。具体的な例としてはこの機能開発だと2ヶ月かかってしまうがこのプロジェクトで解決したい顧客の課題は◯◯だからこちらの仕様の開発であればその目的を達成しながら実装コストを削減できるので1ヶ月ぐらいでできそう、といったようなやりとりを日々行っています。
技術仕様の決定
ディレクターとの仕様調整の他に開発における内部的な仕様決定・技術選定もプロジェクトリードエンジニアの仕事になります。 具体的な例としては今回の機能開発はスポットで価値のある機能ではあるが将来的な拡張の可能性はまだわからないので拡張性は意識しつつもミニマムな設計で実装する/ファーストリリース以降の拡張が既に見込まれる機能だから多少時間をかけても耐障害性などをより意識したリッチな作りにする、といったようなことを決定していきます。
現在サーバーサイドのチームでこのプロジェクトリードエンジニアをできるメンバーを増やしていこうという形で動いていますが、このようなプロジェクト推進を行うにあたってある程度の経験も必要なのでプロジェクトリードエンジニアとしての実績値が高いエンジニアを補佐・壁打ち役としてアサインし、プロジェクトリードエンジニアをサポートしながらプロジェクトを推進していくことが多いです。
ヤプリのプロジェクトリードエンジニアの特徴
前述のようにビジネスサイドの課題解決とエンジニアリングを一貫して考えることのできるというのが1つの特徴としてあると思っています。
プロジェクト進行において各スポット(1~2週間に1度)のタイミングでPOレビュー(PO: プロジェクトオーナー。プロジェクト推進と責任をもつ5名のチーム)というPOに進捗共有を行って方針の擦り合わせや進行における懸念点の相談などを行う場がありますが、プロジェクトリードエンジニアの立ち位置として顧客の◯◯という課題を解決したくてこういった仕様でこのスケジュールで開発しているということを言語化できている必要があるので技術仕様だけでなく開発の背景のビジネスサイド側の理解も必要になってきます。
こういった特徴があるポジションなのでプロダクト志向を重視するメンバーにとってはエンジニアリングの枠を超えて顧客の課題を解決するということをチームメンバーと一緒に1から考えていけるところが魅力的な部分だと思っています。
最後に
今回はヤプリのプロジェクトリードエンジニアの業務について共有させていただきました。 こちらのプロジェクトリードエンジニアの業務に興味を持った方がいましたら、ぜひカジュアル面談しましょう!