Upload
kenji-hiranabe
View
11.547
Download
0
Embed Size (px)
DESCRIPTION
James Grenning's Keynote at Agile Japan 2013. "Demand Technical Excellence" with Japanese subtitle by Kenji Hiranabe. http://www.agilejapan.org/2013/program.html#01
Citation preview
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Present to
Tokyo, JapanBy
James Grenning
Demand Technical Excellence
http://www.pragprog.com/titles/jgade
アジャイルにおける技術と品質の重要性
Talk to me on Twitter@jwgrenning
Find me on linkedin.comjwgrenning
Please remind me how we met.
2Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Kent Beck Ron Jeffries
Ward Cunningham Martin Fowler
3Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
How Did I Find Myself at Agile Manifesto Meeting?
James, do you want to go to the Lightweight Methods Summit in Snowbird?
Skiing!
Sure Bob, I’ll go….
なぜアジャイル宣言に参加したか?
Robert Martin
4Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Before the Manifestoアジャイル宣言以前
5Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
6
7Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
8Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
That may not have been Watts’ intention, but it was the
message that industry was hearing
Watts’ は意図していなかもしれないが、これが産業に与えたメッセージ。
9Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 9
RWaScZ^\TUR,��$
=?G/Z^\TUR,�F�*1O2G�*Q��7Q;O�Q+:B/LNL2,���Q#A7><3C9B2O0
8F�Q+9B/ =?G��F��E"@=0
_dYXK[fc.LNJ.��C�'Q/��D]Vb`e\.LNJ.6Z^\TUR
Q/�!��.LNJ.-�CF�)Q/
%�E�38C.LNJ.��HF��Q/��C;O0;DP?/�&F8C5ME��51O8CQ(ID5MJ/ =?G &F8C5MELN��Q460
11Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 11
一行目であり、一番重要な文章は「人」を強調している。12
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
People and Values were Central to Forming Agile
「人」と「価値」がアジャイルの中心
13Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
13
Software development is
not centrally about the
process and documents
ソフトウェア開発は「プロセス」と「ドキュメント」が中心ではない。
14Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
It’s about the code, the customer, the product!
than
ks:
lum
axar
thtt
p:/
/ww
w.f
rees
tock
photo
s.biz
/lic
ense
.php?i
d=
9749
それは、「コード」、「顧客」、「プロダクト」なのだ!
15Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Great teams of people
build great products
Process is secondary,
at best
すごいチームがすごい製品を作る。
プロセスは、せいぜいでも二次的。
16Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Will anyone care about these bullet points?
もうだれもこの4つを気にしていない?
17Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Agile’s Impact is
Beyond our Wildest
Dreams
It’s likely no one will care.
だれも気にしなくなる。
アジャイルの衝撃は、想像を超えた。
18
0
37500
75000
112500
150000
2002 2003 2004 2005 2006 2007 2008 2009 2010
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Certified Scrum Masters認定スクラムマスターの数
19Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What is Scrum? Scrum is a very simple framework within which the “game” of complex
product development is played. Scrum exposes every inadequacy or
dysfunction within an organization’s product and system development
practices. The intention of Scrum is to make them transparent so the
organization can fix them.
From an interview with Ken Schwaber on agilecollab - http://www.agilecollab.com/interview-with-ken-schwaber
Ken SchwaberScrumは新製品開発(複雑系)というゲームのルールとしての、シンプルなフレームワーク。Scrumは組織の製品およびシステム開発の能力不足、機能不全を露にする。Scrumの意図は、それらを「透過的にし」、組織が
自らそれを修正できるようにすることである。
Scrumとは?
20Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What Can Scrum Do?
20
Jeff SutherlandFrom: Scrum with XP and Beyond
Productivity 5-10 times industry average has been observed in many
Scrum teams since 1993.
1993以降、Scrumを使うことで生産性が産業平均の5-10倍というケースが観測されている。
Scrumに何ができるか
21Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Ken, What is Happening Generally in Scrum Adoption?
Unfortunately, many organizations change Scrum to accommodate the
inadequacies or dysfunctions instead of solving them.
From an interview with Ken Schwaber on agilecollab - http://www.agilecollab.com/interview-with-ken-schwaber
Ken Schwaber
不幸にも、多くの組織がその能力不足や機能不全を解決するのではなく、それに合わせて
Scrumのやり方を調整してしまう。
Kenに聞く。Scrumの採用で起こりがちなことは?
22Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
23Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
24Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
欠かすことのできないデブリーフィング
25Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Debriefing is about continuous
improvement
James Murphy
Debriefing とは、継続的改善だ。
26Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Not long after graduating college, I joined an office product company and started selling copiers. I loved
what i did.
James Murphy
大学卒業後、事務機会社に就職。コピー機を販売した。自分の仕事を気に入っていた。
27Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
I had no flight experience…, but I was
going to fly jets.
James Murphy
If I could not learn fast, I would be out of the
program
フライトの経験はなかった。でも、ジェット機を操縦することになった。
もし速く学習することができなければ、すぐに外されてしまう。
28Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Just two years after signing up, I was not only flying, I was flying the supersonic F-15 Eagle
サインアップしてから2年後に、飛行機を操縦できた。それも、超音速 F-15 イーグルを。
29Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
欠かすことのできないデブリーフィング
30Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
We don’t hide our weaknesses... we
think it weak to hide our mistakes.
自分の「弱さ」を隠さない。間違いを隠すことこと、「弱さ」だ。
31Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
10年前のアジャイル宣言。その記念企画を思いついた。日付は2011年2月12日、場所はスノーバード。そこに行って会議室を予約してきた。
32Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
33Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Debrief: What do
we, as members
of the agile
community
need to fix?
デブリーフィング:アジャイルコミュニティとして、私たちは何を直すべきだろう?
34Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
10 Year Agile Celebration
35Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
We believe the agile community must:
#1 Demand technical excellence
#2 Promote Individual [Change] and Lead Organizational Change
#1:技術的卓越を重要視する#2:個人の(変化の)重要さを尊重しながら組織変革をリードする。
アジャイルコミュニティがしなければいけないこと
37Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Remember what Ken Said?
"…………………………………………….…………………………...…………………
…………………………………...…… The intention of Scrum is to make them [the problems] transparent so the
organization can fix them."
Ken Schwaber Unfortunately, many organizations change Scrum to accommodate the
inadequacies or dysfunctions instead of solving them.
Kenが言ったことを思い出す。
38Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What’s the Problem?
from: Scrum with XP and Beyond
The biggest problem worldwide for Scrum teams is getting shippable code
at the end of every sprint.
Jeff Sutherland
何が問題か?
世界中のScrumチームで最大の問題は、毎回のスプリント毎に出荷可能なコードを作ること。
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Hardening Sprints
39
Sprint 1 Sprint 2 Sprint 3 Sprint 4 Hardening SprintTest and Fix
Test and Fix Test and Fix
Test and FixTest and FixTest and Fix
(焼きなまし=品質向上のためのスプリント)
Copyright © 2008-2011 James W. GrenningAll Rights Reserved. For use by training attendees.
Do Your Hardening Sprints Degrade into a Fire Fight?
40
品質向上スプリントが、消火活動になってない?
41Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Being good at chasing and managing bugs is not Technical Excellenceバグを追っかけて管理することは、技術的卓越ではない。
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
We believe the agile community must:
#1 Demand technical excellence
#2 Promote Individual [Change] and Lead Organizational Change
#1:技術的卓越を重要視する#2:個人の(変化の)重要さを尊重しながら組織変革をリードする。
アジャイルコミュニティがしなければいけないこと
43Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The cadence of development changes with Scrum
Are you changing the how you engineer your products?
開発の順序がScrumでは違う。
自分の製品をどうエンジニアリングするか、にも変化が必要
44Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The Marriage of Scrum and XP
44
ScrumとXPの結婚
45
0
37500
75000
112500
150000
2002 2003 2004 2005 2006 2007 2008 2009 2010
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
So Far the Marriage is Unequal
Certifi
ed Sc
rum M
aster
s
249 CSDs
現在の結婚は、不調和
46Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
- A Brief Debrief - Current Development Practice in Industry
47Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 48Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
May 7 11:21:17: --- last message repeated 1 time ---May 7 11:21:17 Cowboy kernel[0]: IOSurface: buffer allocation size is zeroMay 7 11:22:51 Cowboy kernel[0]: IOSurface: buffer allocation size is zeroMay 7 11:23:36 Cowboy kernel[0]: IOSurface: buffer allocation size is zeroMay 7 11:24:06: --- last message repeated 1 time ---May 7 11:26:54 Cowboy kernel[0]: IOSurface: buffer allocation size is zeroMay 7 11:27:24: --- last message repeated 1 time ---May 7 11:41:44 Cowboy kernel[0]: IOSurface: buffer allocation size is zeroMay 7 11:42:14: --- last message repeated 4 times ---May 7 11:51:45 Cowboy kernel[0]: nspace-handler-set-snapshot-time: 1336409506May 7 12:08:58 Cowboy kernel[0]: hibernate image path: /var/vm/sleepimageMay 7 12:08:58 Cowboy kernel[0]: sizeof(IOHibernateImageHeader) == 512May 7 12:08:58 Cowboy kernel[0]: Opened file /var/vm/sleepimage, size 8589934592, partition base 0x0, maxio 400000 ssd 1May 7 12:08:58 Cowboy kernel[0]: hibernate image major 14, minor 0, blocksize 512, pollers 5May 7 12:08:58 Cowboy kernel[0]: hibernate_alloc_pages flags 00000000, gobbling 0 pagesMay 7 12:08:58 Cowboy kernel[0]: hibernate_setup(0) took 0 msMay 7 12:09:01 Cowboy kernel[0]: en1: BSSID changed to 00:40:96:a1:33:c9May 7 12:09:01 Cowboy kernel[0]: wlEvent: en1 en1 Link DOWNMay 7 12:09:01 Cowboy kernel[0]: AirPort: Link Down on en1. Reason 8 (Disassociated because station leaving).May 7 12:09:01 Cowboy kernel[0]: May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall start 0xffffff80d4cff000, 0xffffff80d4f98000May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall time: 415 msMay 7 12:09:37 Cowboy kernel[0]: pages 2040801, wire 338507, act 950045, inact 182445, spec 36, zf 113125, throt 0, could discard act 169869 inact 207719 purgeable 38826 spec 40229May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall found pageCount 1584158May 7 12:09:37 Cowboy kernel[0]: IOHibernatePollerOpen, ml_get_interrupts_enabled 0May 7 12:09:37 Cowboy kernel[0]: IOHibernatePollerOpen(0)May 7 12:09:37 Cowboy kernel[0]: writing 1583874 pagesMay 7 12:09:37 Cowboy kernel[0]: encryptStart 4f820May 7 12:09:37 Cowboy kernel[0]: encryptEnd 108b02c0May 7 12:09:37 Cowboy kernel[0]: image1Size 474682880, encryptStart1 4f820, End1 108b02c0May 7 12:09:37 Cowboy kernel[0]: encryptStart 1c4b1600May 7 12:09:37 Cowboy kernel[0]: encryptEnd b7957b30May 7 12:09:37 Cowboy kernel[0]: PMStats: Hibernate write took 35189 msMay 7 12:09:37 Cowboy kernel[0]: all time: 35189 ms, comp bytes: 6487916544 time: 6366 ms 971 Mb/s, crypt bytes: 2882564048 time: 4618 ms 595 Mb/s, May 7 12:09:37 Cowboy kernel[0]: image 3080027136, uncompressed 6487916544 (535388), compressed 3068648576 (47%), sum1 ec64ffd2, sum2 571d97a2May 7 12:09:37 Cowboy kernel[0]: wired_pages_encrypted 224499, wired_pages_clear 113814, dirty_pages_encrypted 1245651May 7 12:09:37 Cowboy kernel[0]: hibernate_write_image done(0)May 7 12:09:37 Cowboy kernel[0]: sleepMay 7 14:06:05 Cowboy kernel[0]: Wake reason: EC.LidOpen (User)May 7 14:06:05 Cowboy kernel[0]: en1: 802.11d country code set to 'X0'.May 7 14:06:05 Cowboy kernel[0]: en1: Supported channels 1 2 3 4 5 6 7 8 9 10 11 36 40 44 48 52 56 60 64 100 104 108 112 116 120 124 128 132 136 140 149 153 157 161 165May 7 14:06:06 Cowboy kernel[0]: Sound assertion "0 == fAudioEngineArray" failed in AppleHDADriver at line 3163 goto ExitMay 7 14:06:08 Cowboy kernel[0]: Previous Sleep Cause: 5May 7 14:06:08 Cowboy kernel[0]: MacAuthEvent en1 Auth result for: 00:40:96:a0:63:95 MAC AUTH succeededMay 7 14:06:08 Cowboy kernel[0]: wlEvent: en1 en1 Link UPMay 7 14:06:08 Cowboy kernel[0]: AirPort: Link Up on en1May 7 14:06:08 Cowboy kernel[0]: en1: BSSID changed to 00:40:96:a0:63:95May 7 14:06:47 Cowboy kernel[0]: nspace-handler-set-snapshot-time: 1336417608
49Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 50Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
51Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
1979
52Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
2013
53Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Debug-later Programming
Congratulations! These are
state of the art circa 1979おめでとう!これは、1979年ころの状態!
デバッグ後付プログラミング
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The Physics of Debug Later Programming (DLP)
• As Td increases, Tfind increases dramatically• Tfix is usually short, but can increase with Td
54
Bug discoveryMistake made(bug injection)
Bug found Bug fixed
Td Tfind T fix
Time
デバッグ後付プログラミングの原理
•Td が増加すると、Tfind が劇的に増加。•Tfixは通常短いが、Tdが長いと増加する。
55Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
A Bug’s Life
55
From http://www.softwaretestinghelp.com/bug-life-cycle/
56Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
56
Your program will have bugs. And they will surprise you when you find them.
プログラムにはバグがある。バグ自身も、見つけられたときにびっくりする。
57Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Zune 30G
57Dec
embe
r 31,
2008
58Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 58
BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
59Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
59
One That Got Awaystatic void SetYearAndDayOfYear(RtcTime* time){ int days = time->daysSince1980; int year = STARTING_YEAR; while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } }
time->dayOfYear = days; time->year = year;}
見逃したバグ
60Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
This Test Could Have Prevented it
TEST(Rtc, check20081231){ days = daysSince1980(2008, 366); CHECK(ConvertDays(days, &time)); assertDate(WED, 2008, 12, 31);}
(あれば)見つけられたであろうテスト
61Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Where do the bugs come from?バグはどこから来るのか?
62
6363 64Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
It’s Our Fault
James D. Murphy
We put them there
自分自身のしわざ
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
This Work Flow is Designed to Allow Defects
65
Development
Test
Defects
このワークフローは、欠陥の存在を許してしまうように設計されている。
66Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
A Bug’s Life
66
From http://www.softwaretestinghelp.com/bug-life-cycle/
67Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The Meaning of the Marriage of Scrum and XP
67 68Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
XP Defines the Technical Practices Needed for Evolving Designs
XPは進化的設計に必要な技術的プラクティスを定義している。
69Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Edsger DijkstraThose who want really reliable software will discover that they must find means of avoiding the majority of bugs to start with, and as a result, the programming process will become cheaper. If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.
信頼性の高いソフトウェアが必要であれば、バグの大部分を最初から「避ける」方法を探さなければならない、ということに気づくだろう。その結果としてプログラミングのプロセスは安価になる。よいプログラマとは、最初からバグを作り込まないようにし、大切な時間をデバッグに無駄遣いしないプログラマだ、ということに気づくだろう。
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
• Write a test• Watch it fail• Make it pass• Refactor (improve)• Repeat until done
TDD
•テストを書く•失敗することを確認•通過させる•リファクタリング(改善)•繰り返す
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Development and Test are a ContinuumPreventing Defects
71
Development
Test
「開発」と「テスト」は欠陥予防の連続体
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The Physics of Test Driven Development
• When Td approaches zero, Tfind approaches zero• In many cases, bugs are not around long enough to be considered
bugs.• See: http://www.renaissancesoftware.net/blog/archives/16
72
Mistake discovery
Mistake made
Root cause found
Mistake fixed
T d Tfind T fix
Time
テスト駆動開発の物理学
•Td が0に近づけば、Tfind が0に近づく。•多くの場合、バグはバグと呼ばれるほど長く存在しない。
73Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Unit Tests are Critical!
Is your team doing TDD?
Does your team create unit tests?
ユニットテストは、クリティカルだ!
あなたのチームはTDDしている?
あなたのチームはユニットテストを作っている?
74Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
System Level Tests Cannot be Thorough
• How many sub-system tests are needed?
10 states
10 states
10 states
5 interactions
5 interactions
5 interactions
Tests
サブシステムテストはいくつ必要?
システムレベルテストは、完璧には書けない
75Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
TDD unit tests can be thorough
• How many unit tests are needed?
10 states
10 states
10 states
5 interactions
5 interactions
5 interactions
Tests Tests
ユニットテストはいくつ必要?
ユニットテストは十分に書くことができる。
76Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Tests Must be Automated
テストは自動化すること
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
test
Assume Test Effort is Proportional to
Development Effort
dev
Iterations
Effort
5
10
15
20
25
テストのコストは開発のコストに比例すると課程
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
If a system is working, leave it alone. Don't change anything.
Systems don’t appreciate being fiddled and diddled with.
• 25% of all defects are introduced while changing and fixing code.
[R.B Grady, Software Process Improvement]
システムが動いているなら、触るな!何も変えてはいけない。
システムは、勝手に手を加えられるのを嫌がる。
25%の欠陥は、変更したり修正したりするときに混入する。
82Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Because systems act up -- we have to be very careful.システムの振る舞いは気まま。私たちが注意していないといけない
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
test
Manual Test is Unsustainable
Effort
Iterations
Unsustainable growth
dev
5
10
15
20
25 手動テストは継続できない
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Risk Accumulates in the Untested Code
Effort
Iterations
Unsustainable growth
dev
5
10
15
20
25 Untested Code Gap
testテストされないコードギャップに、リスクが累積する
85Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
My Take Away
85
Keep the cost of retest low
Keep the system
running
Tests Must be Automated
今日持って帰って欲しいこと
•テストは自動化する•再テストのコストを低く保つ•システムを動かし続ける
86Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Try to Reframe the Problem
86
We can’t afford to write automated tests, it takes away from adding new features
We can’t afford to not automate tests,
the manual retest time takes away from
adding new features
問題をリフレーム
自動テストを書いている時間がとれない。新機能が追加できない。
自動テストなしという余裕はとれない。手動テストの再テストで、新機能が追加できない。
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
We believe the agile community must:
#1 Demand technical excellence
#2 Promote Individual [Change] and Lead Organizational Change
#1:技術的卓越を重要視する#2:個人の(変化の)重要さを尊重しながら組織変革をリードする。
88Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Technical Excellence isn’t Just Passing TEsts
技術的卓越とは、単にテストを通過させることではない!
89Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What’s Wrong?
Any fool can write code that the compiler
understands, but it takes real skill to write code
other programmers can understand.
From “Refactoring - Improving the Design of Existing Code
どんなバカでもコンパイラが理解できるコードを書くことはできる。しかし、本当にスキルが必要なのは他のプログラマが理解できるコードを書くことだ。
90Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Why does code
structure matter?
コードの構造がなぜ大切か?
91Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
The Two Values of Software
ソフトウェアの2つの価値
92Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Spaghetti Slide
97Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What are We Supposed to Do?
The intention of Scrum is to make them [your problems] transparent so
the organization can fix them.
From an interview with Ken Schwaber on agilecollab - http://www.agilecollab.com/interview-with-ken-schwaber
Ken Schwaber
98Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What is the biggest problem of getting there?
from: Scrum with XP and Beyond
The biggest problem worldwide for Scrum teams is getting shippable code
at the end of every sprint.
96Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
96
Why aren’t you using TDD and Refactoring and
the other technical practices of Agile?
なぜ、TDD、リファクタリング、アジャイルのその他の技術プラクティスを使わないのか?
100Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
What is in your
way?
何が障害なのか?
101101
I don’t have time!!
http://commons.wikimedia.org/wiki/File:Clock_at_St._Mary%27s_Church_in_Gda%C5%84sk.jpg
時間がないのです。
102Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Learn TDD and Agile Development skills.
TDD is faster than DLP
More fun too!
TDDとアジャイル開発スキルを学びましょう。
TDDはDLPより速い。しかも、楽しい!
105Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Developers TODO
105
Beware of limits
ものづくりのプロになれ
新しいことを学んで挑戦せよ自分の組織のアドバイザーになれ
信頼関係を築け。自分の仕事を透明に見えるようにせよ
106
I’ve got 10 years experience!
1 year 1 year 1 year 1 year 1 year
1 year 1 year 1 year 1 year 1 year
107Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
10 Years of Experience Doesn’t Mean You’ve Got Your 10,000 Hours
10年の経験、ということは10,000時間あるということではない。
19991999 2012 2008
2002
2004
20122001
Copyright © 2008-2011 James W. GrenningAll Rights Reserved. For use by training attendees.
`My Boss won’t let me
上司がやらせてくれないんです。
108Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
thanks: lumaxarthttp://www.freestockphotos.biz/license.php?id=9746
We have stretch goals
You know, for motivation.
ストレッチ目標
モチベーションのために。
104Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees. 104
109Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Managers! Realize...
109
個人や組織のモチベーションを上げるのは難しい
でも、モチベーションを下げるのは簡単!
110Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Demotivators
110
非現実的な締め切り
モチベーションを下げるもの
事実を責める
低い品質の仕事をさせる信頼関係がない111
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
I Tried to Avoid Computers
111
コンピュータを避けてきた
113Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Scrum Masters TODO
113
自分のチームが最新のプラクティスの知識を持っているように。
自分の組織が、その重要さを知っているように。
ScrumMasterのToDO
114Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
People are generally doing the best they know
人々は自分が知っている範囲で最善を行う。
必ずしも「知らない」ことを知らない。
115Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Scrum Masters TODO
115
問題解決、を奨励すること
宗教信者にならないように
覚書:Scrumスレーブはない。116
Agile Japan - Tokyo 2013www.renaissancesoftware.net
[email protected] © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Managers TODO:
116
マネジャーのToDo
最高のチームを育てる
モチベーションを下げる要素をなくす
チームのモチベーションを上げようとしない。
117Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
117
How to Improve - Build a Learning Environment
自分のスキルは自分で
ふりかえり
どうやって改善するか – 学習する環境をいかに作るか
118Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
You don’t delight customers with the untested code gap
テストされていないコードギャップでは顧客を喜ばせられない。
119Agile Japan - Tokyo 2013
Copyright © 2008-2013 James W. GrenningAll Rights Reserved. For use by training attendees.
Demand Technical Excellence
Talk to me on Twitter@jwgrenning
Find me on linkedin.comjwgrenning
Please remind me how we met.