アジャイル開発者の習慣-acts_as_agile

第1回 フィードバックを重視する

この記事を読むのに必要な時間:およそ 5 分

僕は,偉大なプログラマなんかじゃない。偉大な習慣を身につけたプログラマなんだ。

Kent Beck (注1

注1)
『リファクタリング ― プログラムの体質改善テクニック』(Martin Fowler(著),児玉 公信/平澤 章/友野 晶夫/梅沢 真史(訳),ピアソン・エデュケーション)p.57で,Martin FowlerがKent Beckの発言として紹介しています。

自分の仕事を憎むには人生はあまりにも短い

私は,200名程度という微妙な規模のSIベンダーに勤務するプログラマです。主に企業で利用する業務アプリケーションの構築に携わっています。

私には夢があります。業務アプリケーションのプログラマとしての夢です。

  • 自分だけではできないことをチームで成し遂げたい
  • チームの成果が誰かの役に立ってほしい
  • チームの成果に対して適切な報酬を受けたい

「自分の仕事を憎むには人生はあまりにも短い」。Joel Spolskyのこの言葉注2と同じ思いを私自身が抱きはじめたきっかけは,2冊の書籍との出会いでした。1冊は『達人プログラマー』注3)。もう1冊は『XP エクストリーム・プログラミング入門』注4です。

この2冊に出会ってから数年後,縁あって現在の勤務先に転職したのを契機に,日本のいわゆるアジャイル開発コミュニティに参加し始めました。すると,私のような夢を抱いている人は,どうやら私一人ではないことに気づきました。

注2)
『Joel on Software』(Joel Spolsky(著),青木 靖(訳),オーム社)
注3)
『達人プログラマー ― システム開発の職人から名匠への道』(Andrew Hunt/David Thomas(著),村上 雅章(訳),ピアソン・エデュケーション)
注4)
『XP エクストリーム・プログラミング入門』(Kent Beck(訳),長瀬 嘉秀(監訳),テクノロジックアート(訳),ピアソン・エデュケーション

この連載について

連載タイトルにある「アジャイル開発者」とは,アジャイルソフトウェア開発の実践者のことです。アジャイル開発者はソフトウェアをアジャイル(Agile)――状況の変化へ迅速に適応しながら――開発します。アジャイル開発者のことを英語ではagilistと呼びます。

本連載では,アジャイル開発者としての私自身の実践経験と,私が出会ったアジャイル開発者との交流から気づいたことを,アジャイル開発者の「習慣」という切り口から紹介します。第1回である今回は,その準備としてまず,私なりにアジャイルなソフトウェア開発と,アジャイルな開発者について説明します。それから,今後の連載で紹介する習慣を身につけるための習慣(メタ習慣)として,「フィードバックを重視する」習慣を紹介します。

アジャイルなソフトウェア開発

まず,連載の根幹に関わる「アジャイル」という(2007年現在では若干色褪いろあせてしまった)バズワードを私なりに説明することから始めます。

アジャイルは形容詞

「アジャイル」という言葉は形容詞です。ですから,アジャイルソフトウェア開発とは「ソフトウェア開発がアジャイルである」という状態のことです。Chet HendricksonとRon Jeffriesは,この状態を「Early and Often(はやめに・こまめに)」という言葉で表現しています注5)。

注5)
2004年9月に行った講演タイトルが「Early and Often」でした。残念ながら執筆時点ではWeb上にこの資料はありません。
参考:http://capsctrl.que.jp/kdmsnr/diary/20040930.html

はやめに・こまめに

「はやめに・こまめに」が実現されている状態とは,ソフトウェア開発チームが次の条件をすべて満たしている場合です。

「はやめに・こまめに」を実現しているチームは,
  • テストされた,動くソフトウェアの,
  • 定期的なサイクルでのリリースを,
  • 開発ライフサイクルの最初から最後まで継続している

開発チームがこの「状態」を達成できるようになるための作戦を考えるのが本連載の目的です。次回以降の連載を通じて,項目のそれぞれに説明を加えていきます(ここで説明すると連載が終わってしまいます)。

ソフトウェアの時間的価値

なぜ「はやめに・こまめに」を実現させる――すなわちアジャイルに開発するのでしょうか。この背景にあるのは,ソフトウェアの価値に対する考え方です。ここでの価値とは,顧客にとってのソフトウェアの価値です。顧客にとってソフトウェアとは,実稼働してはじめて価値を生み出すものです。そこで,アジャイル開発ではソフトウェアの価値を次のように考えます。

ソフトウェアの価値
価値の大きさ × 価値を生み続けている時間

アジャイルな開発が,ソフトウェア開発ライフサイクルの初期段階から(はやめに)リリース可能な状態を作りだすことで顧客価値の提供に備え,それを継続させる(こまめに)ことを重視するのは,ソフトウェアの価値の総量を最大化させるためです。

「達人プログラマー』の著者であるDave Thomasは,この考え方を「ソフトウェアの時間的価値」と表現しています注6)。これは「明日の100円よりも今日の100円のほうが価値がある」という「貨幣の時間的価値」をソフトウェアに応用したものです。

注6)
『JavaからRubyへ ― マネージャのための実践移行ガイド』(Bruce A. Tate(著),角谷 信太郎(訳),オライリー・ジャパン)

ソフトウェアは人がつくる

ソフトウェアの時間的価値を最大化するために,開発チームがソフトウェアを「はやめに・こまめに」リリースできる状態を作りだし,それを維持する。この実現を目指す日々の活動がアジャイル開発です。そのためにアジャイル開発が前提にしている考え方があります。それは「ソフトウェアは人がつくる」という考え方です。考え方というよりも世界観と呼ぶべきかもしれません。

アジャイルに開発するからアジャイル開発

アジャイル開発の最小構成単位は,アジャイルに開発する個人です。アジャイル開発者たちの協働する自律的な場が,アジャイル開発チームです。

アジャイル開発では,開発プロセスはあくまでもチームが力を発揮できるよになるための手段です。必要に応じて(必ず必要になります)つくりあげ,改善されるものと考えます。つまりアジャイル開発とは,アジャイルに開発する人達が開発するからアジャイル開発なのです。

著者プロフィール

角谷信太郎(かくたにしんたろう)

(株)永和システムマネジメント,サービスプロバイディング事業部所属プログラマ。「『楽しさ』がシステム開発の生産性を左右する」と信じてRubyによるアジャイル開発を現場で実践するテスト駆動開発者。目標は達人プログラマ。好きな言語はRuby。好きなメソッドはextend。著書に『アジャイルな見積りと計画づくり』(共同翻訳),『JavaからRubyへ』(翻訳),『アジャイルプラクティス』(共同監訳),『インターフェイス指向設計』(監訳)。

URLhttp://kakutani.com/

著書

コメント

コメントの記入