カテゴリー別アーカイブ: スクラム

Agile開発プロセスのスクラムについて、気付いたこと、わかったこと、わからないことなどを記載

改善出来ないチームで継続的に改善に取り組むには

Startup Stock Photos

緊急度高なタスクばかりをやっているチーム。
日々の残業やときには休日出勤も行われている。
トップダウンで改善策をするように指示され続けているが、どれもできていない。

仕事が終わらなくて残業しているのに、トップダウンで支持された改善策をする時間なんて無い。
というのが、チームの本音じゃないだろうか。

こういった状況でどうやったら改善できるかという話になったとき、チームの人たちに「改善に取り組んだら少しでも良くなるんだという」小さな成功体験とまではいかなくても感覚を持ってもらえるようにしたいなぁと。

時間がない人たちだからこそ、本気で改善したい問題・課題を自分たちで選んで、実現できそうな改善策を自分たちで実行することがとても大事なのではないか。ということで、

  • チーム全員で、発生している問題や課題だと考えていることを5分程度で付箋に書き出す。
  • それぞれ書き出したものを説明する。その際、先の発表した人と同じ問題だと思ったら自分で近くに集める
  • 付箋には問題の本質ではなく感情や状態が記載されていることが多いので、問題の本質に行き当たるまで、「なぜそれが問題か?」をチームで深掘りする。
  • 各人2票ずつで改善したいと考えていることに投票する。
  • 投票数の多いものに対して、1週間以内に自分たちで実行できそうな改善策を考える。
  • 改善策は、全てタスクになっていて、改善策が実施されたかどうかが、どうやったらわかるかも一緒に合意しておく
  • 次週、前回の改善策で改善したかの確認を行う。
  • 引き続き同じサイクルで改善活動を実施し続ける

せっかく自分たちで出した改善案に、リーダーやマネージャーが異論を唱えてしまうと、改善しようという空気になっていても、いっきに場の空気が元に戻ってしまう。
取り組む問題や課題よりも、改善活動で実際に改善されたというチームの実感が湧くことがまずは、とても重要なんじゃないかな。

どうせ残業するなら改善活動をするためにしたい。

INVESTだけでいんですと?

@posauneさんのINVとESとTのポストを読んで、京アジャのレフトウイング(どっちがどっち担当だったっけ?)として勝手思ったことを書いてみる。

実際のプロダクトオーナー(PO)にINVESTとはですねーといっても必ずしも技術畑でもなければ、暇でもない(POが暇だって?!)POになかなか意識して書くことを要求するのは酷だったりする。
(書き方を気にするあまり、追加するのをためらわれたら本末転倒)

けれど、POはプロダクトへのアイデアはあふれんばかりに持っている(はずだ!)から、アイデアを思いついた時にプロダクトバックログですぐにでも関係者に共有したい。

こんなときどうすんの?

プロダクトバックログにはゾーン(Zone)という考え方がある。

気にしないゾーン

プロダクトオーナーは、アイデアレベルのプロダクトバックログアイテムを、まずは気にしないゾーンに入れておく(INVESTですらないかも)。

気にしないゾーン

気にしないゾーン

荒目ゾーン

次のスプリントではないけど、近々行いたいプロダクトバックログアイテムを荒目ゾーンに移動する。
この荒目ゾーンで、INVが満たされているものがきていれば、POとTeamや関係者とのコミュニケーションが進んで、中期的にどんなことをやろうとしているのかが共有出来て、コミュニケーションがはかどる。

荒目ゾーン

荒目ゾーン

詳細ゾーン

詳細ゾーンは、市場の状況が変わらなければ次のスプリントで着手するプロダクトバックログアイテムが入っているはずなので、可能ならINVESTであることが望ましい。なぜかというと、スプリントプランニングにコストをかけ過ぎたくないので。
当然、アクセプタンス・クライテリアを詳細に書かないとTestableにはならないし、スプリントプランニングでコミュニケーションコストをかけ過ぎてしまう。

詳細ゾーン

詳細ゾーン

とうことで、POに優しいプロダクトバックログを作るためにはINVESTに合わせてZoneも意識してみてはいかがでしょうか?

「京都アジャイル勉強会 アジャイル1日体験ワークショップ vol.2」を開催しました

京アジャ アジャイル一日体験カバー

当日は、台風接近中という状況にもかかわらず、ほぼキャンセルなく参加して頂きました。
ご参加頂いた皆様有難うございました!

イベントページ

http://connpass.com/event/7562/

開催理由

京都アジャイル勉強会Lightで行っていた「アジャイルサムライ」読書会(第2回目)の卒業イベントを兼ねて、一日アジャイル体験イベントを行いました。

また、アジャイルもかなり経験者が増えてきているかと思うのですが、京アジャの周りではまだまだ座学やプラクティスだけという方もいるため、少しでもアジャイルの素振り経験を増やすお手伝いができればという思いもありました。

概要

makedoという子供向けなんだけど大人も本気になってしまう工作キットを使用して、「宇宙基地開発」をプロダクトにして行いました。

詳細は、またやるかと思うのでここでは省くとしてw
1年前に行った同イベントから主催者が得たフィードバックを受けて、今回工夫した点を記載します。

前回からの変更点

ユーザーストーリーの作成

経緯

前回のイベントではユーザーストーリーの作成を各チームで行いませんでした。
理由は、ユーザーストーリーをINVESTな状態に持っていくのは、非常に時間がかかるため、アジャイル初心者で、しかも限られた時間内に当日初めて聞いた宇宙基地開発のユーザーストーリーをPOの意思をくみつつ作成するのは難易度高すぎると考えて、宇宙基地開発に必要なタスクを出して下さいということにしていました。
そのため、単なる作業リストが出来てしまいPOの価値に直接紐付かなかったため、別途時間を取ってやり直すチームが出てしまいました。

Try

今回は、ユーザーストーリーは事前に主催者が作成しました。
でも、一度は経験してほしいということで、各チーム一つだけユーザーストーリーを作成してもらうことで、少しだけれどもユーザーストーリー作成の素振りをしてもらうことにしました。

気付き

各チーム同じユーザーストーリーでプロダクトを作成してもらったので、出来上がったプロダクトに各チームごとの特色が出ていた。通常のプロジェクトだと、同じユーザーストーリーで複数チームがプロダクトを作るとか贅沢すぎて出来ないと思うので、プロダクトの比較をするという良い経験ができた。

事前に、各チームごとにPOとユーザーストーリーの中身や優先順位について話し合っていたため、第一スプリントから出荷可能なプロダクトが出来ていた。

ただ自分たちで作成したユーザーストーリーから着手したチームは、プロダクトについての理解が浅い状態で作成したユーザーストーリーだったため、そこにPOの意思が見えずに苦労していた。

ユーザーストーリーの内容に、チームとして理解できるているか(なぜ必要なのかを含めて)がスプリント中に混乱が起こるか起こらないかに、かなり影響するということを経験出来たのではないかと感じました。

完了の定義(Difinition of Done)の導入

経緯

前回のイベントでは、完了の定義を設けなかったため、スプリントレビューの際にチームがプロダクトオーナー(PO)からの質問にそれなりに答えられていれば、レビューOKという流れが何となく出来てしまいました。
そのため、終了時間が差し迫った後半のスプリントに作成したプロダクトの出来がちょっと雑になってしまう傾向がありました。

Try

その反省を踏まえて、予め用意したユーザーストーリー全てに完了の定義を設定しました。
POは、スプリントレビューの際に、この完了の定義を確認することで明確に完了と判断することが出来ました。

気付き

予め完了の定義を与えられているとチームはスプリント内に検証環境(デモ用に用意されたテーブル)に作成途中のプロダクトを持って行き、完了の定義を満たしているか自分たちでチェックを始めました。

これは、前回のイベントでは無かった行動でした。
完了の定義を設定し事前にチームに共有しておくことで、チームは作成途中のプロダクトを使って常に完了の定義をクリアしているかをチェックしながらプロダクトの作成を行っていました。

実際のプロジェクト開発でも、チームの成熟度に応じた完了の定義をチームで作成&共有することで、コミットされたソースコードの品質を一定に保つことが出来るということの擬似体験が出来たのではないかと感じました。

最後に

参加者の方に、振り返りを兼ねてコメントを頂いたのですが、その中でも
* プロダクトの内容が面白かった(社内でパクらせて下さいw)
* ユーザーストーリーのボリューム感がちょうどよかった
* 時間の関係なんだけど、前半のユーザーストーリーの作成までをもう少しじっくりやりたかった
などの意見を頂きました。
2回目ということで主催者側としては、1回目の反省点をフィードバックした内容に出来たかなと。
3回目を行うなら、ユーザーストーリーのところをもう少し厚めにできる工夫を凝らしたい。

当日の風景

写真 2014-08-09 15 52 30

写真 2014-08-09 15 53 01

「DevLOVE関西×泥臭い受託開発を語り合う」で発表してきました

今回発表させていただいたのには理由がありました。

訳あって7年勤めた会社を退職しました。
その際一緒に仕事をしていた人への引き継ぎを行っていたのですが、丁度DevLOVE関西で「泥臭い受託開発を語り合う」勉強会が開催されるということで、ここに引き継ぐ人に参加してもらって、ここで引き継ぎを完了させようと勝手にたくらんでいました。

ところが主催者側の都合で開催時期が2ヶ月伸びてしまったのと、引き継ぐ予定の人に開催日を伝えるのを忘れたため、結局ただの発表となってしまったという経緯がありました。無念。

すごくコンテキストを絞った発表だったため、お役に立てるかかなり心配だったのですが終わった後素敵なフィードバックを複数頂きました。
参加された皆様、資料をご覧になってフィードバックをくれた皆様有難うございます。

7年間勤めた会社で得た自分なりの経験を引き継ぐ人に少しでも伝わればという思いで作成した資料だったのですが、同じ境遇の方に何かを感じ取って頂けたため無駄にはならなかったというだけでもすごく嬉しい日となりました。
また、退職した実感が湧いていなかったため自分にとっても卒業式的なイベントとなり、お陰様で無事卒業出来ました。

普段は京都アジャイル勉強会で素振りを行っています。発表資料の内容やアジャイルに興味をお持ちの方は是非お立ち寄り下さい。

スクラムによる受託開発#2

〜スクラムを学び始めた自分へ、今伝えられるなら何を伝えたいか〜

7年前にスクラムを学び始めた自分に、今の自分がスクラムを伝えるなら何を伝えているだろうか。

契約について

スクラムで受託開発をする場合の契約は、どうすれば良いのだろうか?

NobMouse via flickr

Contracts

最近では、IPAが非ウォーターフォール型開発時の契約書を公開している
http://www.ipa.go.jp/sec/softwareengineering/reports/20120326.html

他にも、@kdmsnrさんが翻訳してくださっている「次のアジャイルソフトウェアプロジェクトに使える10の契約」もすごく参考になる。
http://capsctrl.que.jp/kdmsnr/wiki/transl/?10-agile-contracts

ただ、実際のところ受託開発で下請け側の意向で契約形態の変更は、かなりハードルが高い。
大抵は、会社全体で同じ契約書を使用しており、それをプロジェクトに依存する箇所(※1)のみ変更して契約している場合が多いと思う。

では、契約方法が変更できないからスクラムでの開発は出来ないのかというと、案外そうでもない。プロジェクトのコンテキスト(※2)に依存するところは多分にあると思うけれど、
「契約が変えられない=スクラムを導入できない」
では、思考停止してしまう(実際そう思っていた時もあって、プラクティスに走ったりもしたけれど。。。)
では、どうすれば良いのだろうか?

何も変えないという方法

実際のプロジェクトで契約しているのは、納品日と金額と納品する成果物だけであって、どのストーリーを実現するかを契約書に記載しているわけではない(あくまで自分の場合はだけれど)。

ということは、決められた金額、納期、成果物を満たしつつ、よりユーザーにとって価値のあるストーリーからプロダクトを作り、その都度フィードバックをもらい、大きな変更については他のストーリーとの優先順位をつけてもらい、今回の開発から外して、次回の改定に回してもらうなどの交渉を行いながらやっていく。

実際ユーザーもプロジェクトのかなり早い段階で、プロダクトに触れる事ができるため、真剣にプロダクトを触りながら、優先順位やフィードバックを出してくれる。
(見慣れないExcelファイルに書かれた図と小さい文字をみて内容に承認を求められ、その結果、数カ月後に作りましたと初めて見せられた時には既に修正するには手遅れなどという状況にはなりにくい)

実行するにはいくつか注意点も

Warning breakdancers!

受託開発をスクラムで行うには、READYになっておく必要があり、これらもそのための準備だと言える。

  • ”要件定義”から参加するプロジェクトであること

要件定義の段階から、ユーザー、発注側とスクラム開発に向けた準備を進める必要がある(あくまで、スクラムの準備だと考えているのは開発チームだけ)。
主に、インセプションデッキ(※3)を使用してその準備を行っている。
ただし、インセプションデッキは、要件定義〜基本設計の間に作成してこそ本来のパワーを発揮するツールだと思う。
詳細設計からスクラム開発を行うと、かなりの部分で交渉の余地がなくなっているため、その段階でインセプションデッキを作成しても、現状の把握には利用できるが、交渉の余地があまり残っていない分、その効果も低い。

  • 発注側に、開発途中のプロダクトをユーザーに見せて確認する旨を伝え、了承を得ていること

事前に発注側に
「今回のプロジェクトは不確定要素が多いため、リスクヘッジを兼ねてプロジェクトの早い段階からユーザーに単体テストが完了しているプロダクトをお見せしてフィードバックをもらいたい」(※4)
と正直にお伝えすること。
決して、スクラムを使用して開発しますなんていう必要はない(言うことで、逆に抵抗にあうことだってありうる)。
リスクヘッジについて考えてくれているということで、好意的に取られる可能性もある。

契約も標準もリスクを管理(or回避)するための手段だと思う。
それを考えた人たちには、すごく意味のあるものだけれど、その恩恵を受けるところからしか関わったことのない人たち(自分も含め)には、なぜ契約と標準があるのかもセットで伝承しないと、その有り難みも弊害も理解できない。

スクラムを使った開発を行うということがきっかけで、この辺りに疑問が持てるようになったことも、すごく学びにつながった。

次は、インセプションデッキかな。

※1契約名、金額、納期、納品物など
※2業務系のWebシステム開発で要件定義〜基本設計;準委任契約、詳細設計〜システムテスト:請負契約となることが多い
※3インセプションデッキ自体は、スクラムのツールではないけれど、全てではないにしろ必要な物は、必ず作成したほうが良いと思う。
※4全く不確定要素のないプロジェクトなんてないとも思うけれど

スクラムによる受託開発#1

〜スクラムを学び始めた自分へ、今伝えらるなら何を伝えたいか〜

7年前にスクラムを学び始めた自分に、今の自分が伝えるなら何を伝えているだろうか。

どこから手を付けたらいいのか?

7年前の自分は、スクラムを自分が参画するプロジェクトに適用しようと考えた時に、どうやって、どこから適用しようか色々と試行錯誤した結果、失敗に終わった(※1)。

今、あの時の自分に教えるなら、まず何から始めることを教えるかな。

スクラムは開発ツールの一つ

ツールとして使用できるようになるまでには、それなりの準備が必要。

いきなり使って、すぐに上手には使えなくて当然で、まずは、次のステップをふんでチーム作りから進めたい。

 

Step1.

組織内で1人は、サラリーのためだけに仕事をしているのではなく、より良い物をユーザーに届けたいという思いがあるメンバーを見つけ、チームに入れること

最初のフォロワーは、自分で見つけるということ。
(有名なこの動画の様に最初のフォロワーが見つかればよいが、見つからなかったら見つけるしかない)

何がユーザーにとって本当に必要な価値であるかを話し合えるメンバーがいて、開発中に2人でそのことについて話していると、次第に他のメンバーも巻き込まれていく。
つまり、2人でどれだけちっぽけでも良いので、まずは同じ目的地に向かうバス(※2)を作ることが、重要だと思う。何も、いきなり全員バスに載せる必要はない(そういえば、いきなり全員バスに乗せようとして失敗したことも。。。)

他のメンバーが仕様書を実装するあまり、ユーザーの価値を考えて開発できなくなっているメンバーだった場合(悪い人では決してないのだけれど)、1人でどれだけ熱く語ったところで改宗してもらうための努力は、徒労に終わることが多い(手を動かすオペレーターという役割が長すぎて、そもそも価値って何?となっている人も少なくない)。
相手にとって興味が無い事へ興味を向けさせることほど、大変なことはないと思う。すくなくとも自分の場合そうだった

まさに北風と太陽で、バスに乗ってほしいのであれば、矯正するのではなくて、バスに乗って楽しそうにしているところを見せれば良い。

 

Step2.

1人見つけたら、一緒に社外のスクラムイベントに参加して、スクラムを最初から最後まで通して学べるワークショップに参加すること

image via “Scrum Simulation with LEGO”

スクラムの開発プロセスは、1枚の図でよく表されていることが多い。
それだけ、プロセスについての表面的な理解はそんなに難しいことではない。
でも実際にやると、

  • プロセスをなぞってはいるものの、チームのやる気が今までと何も変わらない(やらされている感)
  • 本当にユーザーに価値を提供できているのか(ただのスクラムごっこ(※3)の成果物となってはいないか)?
  • チームは、リズムにのって開発を行っているか?
  • 日々改善する努力を行えているか(ふりかえりで出た、改善策は出しただけになっていないか)?
  • など、ただ、スクラムのプロセスにそっているといったことにはなっていないだろうか。

    スクラムを実践する前によく考えていたのは、「1度でいいからスクラムで開発しているチームに参加することができれば、自分でも出来る気がする。」という思い。

    そんな時は、社外のスクラム勉強会にぜひ同じチームのメンバーと参加してほしい。
    そして、できれば1日でスクラム体験が出来るワークショップが良い。

  • 実際に、スプリントを回していくとはどういうことなのか?
  • プロダクトオーナーにデモするプロダクトがないときのバツの悪さ
  • 荒ぶるプロダクトオーナーにどう対処するのか?
  • スプリントを重ねるごとに、その日即席で出来たチームがすすんでお互いを助け合いタスクをこなしていく感覚
  • ベロシティを上げたいと思う気持ち
  • など、たった1日だけのワークショップだけど学びは1プロジェクトを終えたぐらいの学びがある。
    素振りと呼ぶには、十分な体験が得られる。

     

    Step3.

    そのワークショップで、スクラム開発での経験を持っている人たちと知り合い、悩みがあればいつでも相談出来る場を見つけること

    jonevans94 via flickr

    Thinking

    スクラムはスポーツと同じで熟練度によって楽しみも辛さも学びも異なると思う。

    だから、スクラムは学び続ける必要があるし、仮に1つのプロジェクトで上手く行ったからといって、次のプロジェクトでも上手くいくという保証はない(上手くいかなかったのならなおさら)。
    要は、いかにしてチームで早く基礎になる部分を体得して、そこからさらに楽しめるようになるか。
    一度楽しめるようになったらどんどん価値を生み出すことが出来て、どんどん楽しくなっていくと思う。

     

     躓いてしまった自分へ

    この先長く続くプロジェクトを一人で生き残るのは結構きついと思う(納品後のプレッシャーとかは、実際きつかった)。

    でも、

  • 同じチーム(もしくは組織)の人がより良い物をユーザーに届けたいという思いが感じられない
  • イベントに誘ってみても、いまいち興味を抱いてもらえなかった
  • などということももちろん、あると思う。

    そんな時は、思い切って社外の勉強会に参加している人を、自分のチームに参加してもらうことも考えてみてはどうだろうか。
    権限がないかもしれないけれど、上司だって優秀な人材を探しているし、SIerの場合、大抵職務経歴書をみただけで、雇うかどうか決めなければいけないわけだから、自分の部下が積極的に優秀な人を連れてきてくれることは、上司にとっても嬉しいことではないだろうか。

    また、上司に頼んで派遣の方の面接に一緒に参加させてもらい、自分で直接チームに加わる派遣の方を採用するという方法はどうだろう。
    スクラムはチームの文化をすごく重要視していると思う。
    技術は教えられたとしても、考え方や感じ方が異なる人とチームを組むことはすごく難しい。

    であれば、面接に一緒に参加させてもらい、自らチームのメンバーとなる同じ文化の人を採用してみるのも手段の一つだと思う。

    これで、7年前の自分が一歩踏み出せるかは、甚だ疑問だけれど。

    ※1 ここでの失敗は、スクラムのプロセスにのっとった開発すらできなかった
    ※2 アジャイルサムライの第3章「みんなをバスに乗せる」に因んで
    ※3 チームが自発的に改善に取り組んでおらず、”時間が来たから”、”支持されたから”スクラムを行っている状態をスクラムごっこと言ってみました。

    京都アジャイル勉強会#6

    さて、6/22に京都アジャイル勉強会第6回を行いました。

     

    期待すること

    アジャイラーとして出荷可能になる為に必要な、ストーリの完了の定義を考えるというもの。
    そもそもアジャイラーとして何が出来れば、どこにいってもアジャイルラーとして振る舞えるのかというところを、京都アジャイル勉強会なりに定義して、それを完了する為に必要となる知識・経験・気づきを自分たちで考えたワークショップを行うことで身につけようという試み。

    実践した内容

    参加者18名で3チームに分けて行なった。
    • チームごとにストーリーを選択し、それについてのワークショップを考える。
    • ワークショップが出来たチームが、他のチームにワークショップを行ってもらう
    • ワークショップを行ったチームが、作ったチームの想定した知識・経験・気づきを得られたか確認する
    • ワークショップを作ったチームは、KPTを行い更なるブラッシュアップを行う。
    といった感じ。
    開催前はいつもおそるおそるだけど、今回不安に思っていたことは、
    • 1つもワークショプが出来ないのではないか?
    • 作って、やってみてもかなりシラケてしまうのではないか?
    • アジャイルにどっぷり染まっている人から初参加の方まで色々いる中で、皆が何かを持ち帰られるのだろうか?

     

    この辺りが、結構不安だった。

    一度失敗しているので、同じ過ちは踏みたくないなと。

    結果

    実際のところ自分のチームしか分からなかったけれど、回りの反応を伺ってもかなり面白かった様子。

    ワークショプが完成してもしなくても、自分たちがアジャイラーとして出荷可能となる為に選んだストーリーの知識・経験・気づきを得られるワークショップを考えるということは、それだけそのストーリーについて考え・知る必要があり、ワークショップを考えるワークショップを行うことで実は既に、知識・経験・気づきが得られているのではないかと感じた。(メタワークショップになっていた感じ)

    3チーム中2チームがワークショップが出来たので、実際にやってみたり、やってもらったりしたけれどかなり楽しめたし、気づきが得られた。

     

    まとめ

    ワークショップの完成度としては、まだまだ低いためワークショップをやった人たちより、ワークショップを考えた人たちの方が気づきをより多く得られたのではないかと思う。
    あと、最初から完成したワークショップを提供するのではなくて、早い段階でいったん他のチームにやってもらい反応をみてブラッシュアップする方が時間内により完成度の高いワークショップが出来ると思った(この辺りはリーンスタートアップと似ていると思う)。

    今回考えたワークショプもブラッシュアップして行きつつ、ワークショップを考えるワークショップは引続き行って行きたい。

    次回は、第7回

    隔週で行っている甲斐あってか大分リズムが感じられるようになってきた。

    出荷可能な製品が出来上がっている感じがして面白い!

    京都アジャイル勉強会#3

    5/11に京都アジャイル勉強会を開催しました。

    京都アジャイル勉強会#3

     

    今回は、完全に反省。

    正直開催前から一抹の不安はあったのですが、それを解消できないまま開催してしまいました。

    反省点。

     

    1. 京都アジャイル勉強会の運営者側の仕事を参加者にもしてもらっている感が否めない
    2. ぱらぱらと集まるため、時間通りに参加される初参加の方が時間を持て余す
    3. アジャイル知っている前提で進むことに疑問を抱いていない

     


    主催者MTGで@Posauneともう少し当日の絵の擦り合わせが出来ていれば良かったのですが、それができないままだったことに深く反省。

    勉強会の前提として、アジャイルサムライに書かれてあるプラクティス(主にインセプションデッキ)をもう一度やり直そうというのが大きくあり、アジャイルサムライ読書会のときにはインセプションデッキの内容を続きで行えなかったので今回はインセプションデッキ〜実際に物をつくるところまでを通しでやってみようという続き物に途中から変わっていきました。

     

    それはそれで問題ないのだけれど、そうなった段階で読書会から参加して頂いているほぼ運営メンバーと呼べる人たちだけを参加者として行えば良かった。

     

    一般参加を募っているいじょう今回の進め方は完全に身内話に巻き込んでしまった感が否めませんでした。

     

    インセプションデッキしているのに、バスに乗っていない人が多数いるみたいな。

     

    既に第4回の募集を行っているので、今回の反省を生かしつつ全員バスに乗って出発できる勉強会にしていきたいと思います。

     

    XP祭り2012~技術指向で行こう!~ に参加

     

    #xpfes12

    TDDとスクラムの事例がお目当てでXP祭り関西に参加してきました。

     

    アジャイル開発における計画と管理〜アジャイルのプロジェクトマネジメント〜

    システムインテグレーター 梅田弘之氏

    概要は、アジャイルでもプロジェクトマネジメントは必要だという話。
    ご自身が取締役社長ということで経営者からみてアジャイル開発がどう見えているのかという内容でした。

    ウォーターフォールを敵視するな

    基幹業務などでは、ステークホルダも多く色々な調整を行ったりしていれば、要件定義に3ヶ月かかってしまうこともあるわけで、その辺りを理解する必要がある

    たしかに、基幹業務などでは億単位の金額が扱われたり関係する部署がとても多かったりでヒヤリングするのにも結構時間がかかると思う。実際、中には色々な人がいて(そもそも利用者が物理的に遠かったり)すんなりヒヤリングできるわけでもなかったりするし。

    ただ、要求を決めるためにかかった3ヶ月がどういった内容かにもよるかなとも思いました。

    一度に要求を決めようとすると要求を決める関係者それぞれが少しずつ返信が遅くなるだけで結構な待ち時間ができて、それが積もるとそれなりの時間になり結果的に要求の決定が遅れるという事態の原因の一つになるのかなと。

    ウォーターフォールの場合、フェーズ毎に作業が進んでいくため後工程になればなるほど手戻りの発生する箇所が増える。
    それを意識するあまり、仕様の決定が遅れかつ、納期がまだまだ先なため決めきれないというのがあると思う。
    そこに、タイムボックスを適用することで要求を決める人も全ての要求を要求定義のフェーズで決めきらないと駄目だと思っていたのが、この機能についてだけ決めてくださいに変わるので、要求分析やヒヤリング対象が絞られて要求が決めやすいのではないかと思う。

     

    ただ、適用が難しいかなと感じるのは、実際のリリースはずいぶん先なのに1イテレーション(スプリント)の終わりを本当のリリースと同じように扱えるかというところ。
    要求を決める人が今回はスクラムを行うと同意している場合は協力的になってもらえる(もらえないと困る)と思うが、要求を決める人が加えられずにスクラムを行う際のリスクはこのタイムボックス内に要求を確定してもらえないというところかなと思う(アンチパターンだけど)。

    ウォーターフォールは、売れる物を作るのが苦手

    梅田さんのところでは、パッケージ製品の開発が主な開発でその際パッケージ作成とそのパッケージをお客さんに導入する開発は別と仰っていた。

    パッケージ作成は、内部の開発だからハンドリングがすべて会社でできるためアジャイル開発向き
    ウォーターフォールは売れる物を作るのが苦手

    たしかに自社製品を作るのに、ウォーターフォールでは作れない。

    お客さん向けの仕事にどうアジャイルを取り入れるかが最大の課題でありチャレンジ
    アジャイルでやっても作るものによって犠牲にすることが異なる。
    プロダクト開発は、スコープを犠牲にできる。
    請負開発は、コストを犠牲にするしかない

    請負開発とプロダクト開発で犠牲にするものの違いは全くその通りだと思う。

    この違いは、

    プロダクト開発はスコープを犠牲に出来るけれど、犠牲にしたスコープによって製品が売れるかどうかのリスクを自社で追う必要がある。

    逆に請負開発はコストを犠牲にするけれど製品が売れるかどうかへのリスクは自社で追う必要はない(発注側で仕様を決めてしまうから。作った物は売れてほしいけれど)。

    どのリスクをどちらが負うかによって、犠牲に出来る物と出来ない物が変わってくる。

     

    請負の際にいつも確認するのは
    「納期は最大どこまでのばせますか?」

    ここを聞いておかないと仕様変更・追加に対してコストをかけたとしても残業や休出、過剰なメンバ追加しかコストをかける時間がとれなくなってしまうため、プロジェクトが遅れ始めるとひどい生活が始まってしまう。
    請負開発では、コストを犠牲にするしかないけど生活は犠牲にしたくないというのを、死守できるかどうかは納期が最大どこまで延ばせるかにかかっていると思う。ここで見積もりも合わず、納期も絶対延ばせない案件だと受けないか最悪工数ベースの契約に持って行く場合が多い。

    TDDサイクルを加速する技術たち

    @irof氏

    irofさんのセッションに参加するのは初めてで今回一番楽しみにしていた。
    最初にしっかり「京都アジャイル勉強会」の告知もして頂いた。ありがとうございます。

    以前アジャイルサムライ読書会in京都の懇親会で、テスト版97のこと(あのときはこっちが本編だったな)を教えて頂いてそれ以来自分の中でのTDDへの最初の壁が取り払われた。それから、テストと並走してプログラミングする毎日を送ってます。

    前後のテーブルと会話する形式だったので、メモしきれなかったのだけれど残ったポイントは

    変化しつづけるものは変化に強い

    テストと合わせてjenkinsを使っているとこの言葉は自分的には納得。実際救われたことは何度もある。

    思った通りにうごくコードをかく技術がTDD

    通常は、書いた通りに動く。だけど、思った通りにうごくを実現するためには、テストが必要。

    リファクタリングの終わりどころは次のRedが一つになったら終わり

    仮に一つ修正加えたらRedになる箇所が、複数ある場合はまだリファクタリングできるとのこと。

    どれも禅問答のような言葉だけど、話を聞いているとストンときます。

    きっと自分で気づかないと意味がないから自分で気づきやすいように考えてもらって結果を共有して、自分の意見を述べるというセッションにしたのかなと思った。

    例え悪いかもしれないけれど、倒幕するときにも草の根運動のようにこのような議論の場が持たれて最後は大きな仕事に結びついたように感じた。

    なので、チームへの啓蒙の第一歩は、自分がテストを書き続けて周りにその良さを広めることでしか実現できない(もしくはirofさんのセッションを受ける!?)と思うので、やっぱり自分が書き続けて周りにTDDの良さを感染させるしかないのかなと思いました。

    大規模なゲーム開発をスクラムで

    田口 昌宏氏

    大規模なゲーム開発で実際にスクラムを取り入た際の事例紹介でした。

    面白さを見積もり時に組み込むことは難しい

    スクラムに取り組んだ際の動機だったと思う。

    午前の梅田さんのお話ともリンクするのだけれど、試行錯誤する開発についてはスクラムはとても適用しやすい。

    1スプリント2週間で隔週水曜日にスプリントプランニング
    火曜日にレビュー、お菓子付きショーケース

    懇親会に参加できなかったので、聞けなかったのだけど水曜日にスプリントプランニングを設定したのはなぜか聞きたかった。

    田口さんのお話を聞いていて一貫して思ったのが、まずやってみる。
    それで問題が出たら、その問題を解決するために対処する。それがスクラムのツールでカバーできるところはツールを導入し、その導入もただ入れてみるのではなく実際にチームに適用するように随所に工夫が施されていた。
    (コミュニケーションに問題出たので朝会導入。ただし2チームで朝会の開始時間をずらして実施。それぞれの朝会の内容を共有できるようにしたなど)
    スライドの写真を見ていて思ったのは、参加している皆が本当に楽しそうにやっているところ。

    朝会やタスクボードでかしこまったミーティングがなくなった。

    確かに、かしこまったミーティングがあるところは日常的にコミュニケーションに問題がある。
    プロジェクトが遅延してくるとミーティング多くなるのはこのせいかなと感じる。日頃からコミュニケーションがとれていれば、遅延してきたからといってミーティングを増やす必要はないはず。

    3〜4時間のプランニングで制度の高いものが出来る

    これは、プランニングポーカーしているととてもよく思う。自分はそこででた意見を実際に見積もりや開発時のチェック項目としてあげたりしている。
    京都アジャイル勉強会でもプランニングポーカーをしていると、自分が考えていなかった意見がぽんぽん出てくるのですごく参考になる。

    10名超えると朝会で話す内容が薄くなったので、チームを分割。スクラムマスタも2名に導入
    壁は情報発信継続力がすごいし、壁は解像度が高い
    ショーケース時の品質は、落ちたらアウトぐらいにしている。全テストを通らないと駄目とかではない

    などなど。

    参考になることばかりだし、すぐに自分も取りいれて自社ではどうなったのかを共有したいと思うことばかりでした。

    もっと色々聞きたかったのだけれど、懇親会には参加できなかったのでまたどこかでぜひお話を聞きたい。

     

    まとめ

    スクラム開発を取り入れている人の話を聞いていると、「巻き込み力」とでもいうのか回りの人をその気にさせるのがとてもうまいなと感じた。

    スクラムに限らずだけど、知→無知への提案はなぜか上→下のような関係になりやすい気がする。普段からの関係性がとても良好なので提案しても上→下の関係にならず対等に論じあえるのだと思う。

    日頃から傾聴することが大事だとつくづく感じた。

    京都アジャイル勉強会#1

    京都アジャイル勉強会について

    アジャイルサムライ読書会in京都が終わり、引続きアジャイル導入を考える方達(自分も含め)のための勉強会を京都で行うということで、そのまま「京都アジャイル勉強会」という名前で、人も内容もほぼそのままに始まりました第一回。

     

    アジャイルサムライは読んで終わりでなく、実践して経験値を積むときの指南書となる本だと思うので「京都アジャイル勉強会」では、アジャイルサムライにでてくる数々の手法を本番前に何度も経験し失敗し、本当に身体で覚えるまでやって本番は楽に乗り切ろうという試みのもと行っています。

     

    もちろん既に本番をやっているけれど、経験値を積みたいという方も大歓迎(実際に数名参加されています)。

     

    第一回となる今回は、「色々試そうプランニングポーカー」と題してプランニングポーカーで色んなことを試して、試した結果を皆で考え共有しようということで行われました。

    実践

    参加者が、11名だったため、5名、6名の2チームに分かれて各藩で、プランニングポーカーの見積もり対象となるシステムを決めてそのユースケース出しから入りました。

    私の藩は、「オンライン上の年賀状作成ソフト」です。

     

    そこから、10こ程度のユースケースを考えて、そのユースケースに対して見積もりを行いました。

     

    最初に手持ちのカードは、1、3、5、?の4枚。

    3を基準値として「仕様が大きくぶれにくく規模が大きくも小さくもないユースケースを3としました」。

    その後、それ以外のユースケースの見積もりを皆で行いました。

     

    4枚で見積もりした内容を今度は、1、2、3、5、8、?の6枚にして行い枚数が増えることによって、結果や思考がどう変わるのかを試そうという試みでした。

     

    実際は、1回目の見積もりの内容が本当にシステムを作るかのように議論が熱くなり2回目の見積もりは駆け足となってしまったため詳細に比べることが出来なかったのですが、1回目で見積もりできたユースケースに対してのみ2回目の見積もりを行ったとところ面白い結果になりました。

     

    1回目で同じ3を出していた人同士が、2回目では、2、5になる。

    1人は、2が入ったことで1よりは大きいけど3よりは小さいから3を出していたのが、2が出来たことで2に変わる

    もう1人は、8が入ったことにより3よりは大きいけど5よりは小さいが5をだすとそれ以上大きい値がなくなるため3としていたけれど、8が入ったことにより5に変わる。

    ということを考えていました。

     

    だしたカードが同じだからといって同じ判断でそのカードを選んだとは限らないということが分かる。
    ということは、見積もり時のユースケースの粒度によってはカードの枚数を6枚程度で行いあえて意見が割れるようにしてみることで、チーム内の意見を引き出し安いと感じた。

     

    あと面白かったのは、説明しているうちに意見が変わってしまうことが多々あったこと。

     

    考察

    実際の見積もりだと見積もりが合わない場合に、各機能についてどうしてこんなにかかるのかということを延々と話し合い結果数人日とかひどいときには数時間の削減を迫られたりするのだけれど、実際数ヶ月前に数人日や数時間の想定をしたところでいざ作業に着手したとたんに、あれが必要これが必要とかであっという間に数人日オーバーになっていく。

     

    相対見積もりだと議論になる箇所が、見積もり工数ではなく仕様や前提条件になるため不毛な工数削減に合いにくくそもそも、詳細ではないくせに詳細な話になることが防げるということを改めて実感した。

     

    また、今回ユースケースについてはあまり時間をかけずに作成したため、内容についての前提条件が確定していなかったこともあり、実際にカードを出し合ってからの議論が長くなった。

    見積もりを行う前に、ユースケースの前提条件や理解度を合わせておいた方が工数の決まっている本番では良いと感じた。

     

    余談

    CSMの研修でプランニングポーカーを行った際も、仕様について15分ほど話し合う時間がさかれたと思う。

    ただ、その時面白かったのは出された仕様をチームで検討する時間を与えるので、仕事を受けるかどうか答えてくれというもので、検討後チームの代表が前に言って講師に仕様を受けるかどうかを聞かれた際にチームの代表の仕様についての質問はいっさい受けずに、とにかくYesと言わせようとしていたこと。
    で、あまりの講師の圧力になし崩し的に大半がYesと答えてしまっていた。

    ここでは、絶対に圧力に屈しては駄目で即席の見積もりや、安請け合いは結局交渉の条件に使われてしまうという教訓だったと思う。詳しくは「リスバーガー」で検索すると分かる。

     

    次回も引続き「色々試そうプランニングポーカー」をやります。