かんばんとTrelloを使用してソフトウェア開発を管理するための初心者向けガイド

公開: 2022-03-11

誰もがプロジェクトマネージャーです。 新しいアプリケーションの開発を管理してスタートアップを成長させている場合でも、新しい10億ドル規模のエンタープライズプロジェクトに取り組んでいる場合でも、DIYの造園で庭を活気づけようとしている場合でも、常にプロジェクトを管理しています。

プロジェクトの成功は多くの要因に依存しますが、プロジェクトが失敗する最も一般的な理由の1つは、管理の欠如または完全に悪いプロジェクト管理です。 チームがどれほど小さくても、または要件がどれほど明確に文書化されていても、チームを適切に管理しないと、プロジェクトは必ず失敗します。

プロジェクトの管理に費やす毎分は、十分に費やされた時間です。 それはあなたのプロジェクトの成功に近づくでしょう。

アジャイルプロジェクト管理は、現代のソフトウェア開発プロジェクトにアプローチするための広く受け入れられている方法です。 しかし、アジャイルは本当にどういう意味ですか?

アジャイルプロジェクトは、プロセスの不可欠な部分として、スコープと要件の頻繁な変更を受け入れます。

アジャイルの原則をさらに深く掘り下げるには、アジャイルプロジェクト管理の究極のガイドを読むことをお勧めします。

この投稿では、かんばんを使用したアジャイルプロジェクト管理の基本について説明します。

アジャイルの原則を内外で理解している経験豊富なプロジェクトマネージャーであっても、記憶をリフレッシュし、コアコンセプトを思い出す必要があります。 ソフトウェア開発のイノベーションサイクルは絶えずスピードアップしており、反復ごとにプロジェクト管理がより複雑になっています。 アジャイルの基本原則に戻り、コア原則を固めることは常に重要です。 結局のところ、繰り返しはすべての知識の母です。

かんばんは、アジャイルソフトウェア開発プロジェクトを管理する最も簡単な方法の1つです。 同じオフィスまたは分散したチームで作業し、複数のタイムゾーンに分散しているローカル開発チームを簡単に処理できます。

かんばんはプロセスではありません。 これは、チームの確立された運用活動への最小限の変更でプロセスを管理する方法です。

かんばんの原則を作業に適用するには、次の2つの簡単なルールを適用する必要があります。

  1. プロセスを視覚化します。
  2. 進行中の作業を制限します。

プロセスを視覚化する

データの視覚化は、普遍的で理解しやすい方法で情報を伝えるための迅速で簡単な方法です。 写真を見るとき、人間の脳は複数の情報を同時に処理することができます。 一部の研究によると、これはテキストを読むよりも最大60,000倍速くなる可能性があります。

私たちの視覚のための脳ニューロンは、脳の灰白質の30パーセントを占めています。

プロセスを視覚化する最も一般的な方法は、かんばんボードです。 かんばんボードは、垂直方向に複数の列に分割されたボードであり、各列はプロセスの1つの状態を表します。

単純なソフトウェア開発ボードがどのように見えるかを見てみましょう。 まず、開発機能の状態を定義する必要があります。

  1. To-Do-機能は開発を待っています
  2. 開発-機能は開発者に割り当てられ、開発者はそれに取り組んでいます
  3. 品質保証-機能はレビュー中です
  4. デプロイ済み-機能が受け入れられ、アプリケーションリリースに含まれます

これに基づいて、ボードは次のレイアウトになります。

To-Do、Development、Quality Assurance、Deployedの4つの列を持つTrelloボード。

個々のタスクの視覚化は、実行する必要のある作業を表す単純なカード(ポストイットのようなもの)を作成するのと同じくらい簡単です。 このカードには、タスクに名前を付けたり、割り当てられた開発者の名前、期日、およびその他の関連情報を追加したりできます。

そのカードをかんばんボードの列に追加すると、たとえば、特定の開発者が特定の日付に期限があり、現在開発中の特定のタスクに取り組んでいることが視覚化されます。

Trelloカードのクローズアップ。ラベルには、タスクの色のラベル、タスクのタイトル、タスクの期日、タスクの説明のプレゼンスインジケーター、コメントカウンター、添付ファイルカウンター、チェックリストアイテムの合計の割合、および割り当てられた人のインジケーターが強調表示されています。

仕掛品の制限(WIP)

人間のマルチタスクは妄想です。 1つまたは2つのことに同時に注意を払う代わりに、私たちの脳はそれらを非常に迅速に切り替えています。

これは、他のどこよりもソフトウェア開発でより顕著です。 開発者は一度に1つのコードでしか作業できず、別の機能に切り替えると遅延が発生し、集中力とパフォーマンスに影響します。

これは、割り当ての数を一度に1つだけに制限する必要があるという意味ではありません。 開発は複雑で創造的な作業であり、一部のタスクは完了するのに時間がかかり、他のタスクは完了するのに時間がかかりません。また、開発者が何かまたは誰かを待っている間は常に遅延があります。 重要なことは、割り当てられたタスクを、混乱を引き起こさない妥当な数に制限することです(これは通常、一度に3〜5回の割り当てです)。

開発チームが2人の開発者と1人のQAエンジニアで構成されているとすると、ボードには次のWIP制限がある可能性があります。

  • To-Do-無制限
  • 開発-6枚のカード制限(2人の開発者はそれぞれ最大3つのタスクに制限されています)
  • 品質保証-3枚のカードの制限(1人のQAエンジニアは最大3枚のカードに制限されています)
  • 展開済み-無制限
開発者が賢明であることを期待しないでください、そして彼ら自身で彼らのWIPを制限してください。 To-Doリストから開発者にすべてを投げると、子供におもちゃをたくさん与えるようなものになります。 1つのおもちゃで遊ぶ代わりに、彼らはただそれらを投げて、あなたのきちんとした家に混乱を引き起こします、そしてそれでも、彼らは幸せではなく、あなたはタントラムを期待することができます。

プロジェクトマネージャーとしてのあなたの仕事は、To-Doリストに適切な優先順位が付けられ、タスクが必要なときにすぐに開発者に割り当てられるようにすることです。

最初のボードと似ていますが、2番目の列にWIPと呼ばれ、3番目のカードの下に「WIPLIMIT」と呼ばれる赤い線が引かれたTrelloボード。

適切に管理されたかんばんボードは、プロジェクトのステータスを一目で明確に示します。 開発者には十分な作業があり、割り当てが完了したら引き継ぐことができる新しいタスクを準備し、QAエンジニアが新しいタスクのレビューを待っていることがわかります。

Trelloを使用してかんばんボードを管理する

Trelloは、Webベースのかんばんプロジェクト管理アプリケーションです。 これにより、チームメンバー間、さらには複数のチームやプロジェクト間での簡単なリアルタイムコラボレーションが可能になります。

Trelloでボードを作成するには、[Create new board…]メニュー項目をクリックして、ボードのタイトルを設定します。

Trelloでボードを作成するスクリーンショット。ボードタイトルには1つのフィールドがあります。

空のボードから始めます。 「リストの追加…」ボックスを使用して、かんばんカードの列を作成します。

Trelloにタスク列を追加するスクリーンショット。新しい列のタイトルは編集可能で、その下に[保存]ボタンと[X]ボタンがあります。

いずれかのリストの下部にある[カードを追加...]をクリックすると、タスクを簡単に作成できます。 作成する各カードは、チームメンバーによって実行されるタスクを表す必要があります。

Trelloのカードは、さまざまな方法でカスタマイズできます。

  • タスクの実行を担当するチームメンバーを割り当てます
  • 追加したい特定のグループに応じて色分けします
  • 期日を設定する
  • 添付ファイルを追加する
  • タスクを構成する小さな要素の進行状況を追跡できるチェックリストなどのカスタムフィールドを追加します
  • チームメンバーはカードにコメントすることができ、変更が加えられた場合は全員に通知されます。

Trelloカードの詳細ビューのスクリーンショット。タイトル、チェックリストのセクション、コメント、アクティビティ履歴、およびサイドバーでのカードレベルのアクションの可能性が示されています。

かんばんでは視覚化がすべてなので、ボード上でのカードの外観は次のとおりです。

Trelloボードレベルで表示された前のカードのスクリーンショット。前に説明したのと同じ要素がありますが、より新しいカードの詳細と一致しています。

カードを見るだけで、詳細ビューを開かなくても、次のことがわかります。

  1. GitHubコードリポジトリを設定するタスクは、To-Doリストで実行されるのを待っています。
  2. タスクの期限は1月27日です。
  3. タスクには説明があります。
  4. タスクに関するコメントが1つあります。
  5. 2つの項目のチェックリストがあり、これらの項目のいずれも現在完了していません。
  6. タスクはユーザーDSに割り当てられ、ユーザーDSが次にタスクを取得します。
  7. タスクは緑色のカードのグループに属しています。つまり、プロジェクトを開始する前にタスクが必要です。

開発作業の時間と複​​雑さを見積もる

プロジェクトの計画と管理は、特定のタスクを完了するために必要な労力と時間を理解することなしには不可能です。 ただし、ソフトウェア開発で行うのが最も難しいことの1つは、新しいソフトウェア製品または機能を提供するのにかかる時間を決定することです。

最も人気のあるアジャイル原則の1つであるスクラムは、時間に基づいているか「複雑さのポイント」に基づいているかにかかわらず、見積もりに大きく依存しています。

チームは、タスクの範囲を特定するためにかなりの時間を費やす必要があります。

これは、スクラムがタイムボックス化された間隔に基づいており、特定のグループのタスクが完了すると予想されるためです。 配信を計画するには、そのタイムボックスで計画されているすべての作業を完全に理解する必要があります。

かんばんはタイムボックス配信に依存していません。必要に応じて、毎日の配信を計画できます。 これは、フローの最適化に依存しています。つまり、チームの焦点は、WIP列をできるだけ早く完了して空にすることです。

チームは、事前に作業を見積もるのに時間を費やしていません。 開発者はTo-Doから次のアイテムをピックアップします。 できるだけ早く完了してください。 そして別のタスクをピックアップします。

これは、チームがワークロードの量を見積もるべきではないという意味ではありません。

毎週または毎日の通話を使用して、期日を更新および確認できます。

ただし、小規模なチームの場合、開発者が常に最も優先度の高いタスクに取り組んでおり、ボトルネックがないことを確認して、開発者に作業を一時停止させることがより重要です。

最終的には、プロジェクトが成長し、開発作業の量をより詳細に見積もる必要があります。 このような状況になったら、アジャイルプロジェクト管理におけるソフトウェアコストの見積もりに関するガイドを読んでください。

必須の管理慣行

これまで、プロセスを視覚化してWIPを制限することの重要性と、Trelloを使用してプロジェクトを管理する方法について学習しました。

ただし、ソフトウェアプロジェクトは、カードと列だけで管理することはできません。 したがって、アジャイルのベストプラクティスも実装することが重要です。

  • 定期的なチームミーティングを開催します。
    少なくとも毎週これを実行して、何が行われたかを確認し、必要に応じてバックログ(To-Doリスト)を調整して優先順位を付けます。 このようにして、チーム全体が同時に更新を取得し、アイデアを共有できます。 これらの会議では、プロジェクトの利害関係者(クライアント、企業のCTO、または決定を下して質問に答えることができる製品チームの誰か)がいて、最終的に非技術的なフィードバックを提供することが重要です。

  • 個々のチームメンバーとの絶え間ないコミュニケーションを確保します。
    これにより、すべての人の日常業務がはるかに簡単になります。 これらの会議や同期は非常に短くシンプルに保ち、お気に入りのチャットプログラムをすばやく更新するだけで十分です。 毎日チェックインするのは便利です。これは、チームとの1日15分の会議になる可能性があります。 この会議では、すべてのチームメンバーが数秒間次のように話します。

  • 彼らが昨日取り組んだこと。
  • 彼らが今日取り組むことを計画していること。
  • 彼らが直面している課題やボトルネック。


通話中にメモを取り、考えられる問題(ブロッカー、タスクへの誤った集中、予期しない技術的課題)を見つけるために注意を払い、チームでそれらに取り組みます。

ソフトウェア開発プロジェクトをブートストラップする

すべてのソフトウェア開発プロジェクトは異なりますが、ほとんどすべてのプロジェクトに見られる特定のタスクがあります。 ソフトウェア開発プロジェクトを開始するときに計画する必要のあるタスクのいくつかを次に示します。

  • コードのバージョン管理とリポジトリを設定します。
    変更の追跡とコードの監視は、特に複数の人が同じコードを更新するプロジェクトで共同作業を行う場合に非常に重要です。

    コードバージョン管理で最も人気のあるサービスの1つは、GitHubです。 GitHubは、WebベースのGitまたはバージョン管理リポジトリであり、Gitのすべての分散バージョン管理およびソースコード管理(SCM)機能を提供します。

    アクセス制御と、バグトラッキング、機能リクエスト、タスク管理、すべてのプロジェクトのWikiなどのいくつかのコラボレーション機能を提供します。

  • データベースのバックアップポリシーを定義します。
    GitHubなどのサービスを使用すると、コードが定期的にバックアップされることが保証されます。

    通常、データベースはバージョン管理システムの一部ではないため、データベースのバックアップも頻繁に設定する必要があります。

    開発プロセスはエラーが発生しやすく、開発中に間違いを犯したり、間違ったデータを更新したりするのは簡単です。 このような問題が発生した場合、バックアップを作成することで問題を回避できます。

  • コラボレーションツールとファイル共有を設定します。
    プロジェクトのドキュメント、機能仕様、設計ファイル、およびプロジェクト開発中に使用されるその他のドキュメントとファイルは常に更新されるため、チームに配布する必要があります。

    これらのファイルを共有するには、さまざまなサービスを使用できます。 Googleは、この問題に対するシンプルで費用効果の高いソリューションを許可しています。 Googleドライブ、Googleドキュメント、Googleスプレッドシート、その他のGoogleアプリを使用して、ファイルを共有したり共同編集したりできます。

  • 個別の開発サーバーとテストサーバーをセットアップします。
    開発プロセスは常に継続する必要があります。

    開発者は、アプリケーションテストの結果を待つべきではなく、品質保証が完了した機能をレビューしている間、割り当てに取り組み続ける必要があります。

    同時に、クライアントは、開発チームを待たずに、いつでもアプリケーションの現在の状態を確認できる必要があります。 定期的に更新される専用のテストサーバーを使用すると、このプロセスのすべてのボトルネックが解消され、チームが中断されることなく実行されます。

  • 毎週のチームコールの固定時間を定義し、毎日のチームがコールまたはチャットに追いつくための固定時間を定義します。
    チームメンバー全員に、電話や会議の時間をカレンダーでスケジュールしてもらいます。 これにより、作業を中断することなく、チームに安定したスケジュールを提供できます。

取り除く

プロジェクト管理は複雑で、多くの場合、非常にストレスの多い活動です。 それに構造を追加し、プロジェクトのステータスを常に表示して正確にすることで、このストレスの多くが軽減されます。 かんばん方式とアジャイル原則を適切なツールと組み合わせて使用​​すると、時間を大幅に節約できます。

そうは言っても、プロジェクトマネージャーとしてプロジェクトの管理に専念しなければならない時間を補うツールや方法論はありません。

また、プロジェクトが小さいからといって、必ずしも時間がかからないというわけではありません。 この考え方は、将来の大きな頭痛の種となる素晴らしいレシピです。

プロジェクトが適切に管理されているかどうかを確認するのに役立つ簡単なチェックリストを次に示します。

  1. プロセスは適切に視覚化されていますか?
  2. 各チームメンバーのWIPは制限され、最小化されていますか?
  3. あなたのチームは、毎週または毎日、一貫してスケジュールされた会議を持っていますか?
  4. かんばんボードは定期的に更新されていますか?
  5. コードリポジトリはありますか?
  6. データベースのバックアップをスケジュールしましたか?
  7. チームのコミュニケーションおよびコラボレーションツールを設定しましたか?
  8. 開発環境は、テスト、受け入れ、および本番環境から分離されていますか?

このリストは明確ではなく、完了しているわけではないことに注意してください。 それはほんの始まりです。

コメントを残して、ソフトウェア開発チームに力を与えるという終わりのない旅を始めたばかりのプロジェクトマネージャーとヒントや実践を共有してください。