Contenu connexe Similaire à Demand Technical Excellence James Grenning keynote at AgileJapan 2013 (20) Plus de Kenji Hiranabe (20) Demand Technical Excellence James Grenning keynote at AgileJapan 20131. Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Present to
Tokyo, Japan
By
James Grenning
Demand Technical Excellence
http://www.pragprog.com/titles/jgade
アジャイルにおける技術と品質の重要性
Talk to me on Twitter
@jwgrenning
Find me on linkedin.com
jwgrenning
Please remind me how we met.
2
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Kent Beck Ron Jeffries
Ward Cunningham Martin Fowler
3
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Before the Manifesto
アジャイル宣言以前
2. 5Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
6
7Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
8
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
That may not have been
Watts’ intention, but it was the
message that industry was
hearing
Watts’ は意図していなかもしれない
が、これが産業に与えたメッセージ。
3. 9Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 9
11Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 11
一行目であり、一番重要な文章は「人」を強調している。
12
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
People and Values were Central
to Forming Agile
「人」と「価値」がアジャイルの中心
4. 13
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
13
Software development is
not centrally about the
process and documents
ソフトウェア開発は「プロセス」と
「ドキュメント」が中心ではない。
14Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
It’s about the code, thecustomer, the product!
thanks:lumaxart
http://www.freestockphotos.biz/license.php?id=9749
それは、「コード」、「顧客」、「プロダクト」なのだ!
15Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Great teams of people
build great products
Process is secondary,
at best
すごいチームがすごい製品を作る。
プロセスは、せいぜいでも二次的。
16Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Will anyone care about thesebullet points?
もうだれもこの4つを気にしていない?
5. 17Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Certified Scrum Masters
認定スクラムマスターの数
19
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 Schwaber
Scrumは新製品開発(複雑系)というゲームのルールとしての、シンプル
なフレームワーク。Scrumは組織の製品およびシステム開発の能力不足、
機能不全を露にする。Scrumの意図は、それらを「透過的にし」、組織が
自らそれを修正できるようにすることである。
Scrumとは?
20
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
What Can Scrum Do?
20
Jeff Sutherland
From: 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に何ができるか
6. 21
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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の採用で起こりがちなことは?
22
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
23
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
24
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
欠かすことのできないデブリーフィング
7. 25
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Debriefing is
about continuous
improvement
James Murphy
Debriefing とは、継続的改善だ。
26
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
大学卒業後、事務機会社に就職。コピー機を
販売した。自分の仕事を気に入っていた。
27
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
フライトの経験はなかった。でも、ジェッ
ト機を操縦することになった。
もし速く学習することができなければ、す
ぐに外されてしまう。
28
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 イーグルを。
8. 29
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
欠かすことのできないデブリーフィング
30
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
We don’t hide our
weaknesses... we
think it weak to hide
our mistakes.
自分の「弱さ」を隠さない。間違い
を隠すことこと、「弱さ」だ。
31
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
10年前のアジャイル宣言。その記念企画を思いついた。日付は2011年2
月12日、場所はスノーバード。そこに行って会議室を予約してきた。
32Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
9. 33
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Debrief: What do
we, as members
of the agile
community
need to fix?
デブリーフィング:アジャイルコミュニティとし
て、私たちは何を直すべきだろう?
34Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
10 Year Agile Celebration
35Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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:個人の(変化の)重要さを尊重しながら組織変革をリードする。
アジャイルコミュニティがしなければいけないこと
10. 37
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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が言ったことを思い出す。
38
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Hardening Sprints
39
Sprint 1 Sprint 2 Sprint 3 Sprint 4 Hardening Sprint
Test and Fix
Test and Fix Test and Fix
Test and Fix
Test and FixTest and Fix
(焼きなまし=品質向上のためのスプリント)
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2011 James W. Grenning
All Rights Reserved. For use by training attendees.
Do Your Hardening Sprints Degrade
into a Fire Fight?
40
品質向上スプリントが、消火活動になってない?
11. 41Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Being good at chasingand managing bugsis not TechnicalExcellence
バグを追っかけて管理することは、技術的卓越ではない。
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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:個人の(変化の)重要さを尊重しながら組織変革をリードする。
アジャイルコミュニティがしなければいけないこと
43
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
The cadence of developmentchanges with Scrum
Are you changing the how you
engineer your products?
開発の順序がScrumでは違う。
自分の製品をどうエンジニアリン
グするか、にも変化が必要
44
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
The Marriage of Scrum and XP
44
ScrumとXPの結婚
12. 45
0
37500
75000
112500
150000
2002 2003 2004 2005 2006 2007 2008 2009 2010
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
So Far the Marriage is Unequal
CertifiedScrum
M
asters
249
CSDs
現在の結婚は、不調和
46
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
- A Brief Debrief -
Current Development Practice in Industry
47Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 48Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 zero
May 7 11:22:51 Cowboy kernel[0]: IOSurface: buffer allocation size is zero
May 7 11:23:36 Cowboy kernel[0]: IOSurface: buffer allocation size is zero
May 7 11:24:06: --- last message repeated 1 time ---
May 7 11:26:54 Cowboy kernel[0]: IOSurface: buffer allocation size is zero
May 7 11:27:24: --- last message repeated 1 time ---
May 7 11:41:44 Cowboy kernel[0]: IOSurface: buffer allocation size is zero
May 7 11:42:14: --- last message repeated 4 times ---
May 7 11:51:45 Cowboy kernel[0]: nspace-handler-set-snapshot-time: 1336409506
May 7 12:08:58 Cowboy kernel[0]: hibernate image path: /var/vm/sleepimage
May 7 12:08:58 Cowboy kernel[0]: sizeof(IOHibernateImageHeader) == 512
May 7 12:08:58 Cowboy kernel[0]: Opened file /var/vm/sleepimage, size 8589934592, partition base 0x0, maxio 400000 ssd 1
May 7 12:08:58 Cowboy kernel[0]: hibernate image major 14, minor 0, blocksize 512, pollers 5
May 7 12:08:58 Cowboy kernel[0]: hibernate_alloc_pages flags 00000000, gobbling 0 pages
May 7 12:08:58 Cowboy kernel[0]: hibernate_setup(0) took 0 ms
May 7 12:09:01 Cowboy kernel[0]: en1: BSSID changed to 00:40:96:a1:33:c9
May 7 12:09:01 Cowboy kernel[0]: wlEvent: en1 en1 Link DOWN
May 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, 0xffffff80d4f98000
May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall time: 415 ms
May 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 40229
May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall found pageCount 1584158
May 7 12:09:37 Cowboy kernel[0]: IOHibernatePollerOpen, ml_get_interrupts_enabled 0
May 7 12:09:37 Cowboy kernel[0]: IOHibernatePollerOpen(0)
May 7 12:09:37 Cowboy kernel[0]: writing 1583874 pages
May 7 12:09:37 Cowboy kernel[0]: encryptStart 4f820
May 7 12:09:37 Cowboy kernel[0]: encryptEnd 108b02c0
May 7 12:09:37 Cowboy kernel[0]: image1Size 474682880, encryptStart1 4f820, End1 108b02c0
May 7 12:09:37 Cowboy kernel[0]: encryptStart 1c4b1600
May 7 12:09:37 Cowboy kernel[0]: encryptEnd b7957b30
May 7 12:09:37 Cowboy kernel[0]: PMStats: Hibernate write took 35189 ms
May 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 571d97a2
May 7 12:09:37 Cowboy kernel[0]: wired_pages_encrypted 224499, wired_pages_clear 113814, dirty_pages_encrypted 1245651
May 7 12:09:37 Cowboy kernel[0]: hibernate_write_image done(0)
May 7 12:09:37 Cowboy kernel[0]: sleep
May 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 165
May 7 14:06:06 Cowboy kernel[0]: Sound assertion "0 == fAudioEngineArray" failed in AppleHDADriver at line 3163 goto Exit
May 7 14:06:08 Cowboy kernel[0]: Previous Sleep Cause: 5
May 7 14:06:08 Cowboy kernel[0]: MacAuthEvent en1 Auth result for: 00:40:96:a0:63:95 MAC AUTH succeeded
May 7 14:06:08 Cowboy kernel[0]: wlEvent: en1 en1 Link UP
May 7 14:06:08 Cowboy kernel[0]: AirPort: Link Up on en1
May 7 14:06:08 Cowboy kernel[0]: en1: BSSID changed to 00:40:96:a0:63:95
May 7 14:06:47 Cowboy kernel[0]: nspace-handler-set-snapshot-time: 1336417608
13. 49Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 50Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
51Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
1979
52Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
2013
14. 53
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Debug-laterProgramming
Congratulations! These are
state of the art circa 1979
おめでとう!これは、
1979年ころの状態!
デバッグ後付プログラ
ミング
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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が長いと増加する。
55
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
A Bug’s Life
55
From http://www.softwaretestinghelp.com/bug-life-cycle/
56
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
56
Your program will have
bugs. And they will
surprise you when you
find them.
プログラムにはバグがある。
バグ自身も、見つけられたとき
にびっくりする。
15. 57
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Zune 30G
57Decem
ber31,2008
58Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 58
BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
59
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
59
One That Got Away
static 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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);
}
(あれば)見つけられたであろうテスト
16. 61
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Where do the bugscome from?
バグはどこから来るのか?
62
6363 64
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
It’s Our Fault
James D. Murphy
We put them there
自分自身のしわざ
17. Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
This Work Flow is Designed to
Allow Defects
65
Development
Test
Defects
このワークフローは、欠陥
の存在を許してしまうよう
に設計されている。
66
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
A Bug’s Life
66
From http://www.softwaretestinghelp.com/bug-life-cycle/
67
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
The Meaning of the Marriage of
Scrum and XP
67 68
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
XP Defines the Technical Practices
Needed for Evolving Designs
XPは進化的設計に必要な技術的プラクティスを定義している。
18. 69
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Edsger Dijkstra
Those 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
• Write a test
• Watch it fail
• Make it pass
• Refactor (improve)
• Repeat until done
T
D
D
•テストを書く
•失敗することを確認
•通過させる
•リファクタリング(改善)
•繰り返す
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Development and Test are a Continuum
Preventing Defects
71
Development
Test
「開発」と「テスト」は欠陥予防の連続体
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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に近づく。
•多くの場合、バグはバグと呼ばれるほど長く存在しない。
19. 73
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
ユニットテストはいくつ必要?
ユニットテストは十分に書くことができる。
76
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Tests Must be Automated
テストは自動化すること
20. Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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%の欠陥は、変更したり修正し
たりするときに混入する。
82
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Because systems actup -- we have to be verycareful.
システムの振る舞いは気まま。私たちが注意していないといけない
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
test
Manual Test is
Unsustainable
Effort
Iterations
Unsustainable growth
dev
5
10
15
20
25 手動テストは継続できない
21. Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
テストされないコードギャップ
に、リスクが累積する
85
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
今日持って帰って
欲しいこと
•テストは自動化する
•再テストのコストを低く保つ
•システムを動かし続ける
86
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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:個人の(変化の)重要さを尊重しながら組織変革をリードする。
22. 88
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
TechnicalExcellence isn’tJust Passing
TEsts
技術的卓越とは、単にテストを通過させることではない!
89
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
どんなバカでもコンパイラが理解できるコードを書くことはできる。しかし、本当に
スキルが必要なのは他のプログラマが理解できるコードを書くことだ。
90
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Why does code
structure matter?
コードの構造がなぜ大切か?
91Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
The Two Values of Software
ソフトウェアの2つの価値
23. 92Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Spaghetti Slide
97
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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
98
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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.
96
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
96
Why aren’t you using
TDD and Refactoring and
the other technical
practices of Agile?
なぜ、TDD、リファクタリング、アジャ
イルのその他の技術プラクティスを使わ
ないのか?
24. 100Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All 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 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Learn TDD and Agile
Development skills.
TDD is faster than DLP
More fun too!
TDDとアジャイル開発スキルを学びましょ
う。
TDDはDLPより速い。しかも、楽しい!
105
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Developers
TODO
105
Beware of limits
ものづくりのプロになれ
新しいことを学んで挑戦せよ
自分の組織のアドバイザーになれ
信頼関係を築け。
自分の仕事を透明に見えるようにせよ
25. 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
107
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
10 Years of Experience Doesn’t Mean
You’ve Got Your 10,000 Hours
10年の経験、ということは10,000時間あるということではない。
1999
1999 2012 2008
2002
2004
2012
2001
103www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2011 James W. Grenning
All Rights Reserved. For use by training attendees.
`
My Boss won’t let me
上司がやらせてくれないんです。
108Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
thanks: lumaxart
http://www.freestockphotos.biz/license.php?id=9746
We have stretch goals
You know, for motivation.
ストレッチ目標
モチベーションのため
に。
26. 104Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees. 104
109
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Managers!
Realize...
109
個人や組織のモチベーションを上げるのは難しい
でも、モチベーションを下げるのは簡単!
110
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Demotivators
110
非現実的な締め切り
モチベーションを下げるもの
事実を責める
低い品質の仕事をさせる
信頼関係がない
111
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
I Tried to Avoid
Computers
111
コンピュータを避けてきた
27. 113
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Scrum
Masters TODO
113
自分のチームが最新のプラクティスの
知識を持っているように。
自分の組織が、その重要さを知っているよう
に。
ScrumMasterのToDO
114
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
People are generally
doing the best they know
人々は自分が知っている範囲で最善を行う。
必ずしも「知らない」ことを知らない。
115
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Scrum
Masters TODO
115
問題解決、を奨励すること
宗教信者にならないように
覚書:Scrumスレーブはない。
116
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Managers
TODO:
116
マネジャーのToDo
最高のチームを育てる
モチベーションを下げる要素をなくす
チームのモチベーションを上げようとし
ない。
28. 117
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
117
How to Improve - Build a
Learning Environment
自分のスキルは自分で
ふりかえり
どうやって改善するか – 学習する環境をいかに作るか
118
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
You don’t delight
customers with the
untested code gap
テストされていないコードギャップでは顧客を喜ばせられない。
119
Agile Japan - Tokyo 2013
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning
All Rights Reserved. For use by training attendees.
Demand Technical Excellence
Talk to me on Twitter
@jwgrenning
Find me on linkedin.com
jwgrenning
Please remind me how we met.