アジャイルであるとはどういう意味ですか?


17

私たちは誰もがアジャイルな方法でやろうと言っているプロジェクトを持っていますが、アジャイルとは何かを明確に理解しているとは思いません。

以前のプロジェクトでは、計画会議を開いてから、製品バックログを定義し、2〜3週間のスプリントで開発者に作業を割り当てました。毎朝、スクラムミーティング(毎回1時間半行われているように見えた)があり、その後、各開発者がスクラムミーティングに参加しました。スプリントが終了し、完了していない作業が次のスプリントに追加されるまで、誰もテストを作成しませんでした。

開発者はお互いに話をすることはほとんどなく、開発に関与するTDDはありませんでした。実際、ほとんどの開発者は最初に仕様を持っていて、スプリントがアレンジされた2週間または3週間だけそれを使いました。クライアント/ステークホルダーとのコミュニケーションはほとんどありませんでした。

通常、QAは数か月後に関与し、それまでに要件が欠落していることがわかりました。これにより、必要な作業量がさらに増加し​​ました。明らかに、フィードバックループはありませんでした。

だから私の質問は、どこで間違ったのか、そしてチームが同じ間違いをするのをどのように防ぐことができるのかということです。


4
重複ように思えるprogrammers.stackexchange.com/questions/15928/... それは君たちのような音が本当にプロセスを強制するために、実際の管理を行うと、欠けていたかわからなかったん
sylvanaar

1
はい、100%同意します。私のマネージャーはアジャイルに関する本を読んで、それでうまくいきました(非常に悪いですが)。プロジェクトのサーバー側でTDDを使用しましたが、他のユーザーはTDDを学習したり、その利点を確認したりしませんでした。(クライアント側に)永遠にかかるフレームワークがあり、開発者は(干渉することなく)必要なだけだと主張し続けました。
JD01

3
タイトルは重複しているように見えますが、多くのチームがアジャイルとは「一般的な」説明を読み(さらにトレーニングクラスを取り、コンサルタントを雇うこともある)、JD01の問題とまったく同じ問題に遭遇するため、この質問は単独で役立つと思いますとにかくチーム。したがって、この特定のチームのコンテキストに質問を入れるために、他のより一般的な投稿の質問では対処できない特定の問題と解決策に光を当てるかもしれません。
DXM

回答:


27

あなたが説明しているのは、定義によりアジャイルではありません (アジャイル宣言)、 それは毎日のステータスミーティングを伴うウォーターフォールです。アジャイルとは、製品の所有者、つまり顧客とのインタラクティブなフィードバックループがない場合、変化に容易に適応することを意味します。

アジャイルとは、製品の所有者/顧客との絶え間ないコミュニケーションを通じた、迅速な失敗に関するものです。失敗は遅かれ早かれ、より少ない作業が実行され、「失われる」ことが少なくなります。そして、あなたは「私たちはそれを間違って行うことに多くの時間を費やしたので、それを失敗に導くが、この同じ道を続ける必要があるので、正しくそれをする時間がない」という議論にとらわれない「。

あなたの管理が「SCRUM、しかし...」をしているように聞こえますが、「しかし」彼らは理解していない、または同意していないすべてのSCRUMを捨てて、いつもと同じ偶然の滝のように物事を行いますが、新しいピカピカの流行語の名前を付けました。

SCRUMでは毎日立ってないで提供に関する状況を管理し、あなたの仲間のチームメンバーがやっているし、お互いアウトしていない重複した作業を助けることができるか知っているので、それは、開発者との対話を強制することです。1人あたり45秒以上かかる場合は、間違っています。チームの透明性についてです。1人の人が1日間の仕事に相当するものについて同じステータスを複数日与えている場合、チームはすぐに人の問題を解決できます。

記述されているとおりにお互いのコードをテストしていない場合、正しく実行されていません。テストは、後から考えるのではなく、プロセスに組み込む必要があります。QAは計画セッションに含まれ、テストにかかる時間の見積もりを提供する必要があります。

Sprintのコミットメントを満たしておらず、物事をロールオーバーしていない場合、正しく実行していません。スプリントは、あまりにも多くの作業をコミットしている場合、コミットメントに関するものであり、それをやめ、成果物に正確にコミットできない場合、予測可能性または再現性を導入する方法はありません。


1
ご回答いただきありがとうございます。TDDはアジャイルとは別にすべきですか?開発者がこのように考えるのは大変でした。最後に、私が述べたように、彼らは最後にいくつかのテストを行い(覚えていれば)、TDDであると言いました。あなたが言ったことすべてに同意します。フィードバックループはほとんど存在しませんでした。なぜなら、私のマネージャーは、それが何ヶ月も何ヶ月もかかった「フレームワーク」に干渉していると感じたからです。それまでに、顧客の要件を満たさない機能の実装に追われました。
JD01

3
TDDは赤いニシンです。個人的に宗教としては同意しません。顧客のニーズを満たさないコードのテストは良いことです。また、テストは組み込まれ、テストさていないものは何も配信およびデモされないため、マントラとしてのTDDはほとんど役に立ちません。動作しない場合は、デモを実行しないでください。デモを行わないと、製品所有者/顧客は受け入れられません。

2
私は多くのTDDを始めましたが、今では受け入れテストとして顧客のニーズにより合ったBDDに切り替えました。TDDがデザインの作成に役立ったと感じていますが、テストを提供すること以外に見たことがなかったでしょう。
JD01

1
TDDの主な理由は、継続的なリファクタリングを可能にし、技術的負債の蓄積率を減らすことです。再テストには費用がかかりすぎるため、変更を恐れるコードがある場合、プロジェクトは途中で終了します。
ケビンクライン

多くの人がTDDを説教するのを聞いたことがありますが、実際にTDDを見たことはありません。個人的に私の脳はそのように機能しません。私は自分が書いているものについての良い一般的なアイデアを持っている傾向がありますが、私が書いているとき、私は物事を再調整し、動かしています。最初にテストを書くことは私には不可能です。私は通常、コードの作成の一環として単体テストを作成しますが、事前にではなく、コードを作成するときに作成されます。
DaveG

9

Jarrodが良い答えを提供しました(それに対する+1)。これについて少しお話したいと思います。

アジャイルは、製品の所有者(顧客)とチームとの間の迅速な失敗とフィードバックだけではありません。関係するすべての利害関係者間の迅速なフィードバックについてです。真にアジャイルであること(およびこれはマニフェストから直接得られる)とは、開発者がより良い製品を提供するのを助けるためだけにプロセスが存在することを認識することです。プロセスの上の人々は、チームが既存のプロセスが機能しないことを認識するとすぐに、それを変更して機能させることを意味します。

「スクラムが...」も問題ですが、このコインには両面があります。マニフェストを見ると、それはチームに関するものであり、ツール/プロセスがあなたのために機能していることがわかります。2つのチームが同じではないため、それぞれのチームの動作がわずかに異なるため、問題ありません。確かに、スクラムの方法論全体を取り上げて、それを手紙に沿って追ってみて、それがチームに効果があるかどうかを確認することができます。

別の方法は、別のプロセスをチームにプッシュし、スクラムが指示したとおりに全員をフォローさせる代わりに、アジャイルアプローチを試してください:チームとコミュニケーションを取り、一緒に問題の領域とソリューションを特定できるかどうかを確認します。その後、作業方法に徐々に変更を導入して、問題に対処します。

少し時間がかかるかもしれませんが...

  1. チームが製品を提供する能力に最大の影響を与える最大の問題を最初に修正します。
  2. 差し迫った問題を特定し、ソリューションの提案に参加することで、チームメンバーは特定のプラクティスが重要である理由を理解し、それらを実行するように指示されているため、単にそれを実行しません。

スクラムとデザインパターンを類推すると、提案した方法で作業することは、コードを可能な限りシンプルに保ち、必要なときにのみデザインパターンに収束するパターンへのコーディングに似ています。単にデザインパターンを選んでそれをローリングする(つまり、スクラムとそのすべてのプロセスを1つのセットとして盲目的に選択する)のとは対照的に、コードが他の方法よりも複雑で保守が困難になることがあります。

理解する鍵は、アジャイルは物事を行うための新しいプロセスを考え出すことではないということです。それは、既存のプロセス/プラクティスに対する継続的な変更と継続的な調整に関するものです。


1
ダウンボバーに:細心の注意が必要ですか?盲目的にスクラムを採用しない、または他の何かであると言ったので、私はいくつかの羽をフリルにしましたか?
DXM

2
ええ、愚かな。あなたの詳細情報のために+1します。
マイケルデュラント

1
以下のための+1「を理解するための鍵は、その機敏では、物事を行うための新しいプロセスを考え出すに関するものではありません;それは既存のプロセス/プラクティスに連続的に変化し、一定の調整についてです
デビッドはげ生姜"

-2

チーム(およびその管理者)が本当に「アジャイル」になりたい場合、チームとしてアジャイルマニフェストとそのプリンシパルを読み、議論することから始めなければなりません。次に、作成されたアジャイル手法(たとえば、スクラム)の1つを選択し、そのトレーニングを取得して、それに従うことから始めます。それを修正する前にしばらくの間、かなり厳密にフォローすることをお勧めしますが、それは私だけです。

また、選択された特定のアジャイルプロジェクト方法論をサポートするために使用されるエンジニアリングプラクティスを深く検討する必要があります。


2
これが元の質問に答えるとは思わないので、私はダウン票を投じました。
ブライアンオークリー

1
十分に公平だと思います。私はOPの最初の前提に取り組んでいた:「私たちは誰もがアジャイルな方法でやろうと言っているプロジェクトを持っているが、アジャイルとは何かを明確に理解したとは思わない」。多くの人々は、アジャイル哲学やそれを実際にサポートする方法論を理解せずに、「アジャイルを行う」または「アジャイルになる」ことを望んでいると言います。
スティーブンV

3
特定の方法論を盲目的に完全にフォローすることに同意しません。であるためには、「真の」それはあなたの会社とチームにフィットしない限り、アジャイルは、手段は何か特定の傾向や方法論の中で自分自身をロックしないこと。方法論を出発点として使用することをお勧めします。その後、少しトレーニングを行い、さらに経験を積んだら、特定のニーズに合わせて調整します。さらに重要なことは、次のプロジェクトと顧客が少し異なるものを必要とする場合、方法論をスイートに合わせて調整することです。それは本当にアジャイルではありません。
-S.ロビンズ

1
私の答えを再訪して、私は上記のS.Robinsに同意し、それを反映するために私の答えを修正しました。
StevenV
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.