web-dev-qa-db-ja.com

Solo開発者のためのアジャイル

誰かがソロ開発者としてアジャイルプロセスの概念をどのように実装しますか?アジャイルは、より速いペースでアプリケーションを開発するのに役立つようですが、非常にチーム指向でもあるようです...

136
kelleystar
  • テスト駆動開発を行うことにより
  • 小さなスプリントで開発することによって
  • 顧客と多くの接触を持つことによって

私はカウボーイ開発に関する論文を読んだことを覚えています。それはソロ開発者にとって本質的にアジャイルですが、どこでそれを見つけたか思い出せません。

66

Klez(すべての良い提案)からの回答に加えて、次のことをお勧めします。

  • 製品のバックログを保持する
    製品バックログは、基本的に、この製品のある段階で完了する予定のすべてのアイテムのリストです。
  • スプリントバーンダウンと製品バーンダウンの維持
    スプリントのバーンダウンは、このスプリントで完了することに決めたすべてのタスクのリスト(設定された期間(たとえば2週間)で完了する製品バックログのサブセット)の見積もりとともに始まります。必要な作業。マークを付けると、完了としてマークします。それにより、そのスプリントの残りの作業を削減(または焼き付け)します。
    同様に、製品バーンダウンは、製品バックログ全体の残りの作業を追跡します
  • 相対推定と速度の概念を採用
    相対推定は、他のタスク(またはストーリー)をガイドとして使用する推定手法です。たとえば、タスクAの方がタスクBよりも簡単で、タスクCの約2倍複雑であることがわかっている場合は、タスクAの「ポイント」がこれらの期待と比較して正しいことを確認します。
    重要なのは、必要な作業量を正しく推測することではなく、推定値を互いに一致させることです。
    速度は、スプリントで実行される「ポイント」の数の尺度です。相対的な推定が一貫性を保証している場合、この速度を使用して、次のスプリントで実行される可能性が高いタスクを推定できます。ただし、速度は常に変更する必要があります。
39
Damovisa
  • 進行中の作業を制限します(タイムボクシングに加えて)。 (かんばんとは対照的に)反復法を使用する場合でも、速度は反復ごとに8ポイントであるとしましょう。一度に8つすべての作業を開始しないでください。ストーリーの数またはストーリーポイントによってWIPを制限することは問題ありません。
  • すべてのユーザーストーリーの自動受け入れテストを行います。一般的にできる限り自動化します。
  • ユーザーストーリーを小さくしすぎるとエラーが発生します。経験則として、最大のストーリーと最小のストーリーの比率を3:1にします。スクラムでストーリーを過小評価し、そのストーリーが大きすぎると判明した場合、複数の開発者がそれをまとめて軌道に戻すことができます。しかし、あなたには十分な人がいません。
  • 通常のサイズのチームのコンテキストで、ユーザーストーリーからスパイクを分割するかどうか迷う場合-ソロまたは小さなチームのコンテキストでは、ためらうことなくスパイクを実行します。これにより、ストーリーをより小さく、より予測可能に保つことができます。
  • 遡及はアジャイル全般で重要です。したがって、遡及プロセスはよりデータ駆動型であるため、かんばん(つまり、個人かんばん)はここで追加のポイントを獲得します。人数が少ないと、トリプルニッケルをプレイするのは難しいです。

これらは、ソロと小規模チーム(2または3人の開発者)の両方の状況におそらく当てはまります。

追加:この回答を書いた後、いつかこの会議の講演を見つけて感銘を受けました: 個人のカンバン:個々のコーダーの最適化

21
azheglov
  • 明確に定義されたスプリントに取り組むか、カンバンアプローチを故意に選択します。誤ってかんばんになってはいけません
  • 最初にバグ、2番目に機能。
  • バリュー対機能の膨張に引き続き焦点を合わせます。 (YAGNI over Gold Plating)
  • 回顧展も同様に価値があります。同様に重要なこととして、プロセスを小さなチャンクで変更します。 ATMを提供する外部機能がない場合を除いて、今日からTDD、モック、IoCを一度に開始することを決めないでください。一度に1つずつ持ち込みます。

結局のところ、私はアジャイルを「チームや顧客にとって意味のあることをし、かつての仕事のように見えたために古い慣習を守らない」と本当に定義しています。

9
MIA

アジャイルは、チームと同様に個人でも機能します。それはあなたのために働くプロセスを見つけること、そしてあなたのプロジェクトがすでに始まったらあなたが変化する状況に適応できるようにすることです。また、ソフトウェアが実際に「完成」したかどうかに関係なく、定期的に顧客に価値を提供することも重要です。

アジャイルプロセスは非常に反復的です。作業は短いTimeBoxes/sprints/cycles/iterationsで行われます。一部の設計作業は事前に必要になる場合がありますが、システムで何が必要かについて詳しく知ると、リファクタリングできます。ユニットテストは、ほぼすべてのアジャイル開発方法のバックボーンであり、ソフトウェアが機能しているかどうか、およびソフトウェアへの追加/変更が既存のコードベースを破壊するかどうかを示します。

BDD/TDDに準拠している場合は、システム全体を構築してすべてのテストを頻繁に実行し、各スプリントの最後に作業コードを配信する場合、要件を風に合わせて変更し、それに応じて機能の優先順位を調整できます。 、あなたはすでにアジャイルです。

3
S.Robins

ワオ。友人が困っているときに電話をかけられるようにしておき、コーディングの問題について話し合うつもりです。あなたは私が何を意味しているのか知っています...問題を大声で説明するという行為だけが解決策をmy心に90%の確率でもたらします。

1
codeyoung