私の会社がはるかに小さかった昔、開発作業をチームに分割することは非常に簡単でした。
- 「アプリケーション」チームはアプリケーション固有のロジックを開発しましたが、多くの場合、特定の業界の問題に関する深い洞察が必要です)
- 「ジェネリック」チームは、すべてのアプリケーションに共通/ジェネリックな部分を開発しました (ユーザー インターフェイス関連のもの、データベース アクセス、低レベルの Windows のものなど)。
何年にもわたって、チーム間の境界があいまいになりました。
- 「アプリケーション」チームは、アプリケーション固有の機能を「汎用」部分で作成することが多いため、「汎用」チームにその部分を作成するよう依頼する代わりに、開発をスピードアップするために自分で作成します。次に、「ジェネリック」チームに寄付します
- 「一般的な」チームの焦点は、より「保守志向」であるようです。すべての「非常に一般的な」コードは既に作成されているため、新しい開発は必要ありませんが、アプリケーション チームから寄贈されたすべての機能を継続的にサポートする必要があります。
これはすべて、チームを分割することはもはや良い考えではないことを示しているようです。おそらく、「汎用」チームは、「ソフトウェア品質」チーム (高品質のソフトウェアを作成するためのルールを定義および保護する) または「ソフトウェア展開」チーム (ソフトウェアの展開、インストール方法を定義する) に進化する必要があります。 .
異なるアプリケーションがある場合、異なるチームにどのように作業を分割しますか?
- 誰もがジェネリック コードを書き、それを中央の「ジェネリック」チームに寄贈できますか?
- 誰もがジェネリック コードを書くことができますが、誰もこのジェネリック コードを「管理」していません (誰もが所有者です)。
- 汎用コードは「汎用」チームによってのみ作成され、アプリケーションは「汎用」チームが汎用部分を提供するまで待機する必要があります (ライブラリ経由、DLL 経由)。
- 異なるアプリケーション間でコードが重複することはありません
- 他の方法?
ミックスを使用すること (誰もがコードのどこにでも記述できるようにすること) の利点は次のとおりであることに注意してください。
- コードはより柔軟な方法で記述されます
- デバッガーで「汎用」コードに簡単にステップ インできるため、コードのデバッグが容易になります。
しかし、大きな (そしておそらく唯一の) 欠点は、この汎用コードを管理する明確なチームが存在しなくなった場合、この汎用コードが誰の責任にもならない可能性があることです。
あなたのビジョンは何ですか?