アジャイルを取得
次のことをお勧めします。
同じファイルを編集する
まず、Git(または同様の同時バージョン管理システム)を使用します。同じファイルの異なる部分を編集している限り、競合は発生しません。競合が発生した場合は、競合として明確にマークされます。
Gitを使用せずにマルチ開発者プロジェクトを管理しようとすることは、プリンボウルなしでプリンを作成しようとするようなものです。それは可能ですが、それは非常に速く非常に乱雑になります。
コメントで指摘されているように、Gitは万能薬ではありませんが、自動化されたテストと組み合わせると、確かに大いに役立ちます。
すべての機能をリストする
次に、プロジェクトをユーザーに見える機能に分割します。たとえば、「ユーザーがサインアップすると、メールを受信する必要があります」または「ユーザーはアイテムを追加できます」。ここにすべての利害関係者を参加させます。全員を部屋に連れて行き、みんなに自分の特徴を叫んでもらいます。
これらはユーザーに見える機能である必要があります。実装戦略については後で説明できます。
愚かなものも含めて、インデックスカードにすべての提案を書いてください。リストをすばやく合理化して重複を削除し、すべてのカードを大きなテーブルまたは床に配置します。
必要な追加のカードを追加します。アプリケーションがSMSテキストアラートを送信するとします。あなたはそれを行う方法を知らないかもしれないので、質問があります。カードに「SMSポータルの調査」と書きます。他の大きな未知のものについても同様です。これらは後で解凍する必要があります。これらの機能はおそらく最初のスプリントにはなりません。
次に、カードをグループに分類し、シャッフルし、雰囲気を感じます。これがプロジェクトの範囲です。
計画ポーカー
ポーカーのプランニングに挑戦してください。それでも全員と一緒に、「1ポイント」、「2ポイント」など、「4ポイント」までのすべての開発者カードを与えます。また、「もっと」カード。ポイントはおおよそ1時間に相当します。
機能リストを1つずつ確認します。機能を読み上げると、全員がカードをプレイする必要があります。1人が1をプレーし、別の人が4をプレーする場合、そこにコミュニケーションの問題があります。ある人はこの機能を理解して、他の人とは異なる何かを意味します。話し合いをして、実際に何を意味していたかを考え、カードに書き留めます。
機能が「もっと」であることに同意する場合、その機能は大きすぎます。その機能を分解する必要があります。これを以前と同じ方法で行います。
同意したら、カードに異なる色のペンで数字を書きます。
ポイントは時間よりも優れています
時間の代わりにポイントを使用すると、開発者が頻繁に行う「コード化できる速さ」というマッチョがなくなります。これは微妙な違いですが、かなりうまくいくことがわかりました。
スプリントを作成します
スプリントとは、目標に向かって急に爆発することです。スプリントの長さ、おそらく5または10日を決定します。日数に開発者数を掛け、1日あたりのポイント数を掛けます。
最初は開発者ごとに1日あたり6ポイントを想定します。これは達成可能な数値です。5人の場合、5 * 5 * 6 = 150ポイントです。すべての開発者および管理者と連携して、リストから最大150ポイントの機能を選択します。それがあなたのスプリントです。
収まる範囲を超えて絞らないでください。あなたを含め、長期的に見ると、過度に有望な人は傷つきます。
ここで依存関係を考慮する必要があります。たとえば、環境のセットアップは明らかに最初のスプリントに含める必要があります。これは、全員がいるときに実際に比較的簡単に実行できます。部屋には6つの頭脳があり、すべて「これはこれに依存しています」などと言っています。その後、カードをシャッフルして依存関係を示します。
スプリントを取得したら、何も追加できません。5日間ロックされます。機能クリープは、チームにストレスを与え、士気を傷つけ、全員を遅くします。最終的に、クリープはプロジェクトを停止させます。チームリーダーとして、チームを機能クリープから保護する必要があります。新機能のリクエストが来たら、次のスプリントに追加する必要があります。次のスプリントがすでに満杯の場合は、他のものを取り出す必要があります。
エキストラで絞らないでください。過剰な約束をすると、約1日分の幸せなクライアントが得られ、その後4日間のチームストレスが発生します。
さあ、行きましょう。
カードを配り、誰が何をしたいかを尋ねてください。何が行われているかを完全に把握でき、ゼロに達するポイントをカウントできます。誰が何に取り組んでいるのか、誰が何をしてきたのかを全員が把握できるように、毎日の始めに立ち上がってください。
明確に定義された管理可能な目標の単位として一緒に働く5人または6人の意欲的な開発者は、5日間のスプリントでかなり量の多いものを達成できます。
可視性を維持する
全員がプロジェクトのステータスを確認できるようにしてください。壁にすべてのカードをブルータックします。左側には、まだ作業されていないカードがあります。右側には完成したカードがあります。
開発者がカードに取り組んでいるとき、彼らはそれを壁から取り外して机の上に置きます。これにより、可視性が維持され、人々がお互いのつま先を踏みすぎないようにします。
インデックスカードに代わる技術的な選択肢はありますが、壁にプロジェクトのステータスを大量に紙で表示することに勝るものはありません。
可能であれば、プロジェクトの期間中、全員を同じ部屋に入れます。できる限り、理想的には毎日、利害関係者を囲んでください。
全焼
バーンダウンチャートでゼロに向かって進んでいるポイントをグラフ化できます。制限時間に達する前に最適なラインがゼロを超えた場合、軌道に乗っている可能性があります。そうでない場合、締め切りに近づきすぎる前に、今すぐクライアントに知らせる必要があるかもしれません。
失敗する場合は、早期に失敗します。
ソフトウェアを使用してバーンダウンを作成することもできますが、壁に貼ってある大きな紙だけが好きです。その上に描いて書いてください。
自動テスト
複数の開発者が同時に同じ作業をしている場合、彼らはおそらく互いのコードを時々壊すでしょう。コミュニケーションと可視性はこれに役立ちますが、問題の発見に役立つ技術をいくつか導入したいと思うでしょう。
ユニットテストは、コードベースの個々の部分(理想的には各メソッド)のテストを記述するプロセスです。ユニットテストは頻繁に実行し、可能な場合は保存するたびに実行する必要があります。KarmaやRspecなど、これを支援できるツールが多数あります。
エンドツーエンドのテストでは、プロジェクト全体をテストし、内部をブラックボックスとして扱います。これらのテストは、「ユーザーはサインアップできます」または「ユーザーはアイテムのリストを表示できます」など、高度なビジネス要件に基づいて行います。分度器は、エンドツーエンドのWebベースのテストフレームワークの好例です。
テストについて書かれた本は全部ありますが、少なくともいくつかの受け入れテストを実施しておくと、プロジェクトで作業しているときに何も壊れないことを確認するのに役立ちます。
技術的な負債を回避し、完了させる
技術的負債とは、後でクリーンアップする必要があるものを記述する概念です。借金の一般的な原因は、完了とマークされたが、「完了」されたことのない機能です。完了した機能はGitにチェックインされ、利害関係者によって承認され、テストが行われます。
完了するまで機能をチェックしないでください。グラフをマッサージしないでください。繰り返しますが、これはあなたを含む長期的にはすべての人を傷つけます。
これが、開発者ごとに1日あたり6ポイントしか見積もらない理由の1つです。完了は余分な作業を必要としますが、気分が良く、チームを後押しします。