私は、会社のWebサイト/ Webアプリケーションの世話をする11名のソフトウェア開発者のチームのマネージャーであり、最大4つの同時プロジェクトと日々のサポートをいつでも実行しています。 11人の開発者の中には、技術的なスキル、役職、経験が混在していますが、チーム構造はフラットで、11人の開発者全員が私に直接報告しています。
チーム全体で1人のマネージャーがいるため、十分に拡張できないことが証明され始めています。あまりにも薄く広がり始めているので、直属部下の数を減らしたい。これを行うと私が考えることができるすべての方法には、重大な欠点があります。
私が見逃しているこの問題を解決する標準的な方法はありますか?
そうでない場合、他のどのようにしてこの問題を解決しましたか?
いくつかの簡単な考え:
また、 Agile Manifesto 、特に 12の原則 を常に読んで(再)読む価値があります。
その構造は主にdepend on project specifications
理想的には、チームの上級開発者ごとに3人のジュニアがいる必要があります。その結果、ティーチリーダーあたり2〜3人の上級開発者がいます。
したがって、プロジェクトの進捗状況についてPM=)に報告するのは技術リードのみです。説明されている構造では、技術以外の問題(休暇、休暇、競合など)について、全員がPMにアクセスできます。
比較的成功したソフトウェア開発チームの1つは、プロジェクトごとに、次のようなものの一部になりました:
他の誰もが直接報告したソフトウェア開発マネージャー/シニア開発者/メンター。
それは完璧に機能し、私はその組織を愛していました。一方、私はソフトウェア開発マネージャーであり、チームの組織構造は進化していました。
Functional Staff Organizationパターン に従うことを検討してください。これは、ソフトウェア製品ごとにチームを分割するという2番目のオプションについて話します。
あなたの文脈で記事を引用するには:
機能的組織の最大の強みは、社会的構造をビジネス価値の提供に結びつけることです。私の見解では、ソフトウェアプロジェクトは、サポートする活動の有効性を改善するだけで成功し、ビジネス価値を生み出します。チームを同じように編成することで、ビジネスユーザーの満足を重視するチームが生まれます。
実際の管理/人事構造は、それ以外には関係ありません。
私が見逃しているこの問題を解決する標準的な方法はありますか?
あんまり。それはあなたのチーム、あなた、あなたが何を成し遂げる必要があるか、そしてあなたが会社があなたに提供するどんなリソースに依存するでしょう。
個人的には、最良の種類の切り替えは、技術管理と管理管理を分割することです。両方が得意であることはまれであり、交流する傾向はほとんどありません。
1人が技術的な側面を処理します。何をする必要があるか、誰が行うか、どのように整列する必要があるか。もう1つは管理面を扱います。レビュー、予算会議、製品計画など。次に、協力して、一方から他方に洞察を伝え、統一されたフロントを提供します。
これがどのように分割されるかは、いくつかの異なる方法で実行できます。最も一般的なのは、エンジニアリングマネージャーを管理者側に、アーキテクチャーを技術者側にすることです。彼らは仲間であり、ディレクター/ VPに報告します。
私が見たもう1つの仕事は、エンジニアリングマネージャーを管理者にして、チームリーダーが技術者として行動することです。これはトリッキーであり、レポートが階層的である場合でも、適切な人々が(ほとんど)ピアとして行動する必要があります。
特定のシナリオでは、2〜3つのチームを用意し、テクニカルリードに技術的な側面を任せて、管理に集中することをお勧めします。はい、実際にコードを作成しているリードから時間を短縮しますが、(良い仕事をしている場合は)より若い開発者をより効率的/生産的にすることで、その時間を取り戻す必要があります。また、実際のプロモーションでも、彼らのモチベーションと達成感を提供します。そして最も実際的には、それは新しいポジションを開くよりも経営陣への販売が容易です。