アジャイルソフトウェア開発は、最近、かなり楽しい流行語になりつつあります。
開発者として、私は反復開発の実用的な価値を理解していますが、(ほとんどの場合)ソフトウェア開発へのアジャイルアプローチを採用することは開発者の選択ではありません。それはトップダウンの管理選択です!クリスタル、アジャイルメソッド、dsdm、rup、xp、スクラム、fdd、tddであるかどうかに関係なく、名前を付けます。開発者の選択ではありません。
そこにいるすべてのマネージャーにとって、アジャイル開発を行うことを選択する最大の理由は何ですか(私の経験では)ほとんどのマネージャーは自分の人生でコードに触れたことさえありません!
アジャイルは、変化するニーズに迅速に(またはまったく)適応する可能性を提供し、それらの変更をより迅速に顧客に提供できるため、魅力的です。
これが、アジャイル/スクラムの使用時に多くの企業が失敗する理由です。マネージャーは優れたパワー(より速いリリース日を設定し、要件を頻繁に変更すること)が開発者に依存する責任)であることを理解していません。見積もり。アジャイルが機能するためには、マネージャーは喜んでスコープを削減する必要があります。
彼らは両方の力を求めています。
時々人々は物事を行うが、それは彼らが着手している事柄(アジャイル)のメリットのためではなく、単にそれが人気で他の人たちが同じことをしようとしているためです。
「何?Macrojamはアジャイルをやっている?なぜ私達じゃないの?私達は遅くはない、私達はアジャイルだ、とんでもない!」
一部の人々は、アジャイルであることが実際に何を伴うかを善悪に与えません。それは単に彼らの存在を正当化するための手段です。羊飼い、仲間のプレッシャーなど.
コーディング自体は、マネージャがアジャイルをメソッドとして選択することを確信できる主な理由ではありません。要件と優先順位の変化に迅速に対応できるという事実は魅力的です。最終的に「マネージャー」は、エンドユーザー/顧客/彼のマネージャーにソリューションを提供する必要があります。
プロジェクトの開始時に重要と思われた機能をプロジェクトの途中で廃止し、より関連性の高い新しい要件に置き換えることができる場合、それは大きな利点です。
また、ほとんどの場合(たとえば、スクラムのように)各中間配信は、本稼働に移行する準備がほぼ整っている必要があります。同時に、最も緊急の機能が最初に開発されました。したがって、何らかの企業の決定によりプロジェクトがキャンセルされた場合でも、経営陣は最終的には正常に機能し、運用可能な状態になるはずです。
お役に立てれば。
何が起こっているかについてvisibilityを増やし、productivityを増やします
マネージャは通常、特にスクラムに関してvisibilityアジャイルをもたらすことに関心があります。これは、マネージャを対象としたセミナーで最もよく使用されるセールスポイントの1つです。
生産性の向上は、デモンストレーションが容易であるため(一般的には可視性のおかげです)、それらを引き付けるためにも使用されます。一部のアジャイルエバンジェリストは、既存の従業員からの卓越した生産性を約束しています。 「何ですか?私はすでにレモンのようにそれらを押しています、そしてあなたは私がさらに得ることができると私に伝えますmore "?
多くのマネージャーはアジャイルを使用して従業員をもう少し押しつぶしており、私は彼らがバーンダウンチャートを1つの大企業のスラックハンターマシンとして使用しているのを見ました。
結果? distress
の多くのチーム。彼らはアジャイルがすべての問題を解決するだろうと考えていましたが、それは全く逆でした。問題は別の場所にありました。
私は積極的にそれと戦っています。だからこそ、アジャイル手法よりも高い確率で経営陣がperverted
になる可能性があるのは、社内では触れないことです。
その質問への答えは本をいっぱいにするかもしれません。
主な理由の1つは、アジャイル開発が成果物に重点を置いていることだと思います。それは常に、ここで今最も緊急であるものを正確に提供することに焦点を当てています。
もう1つの理由は、アジャイルプロセスが従うストーリーベースの計画と見積もりの実践により、何をいつ配信できるかをはるかに正確に見積もることができるためです。
ストーリーベースの計画がいかに効果的であるかの良い例は、私が取り組んだプロジェクトです。 (アジャイル開発を採用する前の)数か月間、プロジェクトリーダーは予定どおりに納品できると信じていました。これは期限から約18か月でした。すべての開発者は、それはおそらく非現実的だと感じていました。アジャイル計画を開始した後も、プロジェクトリーダーは状況について楽観的な評価を下していました。しかし、数回のスプリントの後でのみ、プロジェクトリーダーは、チームにはすべての要件を予定された時間に提供するだけの能力がないことに気づきました。そして、それは今でも締め切りから12ヶ月以上ありました。
したがって、アジャイルプラクティスは、現実をより早く明らかにすることにもなります。
そして最後に、アジャイルチームは、より良いコード品質を作成するプラクティスを採用する傾向があります。テスト駆動開発、頻繁なリファクタリング、継続的インテグレーション、ピアコードレビュー/ペアプログラミングなど。従来のソフトウェアプロジェクトはこれらのプラクティスを禁止しているわけではなく、それほど焦点を当てていない傾向があるだけです。
ほとんどのマネージャーは、自分の人生でコードに触れたことさえありません!
私は12年間開発者でしたが、現在は5年間のマネージャーでした。5年間で、コード化されたマネージャーから、主に純粋なマネージャーに徐々に移行しました(まだバグを修正したり、プロトタイピングの練習をしたりしています)。
アジャイル開発を選択する最大の理由は何ですか
他の方法でこれを達成することもできましたが、アジャイル手法とアイデアを活用することで、非常に役立ちました。
また、プロセスの改良も続けています。たとえば、事前の設計作業と実装直前の設計とのバランス。すべての決定を定期的に確認して、過去の設計決定を延期できるかどうかを判断します。そして、問題が発生した場合、エラーが特定されるまでに、さらに多くの事前作業が必要でした。多くの場合、障害は詳細な分析を必要とするコーナーケースです。多くの場合、その詳細を取得する作業は、途中でそれを理解してリファクタリングするコストと同じです。チームはこれらのタイプのエラーに対してペナルティを課せられておらず、より積極的になるように奨励されています。
多くの企業がアジャイルを「実行」しているのを見てきました。残念ながら、それらのごく一部採用アジャイル。つまり、反復的な開発を行っているだけであり、毎日のスタンドアップ(チームのほとんどが座る場所)によってチームがアジャイルになるわけではありません。 TDD、リファクタリング、継続的インテグレーション、顧客プレゼンス、SOLIDプラクティスはチームをアジャイルにします。それらがなければ、あなたは円の周りを回っています。
アジャイルのメッセージがもたらす魅力はたくさんあります。変化への適応性が最大です。残念ながら、プロジェクトの管理方法を変更しただけでは、コードの適応性は向上しません。これを実現する企業が増えるまで、アジャイルプロジェクトが失敗するという話を聞くだけです。
バズワード部分は知りません。私はこれを、あまり正式ではない、または特定されていないプロセスで実際にずっと行ってきました。私は彼らのウェブサイトを構築するときに、クライアントに文字通り私の肩越しに見てもらいました。約50通のメールを保存し、クライアントはこのプロセスについて何かを学びました-それは簡単ではありません。
ユーザーがソフトウェアにしてもらいたいことをすべて書き留めるのに長い時間を費やし、アプリを試してから2秒以内に発見したいと思うものを構築するのに長い時間がかかるという全体的な概念彼らが期待しているのは吐き気がするものではありません。プロジェクトまたはアプリケーションをいくつかの合理的な部分に分割して、別の部分をビルドする前にビルドしてフィードバックを得るのはどれほど難しいですか。
これは単純化しすぎて、実際の開発者のプラクティスに対応していないことはわかっていますが、ほとんどの非技術系マネージャーや顧客に販売するのも難しくありません。他にどんな魅力的なアプローチがありますか?プログラマーは、いくつかのウォーターフォールプロジェクトの間に開発している間、プログラマーが6か月から12か月間髪の毛を失っていることを本当に気に入っていますか?この方法で家を建てる人を雇いますか?
管理はこれらのものを開発者に押し付けません。開発者とチームは、イニシアチブを取り、より良い仕事をするために、彼らに向けて努力する必要があります。経営陣の仕事は、これらのイニシアチブをサポートすることです。
私の経歴でかなりの量のコードを書いたマネージャーとして、私はあなたがこれに答えるために探している人ではないかもしれません。いずれにせよ、最近のアジャイルの魅力は、顧客のニーズへのより迅速な対応と、仕様、コーディング、テスト、顧客間のフィードバックループの短縮に関係していると思います。これらの理由から、私たちはよりアジャイルな開発に向けて動き始めています。
アジャイルプロセスとコーディング/開発プラクティスを台無しにしないでください。たとえば、スクラムは、コードをどのように開発する必要があるかを教えてくれません-変更を受け入れるのはすべてプロセスです。