アート・オブ・アジャイル デベロップメント...

Preview:

DESCRIPTION

QCon Tokyo 2009

Citation preview

アート・オブ・アジャイルデベロップメント~組織を成功に導くエクストリームプログラミングの道~

木下 史彦(株)永和システムマネジメント

f-kinoshita@esm.co.jp東京コンファレンスセンター・品川; 2009-04-10(金)

Q: カーネギーホールにはどうやったら行けるんですか?

A: 練習だよ、きみ、練習あるのみだよ!

自己紹介✓木下史彦✓(株)永和システムマネジメント✓オブジェクト倶楽部✓日本XPユーザグループスタッフ✓InfoQ翻訳者✓http://fkino.net

「木下さん」で検索してください。

本日のお品書き✓組織を成功に導くエクストリームプログラミング✓組織を成功に導くエクストリームプログラミングの道✓エクストリームプログラミングの現場から

アジャイル開発

おことわり

エクストリームプログラミング

私が知っているアジャイル手法のうち、XPが最も調和とバランスがとれている。

アジャイル開発とは?

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

イテレーション

Copyright (c) 2009 Eiwa System Management, Inc.

イテレーション (1週間) の流れ要求

リリース可能なソフトウェア Ship It!

次のイテレーションへ

内部リリース

ふりかえりKPTベロシティ

バックログ

タスクプログラミング

機能バグデータ移行ドキュメント環境構築性能ジョーカー 受入テストを

書く 受入テストをする

完了基準

TDDCI

仕様の確認見積りスパイク

ふりかえりやバックログの優先度付けなどはお客さまにご協力いただきながら進めていきます。

イテレーションの流れストーリー

開発する

顧客テスト

イテレーションデモ

ふりかえり

完了基準

組織を成功に導くエクストリームプログラミング

顧客の組織を成功に導くとともに、自分たちも成功する

ソフトウェア開発

開発 ビジネス価値

ビジネス要件

開発 ビジネス価値

ビジネス要件

開発 ビジネス価値

ビジネス要件

開発 ビジネス価値

ビジネス要件

イテレーティブかつ

インクリメンタル

Copyright (c) 2009 Eiwa System Management, Inc.

イテレーティブかつインクリメンタルな開発

1週間 = 1イテレーション

可視性状況が見えない

イテレーション毎に動くものべースで確認できる

変更容易性初期に要件を確定しなければならない

変更は最後のイテレーションがはじまるまで可能

技術リスク低減最後まで動いているものを確認することができない

動くものをベースに徐々に機能を追加していく

ビジネス価値最後の最後までリリースできない

早期にリリース可能な動くソフトウェアが入手できる

アジャイル開発

従来型の開発

打ち合わせ&

リリース

時間

ユーザと開発者の距離

バスタブモデル

Copyright (c) 2009 Eiwa System Management, Inc.

イテレーティブかつインクリメンタルな開発

1週間 = 1イテレーション

可視性状況が見えない

イテレーション毎に動くものべースで確認できる

変更容易性初期に要件を確定しなければならない

変更は最後のイテレーションがはじまるまで可能

技術リスク低減最後まで動いているものを確認することができない

動くものをベースに徐々に機能を追加していく

ビジネス価値最後の最後までリリースできない

早期にリリース可能な動くソフトウェアが入手できる

アジャイル開発

従来型の開発

打ち合わせ&

リリース

時間

ユーザと開発者の距離

いいことずくめ

アジャイル開発

時間

ユーザと開発者の距離

打ち合わせ&

リリース

従来型

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

従来型 リスク

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

従来型 技術的負債

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

✓テスト駆動開発✓インクリメンタルな設計とアーキテクチャ

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

✓テスト駆動開発✓インクリメンタルな設計とアーキテクチャ

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

✓顧客テスト✓バグなし✓探索的テスト

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装

✓顧客テスト✓バグなし✓探索的テスト

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装

✓顧客テスト✓バグなし✓探索的テスト

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ リリース

要件定義

✓顧客テスト✓バグなし✓探索的テスト

従来型→アジャイル

時間

ユーザと開発者の距離

打ち合わせ リリース

要件定義

✓ビジョン✓インクリメンタルな要件

従来型→アジャイル

時間

ユーザと開発者の距離

リリース

要件定義

✓ビジョン✓インクリメンタルな要件

打ち合わせ&

リリース

従来型→アジャイル

時間

ユーザと開発者の距離

リリース

✓ビジョン✓インクリメンタルな要件

打ち合わせ&

リリース

アジャイル開発

時間

ユーザと開発者の距離

打ち合わせ&

リリース

アジャイル開発とは?

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

アジャイルの衰退と凋落

短いサイクルを受け入れているが、短いサイクルを持続可能にする優れた仕組みは何も受け入れやしない。

出典:『アジャイルの衰退と凋落』

短いサイクルを持続可能にする仕組み

組織を成功に導くエクストリームプログラミング

の道

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

フィードバック

http://www.nicovideo.jp/watch/sm6570700

第24回XPJUGユーザ会:アジャイルな見積りと計画づくり

学び

自分たちの中から湧き出てくるもの

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

調整

コミットメントは守れていますか?

再計画

再計画×

✓作業スコープの調整✓期限の調整✓人のやりくり

✓作業スコープの調整✓期限の調整✓人のやりくり

✓強い顧客の声に耳を傾けること✓コミットメントが果たせなかったときに、✓顧客に説明責任を果たすこと✓自分たちのやり方を見直すこと

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

続ける

ポイント

技術的負債をためないこと

従来型 技術的負債

時間

ユーザと開発者の距離

打ち合わせ デモ リリース

要件定義 設計・実装 テスト

アジャイル開発技術的負債

時間

ユーザと開発者の距離

打ち合わせ&

リリース

✓テスト駆動開発✓リファクタリング✓継続的インテグレーション✓シンプルな設計✓インクリメンタルな設計とアーキテクチャ✓顧客テスト✓バグなし

技術的なプラクティス

従来型生産性

8週目

アジャイル

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

協調性

信頼と敬意

信頼

最後の問い

人について、何を本当に信じているか?

出典:『リーン開発の本質』

親の法則

信頼を与えることによって信頼を得る

出典:『ゆとりの法則』

✓ふさわしい人にふさわしい仕事を任せる✓「彼ら」ではなく「私たち」✓親身になる

敬意

わたしがここで使っている”敬意”は、善行が評価されて周囲からあたえられる”敬意”ではない。人間であるというただ一点によって誰もがあたえられるべき”敬意”だ。

出典:『最強 ハーバード流交渉術』

つまり、あなたが相手を尊敬できるかどうかは、相手の問題というよりもあなた自身の問題なのだ。敬意とは、自分自身と自分の価値観を表現したものである。

出典:『最強 ハーバード流交渉術』

アジャイル開発とは?

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

アジャイルの衰退と凋落

アジャイルは難しい。2日間の座学で身につくようなもんじゃない。

出典:『アジャイルの衰退と凋落』

自分はまだ稲作を60回しかしたことがない。だからよくわからない。

70歳のおじいちゃん

事例Case Study

エクストリームプログラミングの現場から

ある救済プロジェクト

SAVEOURSHIP

残り1ヶ月

納期固定

スコープ固定

7人

極限状況

プロダクトコード10Kステップ

プロダクトコード10Kステップ

テストコード20Kステップ

カバレッジ97%

MISSIONCOMPLETE

『XPエクストリーム・プログラミング入門』第2版より

プラクティスPractices

‣ 考えること✓ ペアプログラミング✓ 活き活きとした仕事✓ 情報満載の仕事場✓ 根本原因分析✓ ふりかえり‣ 協力すること✓ 信頼✓ 全員同席✓ 真の顧客の参加✓ ユビキタス言語✓ スタンドアップミーティング✓ コーディング標準✓ イテレーションデモ✓ 報告‣ リリースすること✓ 「完全Done」✓ バグなし✓ バージョン管理✓ 10分ビルド✓ 継続的インテグレーション✓ コードの共同所有

✓ ドキュメント‣ 計画すること✓ ビジョン✓ リリース計画✓ 計画ゲーム✓ リスク管理✓ イテレーション計画✓ ゆとり✓ ストーリー✓ 見積り‣ 開発すること✓ インクリメンタルな要件✓ 顧客テスト✓ テスト駆動開発✓ リファクタリング✓ シンプルな設計✓ インクリメンタルな設計とアーキテクチャ

✓ スパイクソリューション✓ パフォーマンスの最適化✓ 探索的テスト

‣ 考えること✓ ペアプログラミング✓ 活き活きとした仕事✓ 情報満載の仕事場✓ 根本原因分析✓ ふりかえり‣ 協力すること✓ 信頼✓ 全員同席✓ 真の顧客の参加✓ ユビキタス言語✓ スタンドアップミーティング✓ コーディング標準✓ イテレーションデモ✓ 報告‣ リリースすること✓ 「完全Done」✓ バグなし✓ バージョン管理✓ 10分ビルド✓ 継続的インテグレーション✓ コードの共同所有

✓ ドキュメント‣ 計画すること✓ ビジョン✓ リリース計画✓ 計画ゲーム✓ リスク管理✓ イテレーション計画✓ ゆとり✓ ストーリー✓ 見積り‣ 開発すること✓ インクリメンタルな要件✓ 顧客テスト✓ テスト駆動開発✓ リファクタリング✓ シンプルな設計✓ インクリメンタルな設計とアーキテクチャ

✓ スパイクソリューション✓ パフォーマンスの最適化✓ 探索的テスト

バーンダウンチャートTrac

Subversion Test::Unit

朝会・夕会

あんまりやってない

原則Principles

✓正直に伝える✓親身になって教える✓調整して適応する✓石橋を叩いて渡る✓コミュニケーションコストを抑える✓技術的卓越を追求する

正直に伝える✓進捗報告✓マネジメント報告では具体的な数値でスループットを伝える

✓「完全Done」✓ちゃんと終わったタスクでないとベロシティには含めない

親身になって教える✓忙しくても手を止めて教える✓一見効率が悪そうでも、トータルで速くなる

✓メンターになろう✓アジャイルプラクティス41

調整して適応する✓朝会と夕会✓バーンダウンチャート✓ベロシティ✓朝会の二次会✓作戦会議✓チームの問題を探す

石橋を叩いて渡る✓テストを書く✓テストを書くスキルがある✓元は取れる(と信じている)✓みんな昔、痛い目に遭ってるから

コミュニケーションコストを抑える✓共通の価値観を持つ✓XPの価値が体に染みついてる✓阿吽の呼吸

技術的卓越を追求する✓精神論だけでは1ヶ月に30Kステップも作れない✓日頃からの自己鍛錬 (Self Discipline) が重要✓みんな好きでやってる

価値Value

XPを大事にする

まとめ

アジャイル開発

組織を成功に導くエクストリームプログラミング

アジャイル開発

時間

ユーザと開発者の距離

打ち合わせ&

リリース

短いサイクルを持続可能にする仕組み

組織を成功に導くエクストリームプログラミング

の道

開発がアジャイルであるということは、協調性を重んじる環境で、フィードバックに基づいた調整を行い続けることである。

出典:『アジャイルプラクティス』

道を極める方法

Q: カーネギーホールにはどうやったら行けるんですか?

A: 練習だよ、きみ、練習あるのみだよ!

練習あるのみ

‣ 考えること✓ ペアプログラミング✓ 活き活きとした仕事✓ 情報満載の仕事場✓ 根本原因分析✓ ふりかえり‣ 協力すること✓ 信頼✓ 全員同席✓ 真の顧客の参加✓ ユビキタス言語✓ スタンドアップミーティング✓ コーディング標準✓ イテレーションデモ✓ 報告‣ リリースすること✓ 「完全Done」✓ バグなし✓ バージョン管理✓ 10分ビルド✓ 継続的インテグレーション✓ コードの共同所有

✓ ドキュメント‣ 計画すること✓ ビジョン✓ リリース計画✓ 計画ゲーム✓ リスク管理✓ イテレーション計画✓ ゆとり✓ ストーリー✓ 見積り‣ 開発すること✓ インクリメンタルな要件✓ 顧客テスト✓ テスト駆動開発✓ リファクタリング✓ シンプルな設計✓ インクリメンタルな設計とアーキテクチャ

✓ スパイクソリューション✓ パフォーマンスの最適化✓ 探索的テスト

プラクティス

あなた自身の問題

そして、幸いXPには工夫する余地があります。

出典:『アート・オブ・アジャイル デベロップメント』

アジャイル開発

✓自己鍛錬

✓自己鍛錬✓ストイック

✓自己鍛錬✓ストイック✓規律的

✓自己鍛錬✓ストイック✓規律的✓歯を食いしばる

顧客の組織を成功に導くとともに、自分たちも成功する

Dream

アジャイル開発を

うまくなりたい

Message

アジャイルは難しい。2日間の座学で身につくようなもんじゃない。

出典:『アジャイルの衰退と凋落』

覚悟はよいか?

征くぞ諸君

Best of luck to youin your agile journey!

Best of luck to youin your agile journey!

ご清聴ありがとうございました

Any Questions?

Recommended