Professional Documents
Culture Documents
James W Grenning
wingman-sw.com
@jwgrenning
1
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 2
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
I Tried to Avoid
Computers
The seri
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
al outpu
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
t
May 7 12:09:01 Cowboy kernel[0]: AirPort: Link Down on en1. Reason 8 (Disassociated because station leaving).
p o r
May 7 12:09:01 Cowboy kernel[0]:
t was no
May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall start 0xffffff80d4cff000, 0xffffff80d4f98000
availabl
May 7 12:09:37 Cowboy kernel[0]: hibernate_page_list_setall time: 415 ms
t
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
e for deb
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
ug!
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
<<interface>>
IO
+ Read(addr) : data
+ Write(addr, data)
<<implements>>
MockIO
<<implementation>>
+ Expect_Read(addr, data) <<hardware>>
IO
+ Expect_Write(addr, data)
<<interface>>
OurCode OurServiceRequests
+ doSomething()
Big Framework
<<implements>>
Big Framework
Client
Messaging
+ send() BFw Adaptor
+receive
WaitForMessage(buffer, length)
WaitForString(buffer, length, semophore)
Pend(semaphore)
Message
Interrupt is Processor is
collecting blocked,
characters waiting for
its
characters
Post(semaphore)
return
i n d u s t r y
Most the
f r o m d e f e c t s ,
suffere d
d f r u st r a t i on .
delays a n
http://www.freestockphotos.biz/license.php?id=9749
!
if (!TimeService_MatchesNow(lightEvent->day, lightEvent->minute +
lightEvent->randomMinutes))
return;
!
operateLight(lightEvent);
!
ScheduledLightEvent_Randomize(lightEvent);
preventAnotherRandomLightOperation(lightEvent);
}
!
void LightScheduler_Wakeup(void)
thanks: lumaxart
{
int i;
!
for (i = 0; i < MAX_EVENTS; i++)
laboration,
checkEvent(&eventList[i]);
}
}
customer, co
de, and prod
uct!
300000
200000
100000
0
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Year
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 30
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Certified Scrum Students
400,000
200,000
100,000
0
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Year
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 31
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
32
http://www.deviantart.com/art/Micro-manage-134602454
What is Scrum?
Ken Schwaber
ACT
James Murphy
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 40
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
I had no flight
experience, but I was
going to fly jets.
James Murphy
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 41
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Just two years after signing up, I was not only
flying, I was flying the supersonic F-15 Eagle
Pilots w er e
a t u r a t e d
Task S
Ken Schwaber
From an interview with Ken Schwaber on agilecollab - http://www.agilecollab.com/interview-with-ken-schwaber
Ken Schwaber
Unfortunately, many organizations
change Scrum to accommodate the
inadequacies or dysfunctions instead
of solving them.
Thank you: Hubert Stoffels, from Pittsburgh, USA '''Title:''' Jonathan's Run Falls
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 58
'''Description:''' http://commons.wikimedia.org/wiki/File:Jonathan%27s_Run_Falls.jpg
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
HELLLLP!
Why Do
es This
Happen
??
Jeff Sutherland
Are you
changin
enginee g the ho
r your p w you
roducts
?
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 66
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
The Marriage of Scrum and XP
s six 333820
k e
s
ta
ter
n i t D ?
as
200,000
e a C S
M
i s m o n e 54509
m
s t h s te r
u
o e a
cr
D m
dS
s t o
M
fie
CS
100,000
rti
Ce
T
y
0
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Year
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 68
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
- A Brief Debrief -
Current Development Practice
in Industry
Td Tfind T fix
Time
From http://www.softwaretestinghelp.com/bug-life-cycle/
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 80
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Your program will have
bugs. And they will
surprise you when you
find them.
8
200
1,
r3
be
m
ce
Copyright 2008-2014 James W. Grenning
Technical Excellence De www.wingman-sw.com 82
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
TEST(Rtc, check20081231)
{
days = daysSince1980(2008, 366);
CHECK(ConvertDays(days, &time));
assertDate(WED, 2008, 12, 31);
}
!
We put
them th
ere
James D. Murphy
Development
Test
Defects
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 90
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
A Bugs Life
From http://www.softwaretestinghelp.com/bug-life-cycle/
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 91
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Edsger Dijkstra
Td Tfind T fix
Time
Copyright 2008-2013
2008-2014 James W. Grenning
Technical
devconfu,Excellence
Nov 2013 www.renaissancesoftware.net
www.wingman-sw.com 104
All Rights Reserved.
Reserved For@jwgrenning.
use by training attendees. OOP,Riga,
Munich
Latvia
2015
Test Driven Development james@renaissancesoftware.net
Oop@wingman-sw.com
Development and Test are a Continuum
Preventing Defects
Development
Test
Time
Mistake
Mistake fixed
made
Mistake Root cause
discovery found
s h a r d t o l e a r n .
It
TDD i s F U N !
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 107
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
A Complex system that
works is invariably
found to have evolved
from a simple system
that worked.
e st s a re C r i t ic a l !
Uni t T
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 109
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
System Level Tests Cannot be
Thorough
How many sub-system tests are needed?
Tests
10
5 interactions states 5 interactions
10 5 interactions 10
states states
Tests Tests
10
5 interactions states 5 interactions
10 5 interactions 10
states states
Solid
foundation
15
10 dev
5 test
Iterations
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
If a system is working,
leave it alone. Don't
change anything.
Systems dont
appreciate being fiddled
and diddled with.
nt r ic
, o r ecce
lou s
f ri v o
i n g ,
u s v i o r
s - am b e ha
n t i c
A
20 w t h
le gro
Effort
a b
15 s ta in
su
Un
10 dev
5 test
Iterations
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Risk Accumulates in
the Untested Code Gap
25 Untested Code Gap
20 w t h
le gro
Effort
a b
15 s ta in
su
Un
10 dev
5 test
Iterations
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
My Take Away
Kee p th e s ys t e m
running
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 123
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Try to Reframe the Problem
We cant afford t
o write automated
it takes away fro tests,
m adding new fe
atures
o n o t a u t o m a t e t e s ts ,
We cant afford t y
e s t ti m e t a k e s a w a
the manual ret
i n g n e w f e a t u r e s
from add
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 124
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
We believe the agile
community must:
Refactoring Debt
Remove duplication
Fix bad names
J.B. Rainsberger
How are
we doin
at that o g
ne?
James D. Murphy
75
Code Badness
50
25
Time
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 138
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Code Badness Over time
100
75
Code Badness
50
25
Time
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 139
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Developers Need to Know and Practice
Refactorings Three Critical Skills
Systems dont
appreciate being fiddled
and diddled with
ether. Envisioned
to g
u t i t b ac k
i g n e ffort. design
e i t a part, p during redes en
Tak
i s b roken Brok
stem g
T h e s y Debu rk
o
Code with Rew dictable
e
design problem Unpr py
p
Refacto Unha
r to the Improved
Test are better d
a lways p esign. design that works
The sys assing.
tem is n
ever bro
ken.
Test Move
Test Extract
Test Replace switch
Test Extract
Test Encapsulate
Test Move
Test Extract
Test Rename
75
Code Badness
50
25
Time
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 144
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Spaghetti Slide
75
Code Badness
50
25
Time
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 146
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Why d o e s co d e
structur e m a t t e r ?
ov erfl ow an d so ft w ar e bu gs le d to m em or y
Stack
on , he sa id . A nd it tu rn s ou t th at th e crux of
corrupti
e w as th es e m em or y co rr up ti on s, w hi ch ac te d
the issu
"like ricocheting bullets."
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
n t w a n t t o cr e at e
You do
this website
ACT
is special
is special
is special
is special
is special
are special
Ken Schwaber
From an interview with Ken Schwaber on agilecollab - http://www.agilecollab.com/interview-with-ken-schwaber
178
t i m e f o r
t h a v e
I don r a s t u f f !!
t h i s e x t
a ll
179
The Physics of Debug Later
Programming (DLP)
Td Tfind T fix
Time
Good Features
Fast feedback Ranking Model
Michael Dubakov
Good It depends Bad
Increasing eect Decreasing eect Speed in SW Development
http://bit.ly/sw-dev-speed 182
system
complexity
Skills
Development
Speed
183
Technical
debt
184
system
complexity
Technical
debt
185
system
complexity
Technical
debt
Focused
Work
186
system
complexity
Technical
debt
Focused
Work Large WIP
people rotations
between teams
Multi-tasking
Emergency
rotation
187
system
complexity
Technical
debt
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation
Do right things
188
system
complexity
Technical
debt
Slow workstation
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation
Do right things
189
More
Development
teams
system
complexity
Technical
debt
Slow workstation
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation
Do right things
190
More
Development New people
teams
system
complexity HR interviews
More work
Mentor other
coordination
people
Technical
debt
Meetings
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation
Do right things
191
More
Development New people
teams
system
complexity HR interviews
More work
Mentor other
coordination
people
Technical
debt
Meetings
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation
Do right things
192
Of cou
rse we
have t d o nt
ime!!
193
More
Conferences Development New people
teams
Domain
system People who Knowledge
complexity learn things HR interviews
More work
Mentor other
coordination
people
Technical
debt
Skills
Development
Speed Meetings
Work / Life
balance
Passion Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency Focused
rotation Work
Do right things
Conferences
Domain
People who Knowledge
learn things
Skills
Work
experience
Development
Speed
Work / Life
balance
Passion
Focused
Work
system
complexity
Technical
debt
l i n e s ,
r e d e a d
y a s i n g
Wh d i n c r e a
m e , a n h a
o v e rt i b t s u c
i c a l d e
t e ch n t ic e i n
a r p r a c
po p u l t ?
lo p m e n
deve 196
e d e s t r u c ti v e p ra c t ic e s
Why a r e t h
o r e p r e v a l e n t?
so much m More
Development New people
teams
system
complexity HR interviews
More work
Mentor other
coordination
people
Technical
debt
Meetings
Bugs
Focused Re-work
Work Large WIP
people rotations
between teams Unclear
requirements
Multi-tasking
Emergency
rotation 197
Do right things
We tend to do what we know
Encourage your
people to be
problem solvers N ot do gm a
followers
Remember: there are no scrum slaves
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 204
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Managers
TODO:
Motivating an individual or
a team is hard
Unrealistic Punishing
deadlines the truth
Encouraging
poor quality work
Lack of trust Stretch goals
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 207
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
Motivators
Knowing Problem
the Vision solving
Knowing
Trust
why it is
important Mutual respect
Copyright 2008-2014 James W. Grenning
Technical Excellence www.wingman-sw.com 208
All Rights Reserved @jwgrenning. OOP, Munich 2015 Oop@wingman-sw.com
I Tried to Avoid
Computers
210
People will pay me
for this?!!
a b
15 st ain
nsu
U
10 dev
5 test
Copyright 2008-20XX
2008-2014 James
JamesW.
W.Grenning
Grenning
Technical Excellence
__EVENT__ www.wingman-sw.com 213
All Rights Reserved @jwgrenning. OOP,The
Munich
End 2015 james@wingman-sw.com
Oop@wingman-sw.com
Demand Technical Excellence
Talk to me on Twitter
@jwgrenning!
!
Find my book at!
http://wingman-sw.com/tddec
!
Find me on linkedin.com
http://www.linkedin.com/in/jwgrenning
Please remind me how we met.
!
http://www.wingman-sw.com
http://www.wingman-sw.com/blog