私は最近、無駄のない開発チームを構築する方法について多くのことを考えています。最終的には、志を同じくする少数の人々と私自身の小さなソフトウェアハウスをオープンしたいと思います。目標は金持ちになることではなく、健康的な職場環境を作ることです。
これまでのところ、無駄のないチームを次のように定義しています。
- 小さい;
- 自己組織化;
- すべてのメンバーはQAを念頭に置く必要があります。
- メンバーは複数の役割を実行できる必要があります
最後のポイントは、私が少し心配しているところです。マントラが進むにつれて...
開発者は悪いテスターを作ります。
多くの場合、開発者は自分のコードまたは同僚のコードに「近すぎ」て、品質のより高いレベルの評価を行うことを理解していますが、彼らが事実上悪いテスターであるとは確信していません。それどころか、優れた開発者の資質は優れたテスターの資質と非常に重なっていると私は考えています。
これが正しいと仮定して、私は開発者/テスターの問題を回避するさまざまな方法を考えてきましたが、私は実行可能なモデルを考え出したと思います。
私のモデルには以下が必要です:
- 2つ以上のプロジェクトがある小さなソフトウェアハウス
- 開発と配信に対するアジャイル(反復)アプローチ
- プロジェクトごとに1チーム
- すべてのチームメンバーはソフトウェア開発者になります
- 彼らの職務記述書には、開発、品質保証、テスト、および提供が責任として明確に記載されています
これらの前提条件がすべて満たされている場合、プロジェクトは次のように編成できます(この例では、2つのプロジェクトAとBを参照します)。
- すべてのチームメンバーが開発者の役割とテスターの役割を交互に行います
- チームメンバーがプロジェクトAの開発者である場合、チームメンバーはプロジェクトBのテスターになります
- メンバーは、一度に1プロジェクトで作業しますので、として機能することが期待されているいずれかのDev やテスター。
- ロールサイクル(二つの異なるプロジェクトで、再び)Devのような3回の反復及びテスターとして2反復で構成されてい
- プロジェクトチームには、常に3つの開発者と2つのテスターがいます。
- メンバーの役割サイクルは、1反復だけフェーズがずれている必要があります。
- これにより、チーム変更の突然の発生を最小限に抑えることができます。各反復で、2つのDevsと1つのテスターが前の反復と同じままです。
上記を考えると、次の長所と短所がわかります。
長所
- 会社全体にプロジェクトの知識を配布します。
- チームメンバーが記述に役立つコードをテストしていないことを確認します。
- フェーズが異なるロールサイクルとは、100%メンバーの切り替えを行うプロジェクトがないことを意味します。
- 交互の役割は退屈なプロジェクトの単調さを壊します。
短所
- 両方のプロジェクトのイテレーションは密接に結合されています。1つのプロジェクトが途中でイテレーションをキャンセルして再開した場合、2つのプロジェクトは同期しなくなります。これは、役割サイクルの管理を困難にします。
- 開発者を採用する際のヒンジは、テスターとしても活躍しています。
このアプローチについて友人や同僚と話し合ったとき、私はさまざまなレビューを受けました。一部の開発者はこのような役割を代替したいと考えていると信じていますが、他の開発者は個人的に試してみたいと言っています。
だから私の質問です: そのようなモデルは実際に機能するでしょうか?そうでない場合は、作業モデルに調整できますか?
注: 簡潔にするために、私はDevおよびTesterの役割のみに焦点を当てました。必要に応じて、他の役割について詳しく説明します。