PM?PMO?SE?PG?

人材募集などを見ていると、PM、PMO、SE、PGが全て混ざった募集を見かけます。何だったらプロジェクトマネジメントからプログラムまですべてやって欲しいというような募集まであります。PMOに至ってはProject Management Officeという略語からもわかるように、部門を指す言葉なのに人として募集されていることもあるようです。これらの専門域の違いは何でしょうか?

私は元々ゲーム業界に関わっていましたので、そことも照らし合わせながら私の考えを述べたいと思います。

プロジェクトマネージャ(PM)

事業を立案し、開発チーム・営業チーム・運営チームとともに事業を成功させるために行動する人。各部署との連携や予算管理も行う。利益の最大化を目指し「売る人」。ゲーム開発でいうプロデューサー。複数のプロジェクトの兼任もよくある。

開発ディレクター(D)

プロジェクトに必要なソフトウェアの開発部分について開発計画を立て、開発がスムースに進行するように進捗管理や関係部署との連携を行う。ゲーム開発におけるディレクター。開発に集中するため、この職で兼任というのはゲーム業界では見かけない。PMやリードプログラマにこの役割もやって欲しいという募集をよく見かけるが、開発ディレクションのみ(ディレクター)の募集は見かけない。ソフトウェア開発では高い視点から関連部署との連携が必要となってくるのですが、リードプログラマにそこまでやらせるのは酷だと思っています。

システムエンジニア(SE)

作成するソフトウェアが何を満たしているべきか要件を定義し、ソフトウェア作成のための技術的な資料(仕様書)を作成し、プログラマたちに作成してもらう。建築で言う設計図を書く立場。PMに要件定義や仕様書作成までやって欲しいという募集をよくみかけるが、技術的知見が必要なので、専門域としては別になる。特定のプロジェクトの仕様書を書くのではなく、複数のプロジェクトに横断的に技術的アドバイスを行うような立場になると、テクニカルディレクターと呼ばれていた。

プログラマ(PG)

仕様書に従いプログラムをする。近年日本ではSEとPGが同じ意味で使われてしまっている。SEにプログラムまで求めたり、逆にPGに設計業務まで求めたりする募集が結構ある。建築で設計図書く人と現場で実際に建築する大工が同じ人というレベルでおかしな話になります。家建てながら設計図描くのはやめたほうが良いかと。

何故こんなに兼任が発生するのか?

「何故このように分けるのか?」「人数が少ないほうがコストが安くつくのではないか?」と思うかもしれませんが、そもそも何でもできるスーパーマンは殆どいません。あたり前ですが、兼任してしまうと時間がいくらあっても足りず、結果、成果を上げるまでの時間が延びていくだけと考えます。1人のスーパーマンに何でもかんでも全部やってもらうというのは日本的な考え方のように思えますが、その人が倒れたり転職した場合にはどうなってしまうでしょうか?
海外ではどうなっているのか気になったので調べてみました。

海外では?

Adobeさんのキャリア募集の内「Engineering and Product」のカテゴリで募集されているProfession(専門域)について。
・Engineering
・Engineering Program Management
・Product Management
・Product Security Engineering
・Product Service Engineering
・Software Development Engineering
・Software Quality Engineering
・Systems Design Architecture
と、カテゴリだけでも日本よりも細分化されており、このカテゴリの中にさらに職種が分かれていました。ゲーム業界と変わりないようです。

日本で言うSystem EngineerはSystem Architecture Engineer(システム構成エンジニア)と呼ばれているようです。Programmerという単語もなく、Software Development Engineer(ソフトウェア開発エンジニア)となっているようです。日本では多くの人材募集でSystem Architecture EngineerとSoftware Development Engineerが分けられていないようで、人材を募集する側も用意する側もその違いを理解していないように思えます。そもそもSystem Engineerは和製英語だとか。

海外では1人のスーパーマンよりも、業務を細分化することで自分の守備範囲を明確にし、社員が転職した際の影響範囲の最小化を図っているように思えます。アメリカでは2~3年で次の職場に転職しキャリアアップを図るのが普通と聞いたことがあるので、チームメンバーが抜けるのが前提で役割分担がされているようです。

業務の分割を

事業の規模にもよりますが、PMは関連部署やクライアントとの調整、宣伝・営業活動等で忙しく、開発の細かい仕様相談や指示出しまで面倒を見ている時間は無いはずです(時間があるんだったら別の事業計画を立て、会社の利益を増やすべき)。それでも面倒をみるとすると、一人に業務が集中した結果中々返事がもらえない、しかもこの人が一番偉いので返事がもらえるまで作業を進めるわけにもいかないということが発生しそうです。

SEは設計時にはフルタイムで仕様書を描き、開発時は仕様の不明点の問い合わせ対応や仕様変更に伴う資料の修正等でそこそこ忙しく、弊社もそうですが仕様を知っている人にテストしてもらった方が安心ということでテスト仕様書を書いたり、テストに参加したり、テスト用のデータを作成したりで、開発期間中にプログラムをする時間など本来ないはずです。ただ、ソフトウェアの完成形は把握していますので、そこに向かって各チームに指示を出していくディレクター的な立ち回りは可能かと思います。

プログラマはプログラムに集中するべきだし、局所的に自分の担当範囲しか見てませんので視点が低く、SEのように視点を高くして横断的に仕様の影響範囲を把握しつつ設計することはできません。(過去、PGがSEの私に無許可で作成したものがトラブル起こしたという経験もあります。)

分業化が進んでいる海外のソフトウェア業界や、日本含めたゲーム業界と比べて、日本の一般的なソフトウェア業界は1人のエンジニアになんでもかんでもやってもらいたいという想いがあるようで、その想いに応えるには時間がいくらあっても足りないし、ソフトウェア業界はブラックと言われる所以でもあるのかなと感じます。職責は重い、時間はないという中で成果を求められ、心を病んでしまう人も。

PMと開発ディレクター、SEとPGの違いを正しく理解し、プロジェクトに適切に配置することで業務が一人に集中せず、開発がスムースに進行するかと思います。

分業しましょうと言った直後でなんですが、弊社は開発ディレクター兼SE、またはSEとしてプロジェクトに関われればと思っております。PMとPGの間を埋めるSEの活躍で開発をスムースに進めませんか?興味を持っていただけたら是非お問い合わせください。