チーム内で交通整理する「システムディレクター」とは?
はじめに
はじめまして!レバテック開発部でシステムディレクターをやっています柴﨑です!
普段はレバテックサービスにおける社内SFA(営業支援システム)の開発ディレクションを行っています。
突然ですが、みなさん「システムディレクター」と聞いて何をしている人か想像できますか?「システム開発において色々やってる人」といったなんとなくのイメージはつくかもしれませんが、具体的に〜〜をしている人と説明できる人は少ないかと思います。
今回、レバテック開発部で唯一のシステムディレクターとしてやってきたことをまとめることで、システムディレクターへの理解が少しでも深まればと思います!
対象読者
- システムディレクターと一緒に働いている開発メンバーの方
- システムディレクターになったばかりの方
- これからシステムディレクターにチャレンジしたいと考えている方
- 開発組織/チームにシステムディレクターが必要かどうか悩んでいる方
TL;DR
- システムディレクターはシステム開発のディレクションを行う。
- システムディレクターはプロジェクトマネージャーとは異なり、開発計画の実行にコミットする。
- システムディレクターがいることで、開発組織が成長する
そもそもシステムディレクターって何するの?
システムディレクターのやることは「システム開発のディレクション」です。と言ってもピンときませんよね。私なりの解釈としては、directorが"監督"と訳されるように、プロジェクトの方向性や舵を決めてシステム開発に関わるメンバーに指示を出し、プロジェクトの成功や成果物の完成を目指して監督していくことだと考えています。現場によって多少異なると思いますが、一般的には下記のような業務を行うと言われています。
- 開発手法の考案・提案
- 開発スケジュールの管理
- 開発タスクの優先度管理
- 開発メンバーの管理
- システム仕様の品質管理
- クライアント折衝
これらの業務を行っていくために、技術面、マネジメント面、コミュニケーション面のスキルが求められます。
システム開発における他職種との違い
そういえば、システムディレクターとは別に「プロジェクトマネージャー」という職種もありますよね。むしろプロジェクトマネージャーの方が馴染みがある人は多いかと思います。「システムディレクターとプロジェクトマネージャーは何が違うか」は分かりますか?私自身もエンジニアに成り立ての頃はよくわかっていませんでしたが...
一般的に、システムディレクターとプロジェクトマネージャーは、それぞれ下記のように役割や担当領域が異なると言われています。
- プロジェクトマネージャー
- 【役割】 プロジェクト全体の完遂にコミットします。
- 【担当領域】 プロジェクトマネージャーは上図のように様々な観点でプロジェクト全体の進捗状況を管理し、QCD(品質・コスト・納期のバランス)を調整しながら、決められた期日や予算などの制約の中でプロジェクトを推進していきます。
- システムディレクター
- 【役割】 プロジェクトにおける開発計画の実行にコミットします。
- 【担当領域】 対してシステムディレクターは、顧客の意図を反映した開発を行えるように、より開発タスクの詳細に関与します。加えて、開発メンバーが実装作業に集中できるように、タスクやスケジュールを調整して現場の開発進捗を管理します。
また、他にもよく似た職種として「WEBディレクター」という職種がありますが、こちらはWEBサイトのCVR向上などを目的として、WEBサイトのディレクションを行う、どちらかと言うとWEBサイトを企画/制作/運用する職種であり、システムディレクターともまた異なる職種です。
どうして「システムディレクター」に対して馴染みがないのか?
システムディレクターの役割や業務内容、他職種との違いを述べてきましたが、そもそもなぜシステムディレクターに対してあまり馴染みがないのでしょう?
私が思うに、多くの現場では人員不足などの理由から気付かないうちに開発リーダーやチームリーダーがシステムディレクターの役割を兼任していることが多いからかと思います。現に、レバテック開発部でも他の開発チームではシステムディレクターというポジションを設けておらず、システムディレクターの役割も兼任しているリーダーが数多くいます。
「チームリーダーが自チームの開発進捗を管理するのは当たり前だ」とおっしゃる人もいるかと思います。この「リーダーが開発進捗を管理するのは当たり前」という考えが、開発チームにシステムディレクターというポジションが設けられず、世間的にあまり馴染みがない理由かと私は考えています。
では逆に、開発進捗の管理をリーダー以外の人に委譲してはいけないのでしょうか?
リーダーが開発進捗を把握できる状況をシステムディレクターが整えれば、開発進捗の管理自体は必ずしもリーダーが担う必要はないと私は思います。というのも、チームリーダーは、前述の「開発進捗の管理」に加えて下記のような業務も担っていると思っています。
- 開発メンバーの育成や評価
- 開発チーム文化の醸成
- 携わっているプロダクトの中長期的なロードマップの策定
- 他の開発チームとの調整(人員配置など)
- 開発プロセスの見直し&最適化
これらの業務を一人のリーダーが担うのは大変ですよね。リーダーの負担を減らすためにシステムディレクターを専任で立てて、システムディレクター自身もリーダーと責務を分けて活躍することができ、それぞれが本来やるべきことに集中することで、回り回って開発組織の成長に繋がるだろうと私は考えます。
やってきたこと
私が携わっている開発チームでは、レバテックサービスにおけるフリーランス支援事業と正社員就職支援事業の営業活動を支援する社内SFAの開発と運用/保守を行なっています。
10個以上の外部システムと連携している社内SFAは、一つのシステムが担う責務が多すぎることもあり、事業単位で開発チームを細分化しました。そのうち正社員就職支援事業にかかわる開発チームのシステムディレクターとして下記のことをやってきました。
- 営業部や企画部からの開発要望の相談窓口
- 開発要望の優先度管理
- 開発要望の要件定義&設計&成果物のテスト
- 開発ドキュメントの作成&整理
- リリース調整など開発組織外の人との調整
- チーム外からの問い合わせ対応(調査依頼や仕様相談など)
おわりに
開発組織に所属しつつも実装作業をやらない職種ですが、自分がシステムディレクターとして関わることによって、リーダーやメンバーが本来やるべき業務に集中できる環境を作っていきます。チームを改善して課題解決のスピードが速くなり、チーム内外から感謝や賞賛されてシステム開発に貢献していると実感できるのはシステムディレクターならではのやりがいだと思います!
ただ業務上、チーム内外を問わず人との調整業務が非常に多く、その人その人に合わせたコミュニケーションをとって合意形成していくことが大変で、いまだに苦労してます、、、
その際にコミュニケーションで意識していることについては、また別の機会に書こうと思います。
ここまで読んでくださり、ありがとうございました!
参考
レバテック開発部の公式テックブログです! レバテック開発部 Advent Calendar 2024 実施中: qiita.com/advent-calendar/2024/levtech
Discussion