SlideShare une entreprise Scribd logo
1  sur  214
1
James W Grenning
wingman-sw.com
@jwgrenning
Technical Excellence
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
2
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
I Tried to Avoid
Computers
3
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
4
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
5
People will pay me
to do this?!!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
6
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
7
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
8
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
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
9
The serial output port was notavailable for debug!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
10
Source level debug was there, if
your source was ASM
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
11
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
12
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
My Roots in Agile
13
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
14
Kent Beck Ron Jeffries
Ward Cunningham Martin Fowler
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Let’s Have a Meeting
15
Alistair CockburnRobert Martin
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
How Did I Find Myself at Agile
Manifesto Meeting?
16
James, do
you want to
go to the
Lightweight
Methods
Summit in
Snowbird?
Skiing!
Sure Bob,
I’ll go….
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
17
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Before the
Agile Manifesto
18
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
19
MessageProcessor SerialDriver
WaitForString(buffer, length, semophore)
Pend(semaphore)
Post(semaphore)
WaitForMessage(buffer, length)
return
Message
Processor is
blocked,
waiting for
its
characters
Interrupt is
collecting
characters
SemaphoreFake
Copyright © James W. Grenning
<<implementation>>
IO
<<implements>>
+ Read(addr) : data
+ Write(addr, data)
<<interface>>
IO
+ Expect_Read(addr, data)
+ Expect_Write(addr, data)
MockIO
<<hardware>>
+ Program(addr, data)
+ ProtectBlock(block)
+ EraseBlock(block)
//etc
FlashDriver
FlashDriverTest
OurCode
BFw Adaptor
Big Framework
+ send()
+receive
Messaging
+ doSomething()
<<interface>>
OurServiceRequests
<<implements>>
Big Framework
Client
20
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
21
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
22
That may not have been
Watts’ intention, but it was the
message that industry was
hearing
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Did that work?
23
Most the industry
suffered from defects,
delays and frustration.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
24
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
25
The first and foremost
statement stresses people
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
People and Values were Central
to Forming Agile
26
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
27
Software development is
not centrally about the
process and documents
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
28
static void checkEvent(ScheduledLightEvent* lightEvent)	
{	
if (randomEventAlreadyHappenedToday(lightEvent))	
return;	
!
if (!TimeService_MatchesNow(lightEvent->day, lightEvent->minute +
lightEvent->randomMinutes))	
return;	
!
operateLight(lightEvent);	
!
ScheduledLightEvent_Randomize(lightEvent);	
preventAnotherRandomLightOperation(lightEvent);	
}	
!
void LightScheduler_Wakeup(void)	
{	
int i;	
!
for (i = 0; i < MAX_EVENTS; i++)	
{	
if (eventList[i].id != UNUSED)	
checkEvent(&eventList[i]);	
}	
}	
It’s about collaboration,customer, code, and product!
thanks:lumaxart
http://www.freestockphotos.biz/license.php?id=9749
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
The Public First Scrum Class
(May 2003)
29
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
0
100000
200000
300000
400000
Year
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Certified Scrum Masters
30
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
0
100,000
200,000
300,000
400,000
Year
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Certified Scrum Developers Certified Scrum Masters
Certified Scrum Students
31
32
http://www.deviantart.com/art/Micro-manage-134602454
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What is Scrum?
33
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Like in the 80s! Short Cycle
Improvement
34
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Except without the Difficult
Improvement Part
35
ACT
36
37
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
38
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
39
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
40
Not long after graduating
college, I joined an office product
company and started selling
copiers. I loved what i did.
James Murphy
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
41
I had no flight
experience…, but I was
going to fly jets.
James Murphy
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
42
Just two years after signing up, I was not only
flying, I was flying the supersonic F-15 Eagle
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
43
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
44
Pilots were
“Task Saturated”
Honest reflection
and analysis
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
45
The Debrief outcome, gives the
refuel job to the boom operator, and
a rest for the pilot.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What are We Supposed to Do?
46
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
How are we doing?
47
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Many think they’re doing great
48
In Company A 32% of the engineers said
they were in the top 5% of skill and quality
of work in the company. That seemed
outrageous until you go to Company B,
where 42% said they were in the top 5%.
So much for being lonely at the top.
Everybody tends to think that they are at
the top much more than they really are.
From David Dunning via Smart Planet
bit.ly/we-think-we-are-smart
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
40% think they’re in the
top 5%
!
87.5% of them are wrong!
49
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
50
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
51
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
10 Year Agile Celebration
52
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
53
What do we, as
member of the
agile
community
need to fix?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
54
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We believe the agile
community must:
#1 Demand technical excellence
#2 Promote Individual [Change] and
Lead Organizational Change
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Remember what Ken Said?
56
"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.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Everything is Going Smoothly
57
Iteration 1 Iteration 2 Iteration 3 Iteration 4 Hardening
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
ile 2014
58
Thank you: Hubert Stoffels, from Pittsburgh, USA '''Title:''' Jonathan's Run Falls
'''Description:''' http://commons.wikimedia.org/wiki/File:Jonathan%27s_Run_Falls.jpg
La, la la.
I’m lookin’
for bugs
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
59Thanks to Yorian, Picture of a waterfall nearby Flam, Norway http://
commons.wikimedia.org/wiki/File:Waterfall_in_Norway.jpg
HELLLLP!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What Happens We Save Test Until the End?
60
Iteration 1 Iteration 2 Iteration 3 Iteration 4 Hardening
Test and Fix
Test and Fix Test and Fix
Test and Fix
Test and FixTest and Fix
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Do Your Work Degrade into a Fire Fight?
61
Why Does ThisHappen??
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
62
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
63
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
64
Hacking in newfeatures, chasing andmanaging bugs isnot TechnicalExcellence
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What’s the Problem?
65
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
66
The cadence of developmentchanges with Scrum
Are you changing the how you
engineer your products?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
The Marriage of Scrum and XP
67
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
So Far the Marriage is Unequal
68
CertifiedScrum
M
asters
T
y
0
100,000
200,000
300,000
400,000
Year
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Certified Scrum Developers Certified Scrum Masters
54509
333820
Does this mean it takes six
CSMs to master one CSD?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
- A Brief Debrief -
Current Development Practice
in Industry
As viewed from the pre-
training surveys I use to
better understand
attendee backgrounds
69
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
70
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
71
How do you test your code?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
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
72
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
73
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
74
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
75
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
76
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
77
Congratulations!!!
You are using state of art
practices from 1979
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
78
Debug-laterProgramming
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
The Physics of Debug Later
Programming (DLP)
• As Td increases, Tfind increases dramatically
• Tfix is usually short, but can increase with Td
http://www.renaissancesoftware.net/blog/archives/16
79
Bug discoveryMistake made
(bug injection)
Bug found Bug fixed
Td Tfind T fix
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
A Bug’s Life
80
From http://www.softwaretestinghelp.com/bug-life-cycle/
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
81
Your program will have
bugs. And they will
surprise you when you
find them.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Zune 30G
82
Decem
ber31,2008
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
83
BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
84
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;	
}
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
85
This Test Could Have Prevented it
TEST(Rtc, check20081231)	
{	
days = daysSince1980(2008, 366);	
CHECK(ConvertDays(days, &time));	
assertDate(WED, 2008, 12, 31);	
}	
!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
86
Where do the
bugs come from?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
87
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
88
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Really, It’s Not Our Fault?
89
James D. Murphy
We put them there
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
This Work Flow is Designed to Allow
Defects
90
Development
Test
Defects
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
A Bug’s Life
91
From http://www.softwaretestinghelp.com/bug-life-cycle/
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Edsger Dijkstra
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.
92
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We tend to do what we know
People do what they can conceive of,
but sometimes there are better solutions,
or considerations and risks they never
knew were out there. They don’t take a
solution they don’t know about.
93
From David Dunning via Smart Planet
bit.ly/we-think-we-are-smart
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
I’ve got 10 years
experience!
94
1 year 1 year 1 year 1 year 1 year
1 year 1 year 1 year 1 year 1 year
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We tend to do what we know
It is almost impossible for an individual left to their
own devices to get self-assessment right. The worth of
one’s ideas runs through other people. That is, workers
should pay attention to what other workers are doing.
You can watch other people to benchmark how they
handle the same sorts of tasks or situations. Seek out
feedback from other workers or managers.
95
From David Dunning via Smart Planet
bit.ly/we-think-we-are-smart
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
96
Kent Beck Ron Jeffries
Ward Cunningham Martin Fowler
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
eHarmony Match
97
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
XP Identifies Shared Values
and Defines the Technical Practices
Needed for Growing Computer Software
98
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
99
Quality is important Focus on it every day
Testing is good Test all the time
Reviews are good Review all the time
Customer input is good
Talk to your customer
every day
Planning is important
Keep the plan alive, plan to
replan
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
The Physics of Debug Later
Programming (DLP)
• As Td increases, Tfind increases dramatically
• Tfix is usually short, but can increase with Td
http://www.renaissancesoftware.net/blog/archives/16
100
Bug discoveryMistake made
(bug injection)
Bug found Bug fixed
Td Tfind T fix
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
101Thanks to Yorian, Picture of a waterfall nearby Flam, Norway http://
commons.wikimedia.org/wiki/File:Waterfall_in_Norway.jpg
HELLLLP!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Edsger Dijkstra
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.
102
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
• Write a test
• Watch it fail
• Make it pass
• Refactor (improve)
• Repeat until done
T
D
D
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
devconfu, Nov 2013
Riga, Latvia
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning	

All Rights Reserved. Test Driven Development
www.renaissancesoftware.net
james@renaissancesoftware.net
Copyright © 2008-2013 James W. Grenning	

All Rights Reserved. For use by training attendees.
If test moved upstream, could we get
working features to flow?
104
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Development and Test are a Continuum
Preventing Defects
105
Development
Test
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
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
106
Mistake
discovery
Mistake
made
Root cause
found
Mistake fixed
T d Tfind T fix
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
107
TDD is FUN!
TDD is a challenge.
It’s hard to learn.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
108
A Complex system that
works is invariably
found to have evolved
from a simple system
that worked.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
109
Unit Tests are Critical!
Is your team doing TDD?
Does your team create
unit tests?
Writing tests after is
not so fun, but
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
System Level Tests Cannot be
Thorough
• How many sub-system tests are needed?
110
10
states
10
states
10
states
5 interactions
5 interactions
5 interactions
Tests
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
TDD unit tests can be thorough
• How many unit tests are needed?
111
10
states
10
states
10
states
5 interactions
5 interactions
5 interactions
Tests Tests
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
112
Solid
foundation
Wired properly and
meets customer needs
Looks and
feels right
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
113
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
114
Tests Must be Automated
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
test
Assume Test Effort is
Proportional to
Development Effort
dev
Iterations
Effort
5
10
15
20
25
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
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]
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
117
System Antics
System - something setup to attain a goal
Antics - amusing, frivolous, or eccentric
behavior
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
118
Systems
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
119
System Antics
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
120
Because systems actup -- we have to bevery careful.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
test
Manual Test is
Unsustainable
Effort
Iterations
Unsustainable growth
dev
5
10
15
20
25
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Risk Accumulates in
the Untested Code Gap
Effort
Iterations
Unsustainable growth
dev
5
10
15
20
25 Untested Code Gap
test
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
My Take Away
123
Keep the cost of retest low
Keep the system
running
Tests Must be Automated
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Try to Reframe the Problem
124
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We believe the agile
community must:
#1 Demand technical excellence
#2 Promote Individual [Change] and Lead
Organizational Change
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
126
TechnicalExcellence isn’tJust Passing
Tests
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
127
Why does code
structure matter?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
128
The Two Values of Software
129
Defined
“Refactoring is the process of changing a software
system in such a way that it does not alter the external
behavior of the code yet improves its internal
structure.” [REF]
!
!
• Refactoring Debt
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Refactoring Goal
• “Clean code that works”
– Ron Jeffries
130Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
How?
• Remove duplication
• Fix bad names
– J.B. Rainsberger
131Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Let us change our
traditional attitude to the
construction of programs.
Instead of imagining that
our main task is to
instruct a computer what to
do, let us concentrate rather
on explaining to human
beings what we want a
computer to do.
Donald Knuth Says
132
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Really, It’s Not Our Fault?
133
James D. Murphy
How are we doingat that one?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Spaghetti Slide
134
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
135
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
136
Martin Fowler Says
137Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
138
Code ‘Badness’ Over time
0
25
50
75
100
CodeBadness
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
139
Code ‘Badness’ Over time
0
25
50
75
100
CodeBadness
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Developers Need to Know and Practice
Refactoring’s Three Critical Skills
140
Recognize what is wrong, fix it!
Keep the code working the whole time!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
141
If a system is working,
leave it alone. Don't
change anything
Systems don’t
appreciate being fiddled
and diddled with
Humpty Dumpty from The Book of Knowledge,
p. 968, Vol. III, The Grolier Society, New York, 1911.
Code with
design problem
Envisioned
design
Improved
design that works
Take it apart, put it back together.
The system is broken during redesign effort.
Broken
Debug
Rework
Unpredictable
Unhappy
Refactor to the better design.
Test are always passing.
The system is never broken.
Refactoring vs.
Humpty Dumpty Redesign
142Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Automated Tests Make Refactoring Safer
143
Test
Test
Test
Test
Test
Test
Test
Test
Rename
Extract
Move
Extract
Extract
Replace switch
Encapsulate
Move
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
144
Sustain Low Code ‘Badness’ Over time
0
25
50
75
100
CodeBadness
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Spaghetti Slide
145
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
146
Code ‘Badness’ Over time
0
25
50
75
100
CodeBadness
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
147
Why does code
structure matter?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
148
The Lawyers are
Coming
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
149
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
150
151
"We've demonstrated how as little as a single bit
flip can cause the driver to lose control of the
engine speed in real cars due to software
malfunction that is not reliably detected by any
fail-safe,"
- Michael Barr, CTO, co-founder of Barr Group
http://www.eetimes.com/document.asp?doc_id=1319903
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Stack overflow and software bugs led to memory
corruption, he said. And it turns out that the crux of
the issue was these memory corruptions, which acted
"like ricocheting bullets."
• “Kitchen Sink” (a.k.a. do it all) task
• Responsible for closed loop control and failsafes
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
153
You don’t want to create
this website
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
154
Why doesn’t your team use
TDD and Refactoring and the
other technical practices of
Agile?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We’re different!
155
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We can’t use TDD
and Refactoring!
156
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Everything is fine.
157
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
REALLY!
158
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
pay no attention
to that fire over
there
159
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
REALLY!
160
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We’re BUSY!
161
ACT
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What Slows You Down?
162
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
90%
done
163
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
164
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
1
165
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We’re different!
166
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
167
Embedded software
is special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
168
Web service software
is special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
169
Health Insurance
software
is special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
170
Design automation
is special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
171
Financial Software
is special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
172
YOU
are special
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
173
It just does not
matter.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What are We Supposed to Do?
174
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
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
What is the biggest problem of getting
there?
175
from: Scrum with XP and Beyond
The biggest problem worldwide for
Scrum teams is getting shippable code
at the end of every sprint.
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
176
What is in your
way?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
`
177
My Boss won’t let me
178
Development
Organizations want
fast development.
179
I don’t have time for
all this extra stuff!!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
The Physics of Debug Later
Programming (DLP)
• As Td increases, Tfind increases dramatically
• Tfix is usually short, but can increase with Td
http://www.renaissancesoftware.net/blog/archives/16
180
Bug discoveryMistake made
(bug injection)
Bug found Bug fixed
Td Tfind T fix
Time
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
181
182
Michael Dubakov
Speed in SW Development
http://bit.ly/sw-dev-speed
Slow workstation
Development
Speed
Skills
Waste and
Non-value
added activity
Mentor other
people
Orange
Fridays
New people
More
Development
teams
Conferences
People who
learn things
system
complexity
Technical
debt
Cowboy
coding
Deadlines
Refactoring
Unclear
requirements
Re-work
Bad UX - Dev
transition
Focused
Work
IM/Skype
Open
Space
Emergency
rotation
people rotations
between teams
UX meetings
Unstable /
slow Tests
More work
coordination
Multi-tasking
Large WIP
Prototypes
Good Specs
Domain
Knowledge
Daily
Meetings
Sport at work
Meetings
Board
meetings
Passion
Bugs
Wait states
Good Features
Ranking Model
Do right things
HR interviews
Disciplined
process
Work
experience
Work / Life
balance
Sport /
Hobbies
outside work
Fast feedback
Short term
boost
Good It depends Bad
Increasing effect Decreasing effect
Overtime
Cooperative
testing
http://bit.ly/sw-dev-speed
183
Development
Speed
Skills
system
complexity
184
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
185
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
186
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
Focused
Work
187
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
188
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
189
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
190
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
Development
Speed
More
Development
teams
191
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
Development
Speed
Waste and
Non-value
added activity
Mentor other
people
New people
More
Development
teams
More work
coordination
Meetings
HR interviews
192
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
Development
Speed
Waste and
Non-value
added activity
Mentor other
people
New people
More
Development
teams
More work
coordination
Meetings
HR interviews
193
Of course we don’thave time!!
Development
Speed
Skills
Conferences
People who
learn things
Focused
Work
Domain
Knowledge
Passion
Work
experience
Work / Life
balance
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
Development
Speed
Waste and
Non-value
added activity
Mentor other
people
New people
More
Development
teams
More work
coordination
Meetings
HR interviews
Development
Speed
Skills
Conferences
People who
learn things
Focused
Work
Domain
Knowledge
Passion
Work
experience
Work / Life
balance
196
Why are deadlines,
overtime, and increasing
technical debt such a
popular practice in
development?
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
197
Development
Speed
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Focused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Short term
boost
Overtime
Development
Speed
system
complexity
Technical
debt
Deadlines
Unclear
requirements
Re-workFocused
Work
Emergency
rotation
people rotations
between teams
Multi-tasking
Large WIP
Bugs
Do right things
Short term
boost
Overtime
Slow workstation
Development
Speed
Development
Speed
Waste and
Non-value
added activity
Mentor other
people
New people
More
Development
teams
More work
coordination
Meetings
HR interviews
Why are the destructive practices
so much more prevalent?
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
We tend to do what we know
People do what they can conceive of,
but sometimes there are better solutions,
or considerations and risks they never
knew were out there. They don’t take a
solution they don’t know about.
198
From David Dunning via Smart Planet
bit.ly/we-think-we-are-smart
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Managers, Leaders and Coaches
TODO
199
Make sure your team
knows state of the art
practices
Support
learning,
problem solving,
and continuous
improvement
Make sure your
organization
knows why they
are important
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Yeah but I’m an engineer
200
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
201
People are generally
doing the best they know
Often, people don’t know
what they don’t know
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Developers
TODO
202
Become an
expert in
your craft
Become an
advisor to your
organization
learn and try
new things
Build Trust -
Make your
Work Visible
Work with
others
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
203
Beware of limits
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Scrum Masters
TODO
204
Encourage your
people to be
problem solvers Not dogma
followers
Remember: there are no scrum slaves
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Managers
TODO:
205
Grow great
teams
Stop
Motivating
Your Team
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Motivation
206
Motivating an individual or
a team is hard
While demotivating them is
really easy!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Avoid De-motivators
207
Unrealistic
deadlines
Encouraging
poor quality work
Punishing
the truth
Lack of trust Stretch goals
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Motivators
208
Problem
solving
Knowing
the Vision
Knowing
why it is
important
Trust
Mutual respect
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
I Tried to Avoid
Computers
209
210
Thanks @tech_faq
!
https://twitter.com/tech_faq/status/386781833343414272/photo/1
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
211
People will pay me
for this?!!
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
212
Putting out fires in the untested
code gap is not technical
excellence
test
Effort
Unsustainable growth
dev
5
10
15
20
25 Untested Code Gap
213Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning. The End
__EVENT__ www.wingman-sw.com
james@wingman-sw.com
Copyright © 2008-20XX James W. Grenning	

All Rights Reserved @jwgrenning.
http://commons.wikimedia.org/wiki/File:Abies_nordmanniana_PAN_2.jpg
Technical Excellence
OOP, Munich 2015
www.wingman-sw.com
Oop@wingman-sw.com
Copyright © 2008-2014 James W. Grenning	

All Rights Reserved @jwgrenning.
Demand Technical Excellence
214
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

Contenu connexe

Tendances

Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Cloudbrew 2019 observability driven development
Cloudbrew 2019   observability driven developmentCloudbrew 2019   observability driven development
Cloudbrew 2019 observability driven developmentGeert van der Cruijsen
 
Bit Rot in the Docs
Bit Rot in the DocsBit Rot in the Docs
Bit Rot in the DocsSarah Maddox
 
2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support BriefingBenito Gonzalez
 
TDD That Was Easy!
TDD   That Was Easy!TDD   That Was Easy!
TDD That Was Easy!Kaizenko
 
From DevOps to GitOps with GitLab
From DevOps to GitOps with GitLabFrom DevOps to GitOps with GitLab
From DevOps to GitOps with GitLabChen Cheng-Wei
 
The art and joy of testing in production
The art and joy of testing in productionThe art and joy of testing in production
The art and joy of testing in productionGeert van der Cruijsen
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab WorkflowChen Cheng-Wei
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
 
Exploratory Testing with JIRA | QASymphony Webinar
Exploratory Testing with JIRA | QASymphony WebinarExploratory Testing with JIRA | QASymphony Webinar
Exploratory Testing with JIRA | QASymphony WebinarQASymphony
 
Integrated Dev And Qa Team With Scrum
Integrated Dev And Qa Team With ScrumIntegrated Dev And Qa Team With Scrum
Integrated Dev And Qa Team With ScrumEthan Huang
 
Do you know your production?
Do you know your production?Do you know your production?
Do you know your production?Yevhen Rudiev
 
6 DevSecOps Hacks (femtech 2019)
6 DevSecOps Hacks (femtech 2019)6 DevSecOps Hacks (femtech 2019)
6 DevSecOps Hacks (femtech 2019)Patricia Aas
 
Agile Olympiad 2014 Finals
Agile Olympiad 2014 FinalsAgile Olympiad 2014 Finals
Agile Olympiad 2014 FinalsTathagat Varma
 
Let's focus more on Quality and less on Testing by Joel Montvelisky
Let's focus more on Quality and less on Testing by Joel MontveliskyLet's focus more on Quality and less on Testing by Joel Montvelisky
Let's focus more on Quality and less on Testing by Joel MontveliskyQA or the Highway
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven developmentAhmed El-Deeb
 
Using JIRA for Risk Based Testing - QASymphony Webinar
Using JIRA for Risk Based Testing  - QASymphony WebinarUsing JIRA for Risk Based Testing  - QASymphony Webinar
Using JIRA for Risk Based Testing - QASymphony WebinarQASymphony
 

Tendances (20)

Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Cloudbrew 2019 observability driven development
Cloudbrew 2019   observability driven developmentCloudbrew 2019   observability driven development
Cloudbrew 2019 observability driven development
 
Bit Rot in the Docs
Bit Rot in the DocsBit Rot in the Docs
Bit Rot in the Docs
 
Observability driven development
Observability driven developmentObservability driven development
Observability driven development
 
2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing2017 Q1 Open Source Support Briefing
2017 Q1 Open Source Support Briefing
 
TDD That Was Easy!
TDD   That Was Easy!TDD   That Was Easy!
TDD That Was Easy!
 
From DevOps to GitOps with GitLab
From DevOps to GitOps with GitLabFrom DevOps to GitOps with GitLab
From DevOps to GitOps with GitLab
 
The art and joy of testing in production
The art and joy of testing in productionThe art and joy of testing in production
The art and joy of testing in production
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow
 
Tdd com Java
Tdd com JavaTdd com Java
Tdd com Java
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
 
Exploratory Testing with JIRA | QASymphony Webinar
Exploratory Testing with JIRA | QASymphony WebinarExploratory Testing with JIRA | QASymphony Webinar
Exploratory Testing with JIRA | QASymphony Webinar
 
Integrated Dev And Qa Team With Scrum
Integrated Dev And Qa Team With ScrumIntegrated Dev And Qa Team With Scrum
Integrated Dev And Qa Team With Scrum
 
Do you know your production?
Do you know your production?Do you know your production?
Do you know your production?
 
Continuous deployment 2.0
Continuous deployment 2.0Continuous deployment 2.0
Continuous deployment 2.0
 
6 DevSecOps Hacks (femtech 2019)
6 DevSecOps Hacks (femtech 2019)6 DevSecOps Hacks (femtech 2019)
6 DevSecOps Hacks (femtech 2019)
 
Agile Olympiad 2014 Finals
Agile Olympiad 2014 FinalsAgile Olympiad 2014 Finals
Agile Olympiad 2014 Finals
 
Let's focus more on Quality and less on Testing by Joel Montvelisky
Let's focus more on Quality and less on Testing by Joel MontveliskyLet's focus more on Quality and less on Testing by Joel Montvelisky
Let's focus more on Quality and less on Testing by Joel Montvelisky
 
Agile and test driven development
Agile and test driven developmentAgile and test driven development
Agile and test driven development
 
Using JIRA for Risk Based Testing - QASymphony Webinar
Using JIRA for Risk Based Testing  - QASymphony WebinarUsing JIRA for Risk Based Testing  - QASymphony Webinar
Using JIRA for Risk Based Testing - QASymphony Webinar
 

En vedette

Designing SOLID C - ACCU Conference 2014
Designing SOLID C - ACCU Conference 2014Designing SOLID C - ACCU Conference 2014
Designing SOLID C - ACCU Conference 2014James Grenning
 
Agile Embedded Software
Agile Embedded SoftwareAgile Embedded Software
Agile Embedded SoftwareJames Grenning
 
Exams Oct10 Timetable
Exams Oct10 TimetableExams Oct10 Timetable
Exams Oct10 Timetablemigrain2010
 
User Interface Design in Practice
User Interface Design in PracticeUser Interface Design in Practice
User Interface Design in PracticeJustine Sanderson
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .NetGreg Sohl
 
OOP Basic - PHP
OOP Basic - PHPOOP Basic - PHP
OOP Basic - PHPSulaeman .
 
C#, OOP introduction and examples
C#, OOP introduction and examplesC#, OOP introduction and examples
C#, OOP introduction and examplesagni_agbc
 
Object Oriented Programming - Introduction
Object Oriented Programming - IntroductionObject Oriented Programming - Introduction
Object Oriented Programming - IntroductionDudy Ali
 
Principles and advantages of oop ppt
Principles and advantages of oop pptPrinciples and advantages of oop ppt
Principles and advantages of oop pptdaxesh chauhan
 
The adventure of enabling API management in a large enterprise (Josh Wang)
The adventure of enabling API management in a large enterprise (Josh Wang)The adventure of enabling API management in a large enterprise (Josh Wang)
The adventure of enabling API management in a large enterprise (Josh Wang)Nordic APIs
 
Basic Principles of Interface design
Basic Principles of Interface designBasic Principles of Interface design
Basic Principles of Interface designZdeněk Lanc
 
Fundamentals of User Interface Design
Fundamentals of User Interface DesignFundamentals of User Interface Design
Fundamentals of User Interface DesignMerlin Rebrović
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01Adil Kakakhel
 
Best Practices for API Management
Best Practices for API Management Best Practices for API Management
Best Practices for API Management WSO2
 

En vedette (20)

Designing SOLID C - ACCU Conference 2014
Designing SOLID C - ACCU Conference 2014Designing SOLID C - ACCU Conference 2014
Designing SOLID C - ACCU Conference 2014
 
Agile Embedded Software
Agile Embedded SoftwareAgile Embedded Software
Agile Embedded Software
 
Exams Oct10 Timetable
Exams Oct10 TimetableExams Oct10 Timetable
Exams Oct10 Timetable
 
Total oop in c# dot net
Total oop in c# dot netTotal oop in c# dot net
Total oop in c# dot net
 
User Interface Design Principles
User Interface Design PrinciplesUser Interface Design Principles
User Interface Design Principles
 
ADDIE - The Analyze Phase
ADDIE - The Analyze PhaseADDIE - The Analyze Phase
ADDIE - The Analyze Phase
 
User interface design
User interface designUser interface design
User interface design
 
User Interface Design in Practice
User Interface Design in PracticeUser Interface Design in Practice
User Interface Design in Practice
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .Net
 
OOP Basic - PHP
OOP Basic - PHPOOP Basic - PHP
OOP Basic - PHP
 
C#, OOP introduction and examples
C#, OOP introduction and examplesC#, OOP introduction and examples
C#, OOP introduction and examples
 
Object Oriented Programming - Introduction
Object Oriented Programming - IntroductionObject Oriented Programming - Introduction
Object Oriented Programming - Introduction
 
OpenID Connect Explained
OpenID Connect ExplainedOpenID Connect Explained
OpenID Connect Explained
 
Principles and advantages of oop ppt
Principles and advantages of oop pptPrinciples and advantages of oop ppt
Principles and advantages of oop ppt
 
The adventure of enabling API management in a large enterprise (Josh Wang)
The adventure of enabling API management in a large enterprise (Josh Wang)The adventure of enabling API management in a large enterprise (Josh Wang)
The adventure of enabling API management in a large enterprise (Josh Wang)
 
Basic Principles of Interface design
Basic Principles of Interface designBasic Principles of Interface design
Basic Principles of Interface design
 
Fundamentals of User Interface Design
Fundamentals of User Interface DesignFundamentals of User Interface Design
Fundamentals of User Interface Design
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
Object-oriented concepts
Object-oriented conceptsObject-oriented concepts
Object-oriented concepts
 
Best Practices for API Management
Best Practices for API Management Best Practices for API Management
Best Practices for API Management
 

Similaire à Technical Excellence - OOP Munich 2015

Operations: The Last Mile Problem For DevOps
Operations: The Last Mile Problem For DevOpsOperations: The Last Mile Problem For DevOps
Operations: The Last Mile Problem For DevOpsRundeck
 
Modern Operations: Solving DevOps’ Last Mile Problem
Modern Operations: Solving DevOps’ Last Mile Problem Modern Operations: Solving DevOps’ Last Mile Problem
Modern Operations: Solving DevOps’ Last Mile Problem Rundeck
 
Kranky geeklondon build an app
Kranky geeklondon build an appKranky geeklondon build an app
Kranky geeklondon build an appTim Panton
 
session_01_react_.pptx
session_01_react_.pptxsession_01_react_.pptx
session_01_react_.pptxAyaBenkabbour1
 
PyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for PythonPyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for PythonTed Leung
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?Andy Davies
 
Device Emulation with OSGi and Flash
Device Emulation with OSGi and FlashDevice Emulation with OSGi and Flash
Device Emulation with OSGi and Flashgeorgemesesan
 
Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009Andy d
 
Ficstar Software: Cassandra Installation to Optimization
Ficstar Software: Cassandra Installation to OptimizationFicstar Software: Cassandra Installation to Optimization
Ficstar Software: Cassandra Installation to OptimizationDataStax Academy
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.aviSeongJae Park
 
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterSaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterThomas Jackson
 
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by Default
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by DefaultJS Fest 2019. Minko Gechev. Building Fast Angular Applications by Default
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by DefaultJSFestUA
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of ThingsPeter Moskovits
 
4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to knowDynatrace
 
Is the Open Web the Platform for Tomorrow
Is the Open Web the Platform for TomorrowIs the Open Web the Platform for Tomorrow
Is the Open Web the Platform for TomorrowJoe Walker
 
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...StreamNative
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?DefCamp
 

Similaire à Technical Excellence - OOP Munich 2015 (20)

Operations: The Last Mile Problem For DevOps
Operations: The Last Mile Problem For DevOpsOperations: The Last Mile Problem For DevOps
Operations: The Last Mile Problem For DevOps
 
Modern Operations: Solving DevOps’ Last Mile Problem
Modern Operations: Solving DevOps’ Last Mile Problem Modern Operations: Solving DevOps’ Last Mile Problem
Modern Operations: Solving DevOps’ Last Mile Problem
 
Kranky geeklondon build an app
Kranky geeklondon build an appKranky geeklondon build an app
Kranky geeklondon build an app
 
session_01_react_.pptx
session_01_react_.pptxsession_01_react_.pptx
session_01_react_.pptx
 
PyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for PythonPyCon US 2009: Challenges and Opportunities for Python
PyCon US 2009: Challenges and Opportunities for Python
 
Http/2 - What's it all about?
Http/2  - What's it all about?Http/2  - What's it all about?
Http/2 - What's it all about?
 
Device Emulation with OSGi and Flash
Device Emulation with OSGi and FlashDevice Emulation with OSGi and Flash
Device Emulation with OSGi and Flash
 
Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009Containerize vs Virtualize? NGDC 2009
Containerize vs Virtualize? NGDC 2009
 
Ficstar Software: Cassandra Installation to Optimization
Ficstar Software: Cassandra Installation to OptimizationFicstar Software: Cassandra Installation to Optimization
Ficstar Software: Cassandra Installation to Optimization
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, FasterSaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
SaltConf 2015: Salt stack at web scale: Better, Stronger, Faster
 
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by Default
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by DefaultJS Fest 2019. Minko Gechev. Building Fast Angular Applications by Default
JS Fest 2019. Minko Gechev. Building Fast Angular Applications by Default
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know4 Node.js Gotchas: What your ops team needs to know
4 Node.js Gotchas: What your ops team needs to know
 
Is the Open Web the Platform for Tomorrow
Is the Open Web the Platform for TomorrowIs the Open Web the Platform for Tomorrow
Is the Open Web the Platform for Tomorrow
 
Cologne webperf
Cologne webperfCologne webperf
Cologne webperf
 
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
Cross the Streams! Creating Streaming Data Pipelines with Apache Flink + Apac...
 
CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?CPU vulnerabilities - where are we now?
CPU vulnerabilities - where are we now?
 
Setup and run wordpress: 201
Setup and run wordpress: 201Setup and run wordpress: 201
Setup and run wordpress: 201
 

Dernier

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 

Dernier (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

Technical Excellence - OOP Munich 2015

  • 2. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 2
  • 3. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. I Tried to Avoid Computers 3
  • 4. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 4
  • 5. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 5 People will pay me to do this?!!
  • 6. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 6
  • 7. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 7
  • 8. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 8
  • 9. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 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 9 The serial output port was notavailable for debug!
  • 10. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 10 Source level debug was there, if your source was ASM
  • 11. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 11
  • 12. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 12
  • 13. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. My Roots in Agile 13
  • 14. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 14 Kent Beck Ron Jeffries Ward Cunningham Martin Fowler
  • 15. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Let’s Have a Meeting 15 Alistair CockburnRobert Martin
  • 16. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. How Did I Find Myself at Agile Manifesto Meeting? 16 James, do you want to go to the Lightweight Methods Summit in Snowbird? Skiing! Sure Bob, I’ll go….
  • 17. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 17
  • 18. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Before the Agile Manifesto 18
  • 19. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 19 MessageProcessor SerialDriver WaitForString(buffer, length, semophore) Pend(semaphore) Post(semaphore) WaitForMessage(buffer, length) return Message Processor is blocked, waiting for its characters Interrupt is collecting characters SemaphoreFake Copyright © James W. Grenning <<implementation>> IO <<implements>> + Read(addr) : data + Write(addr, data) <<interface>> IO + Expect_Read(addr, data) + Expect_Write(addr, data) MockIO <<hardware>> + Program(addr, data) + ProtectBlock(block) + EraseBlock(block) //etc FlashDriver FlashDriverTest OurCode BFw Adaptor Big Framework + send() +receive Messaging + doSomething() <<interface>> OurServiceRequests <<implements>> Big Framework Client
  • 20. 20
  • 21. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 21
  • 22. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 22 That may not have been Watts’ intention, but it was the message that industry was hearing
  • 23. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Did that work? 23 Most the industry suffered from defects, delays and frustration.
  • 24. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 24
  • 25. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 25 The first and foremost statement stresses people
  • 26. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. People and Values were Central to Forming Agile 26
  • 27. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 27 Software development is not centrally about the process and documents
  • 28. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 28 static void checkEvent(ScheduledLightEvent* lightEvent) { if (randomEventAlreadyHappenedToday(lightEvent)) return; ! if (!TimeService_MatchesNow(lightEvent->day, lightEvent->minute + lightEvent->randomMinutes)) return; ! operateLight(lightEvent); ! ScheduledLightEvent_Randomize(lightEvent); preventAnotherRandomLightOperation(lightEvent); } ! void LightScheduler_Wakeup(void) { int i; ! for (i = 0; i < MAX_EVENTS; i++) { if (eventList[i].id != UNUSED) checkEvent(&eventList[i]); } } It’s about collaboration,customer, code, and product! thanks:lumaxart http://www.freestockphotos.biz/license.php?id=9749
  • 29. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The Public First Scrum Class (May 2003) 29
  • 30. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 0 100000 200000 300000 400000 Year 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Certified Scrum Masters 30
  • 31. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 0 100,000 200,000 300,000 400,000 Year 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Certified Scrum Developers Certified Scrum Masters Certified Scrum Students 31
  • 33. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What is Scrum? 33 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
  • 34. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Like in the 80s! Short Cycle Improvement 34
  • 35. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Except without the Difficult Improvement Part 35 ACT
  • 36. 36
  • 37. 37
  • 38. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 38
  • 39. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 39
  • 40. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 40 Not long after graduating college, I joined an office product company and started selling copiers. I loved what i did. James Murphy
  • 41. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 41 I had no flight experience…, but I was going to fly jets. James Murphy
  • 42. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 42 Just two years after signing up, I was not only flying, I was flying the supersonic F-15 Eagle
  • 43. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 43
  • 44. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 44 Pilots were “Task Saturated” Honest reflection and analysis
  • 45. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 45 The Debrief outcome, gives the refuel job to the boom operator, and a rest for the pilot.
  • 46. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What are We Supposed to Do? 46 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
  • 47. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. How are we doing? 47
  • 48. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Many think they’re doing great 48 In Company A 32% of the engineers said they were in the top 5% of skill and quality of work in the company. That seemed outrageous until you go to Company B, where 42% said they were in the top 5%. So much for being lonely at the top. Everybody tends to think that they are at the top much more than they really are. From David Dunning via Smart Planet bit.ly/we-think-we-are-smart
  • 49. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 40% think they’re in the top 5% ! 87.5% of them are wrong! 49
  • 50. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 50
  • 51. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 51
  • 52. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 10 Year Agile Celebration 52
  • 53. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 53 What do we, as member of the agile community need to fix?
  • 54. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 54
  • 55. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We believe the agile community must: #1 Demand technical excellence #2 Promote Individual [Change] and Lead Organizational Change
  • 56. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Remember what Ken Said? 56 "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.
  • 57. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Everything is Going Smoothly 57 Iteration 1 Iteration 2 Iteration 3 Iteration 4 Hardening
  • 58. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. ile 2014 58 Thank you: Hubert Stoffels, from Pittsburgh, USA '''Title:''' Jonathan's Run Falls '''Description:''' http://commons.wikimedia.org/wiki/File:Jonathan%27s_Run_Falls.jpg La, la la. I’m lookin’ for bugs
  • 59. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 59Thanks to Yorian, Picture of a waterfall nearby Flam, Norway http:// commons.wikimedia.org/wiki/File:Waterfall_in_Norway.jpg HELLLLP!
  • 60. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What Happens We Save Test Until the End? 60 Iteration 1 Iteration 2 Iteration 3 Iteration 4 Hardening Test and Fix Test and Fix Test and Fix Test and Fix Test and FixTest and Fix
  • 61. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Do Your Work Degrade into a Fire Fight? 61 Why Does ThisHappen??
  • 62. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 62
  • 63. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 63
  • 64. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 64 Hacking in newfeatures, chasing andmanaging bugs isnot TechnicalExcellence
  • 65. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What’s the Problem? 65 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
  • 66. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 66 The cadence of developmentchanges with Scrum Are you changing the how you engineer your products?
  • 67. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The Marriage of Scrum and XP 67
  • 68. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. So Far the Marriage is Unequal 68 CertifiedScrum M asters T y 0 100,000 200,000 300,000 400,000 Year 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Certified Scrum Developers Certified Scrum Masters 54509 333820 Does this mean it takes six CSMs to master one CSD?
  • 69. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. - A Brief Debrief - Current Development Practice in Industry As viewed from the pre- training surveys I use to better understand attendee backgrounds 69
  • 70. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 70
  • 71. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 71 How do you test your code?
  • 72. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 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 72
  • 73. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 73
  • 74. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 74
  • 75. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 75
  • 76. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 76
  • 77. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 77 Congratulations!!! You are using state of art practices from 1979
  • 78. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 78 Debug-laterProgramming
  • 79. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The Physics of Debug Later Programming (DLP) • As Td increases, Tfind increases dramatically • Tfix is usually short, but can increase with Td http://www.renaissancesoftware.net/blog/archives/16 79 Bug discoveryMistake made (bug injection) Bug found Bug fixed Td Tfind T fix Time
  • 80. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. A Bug’s Life 80 From http://www.softwaretestinghelp.com/bug-life-cycle/
  • 81. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 81 Your program will have bugs. And they will surprise you when you find them.
  • 82. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Zune 30G 82 Decem ber31,2008
  • 83. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 83 BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
  • 84. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 84 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; }
  • 85. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 85 This Test Could Have Prevented it TEST(Rtc, check20081231) { days = daysSince1980(2008, 366); CHECK(ConvertDays(days, &time)); assertDate(WED, 2008, 12, 31); } !
  • 86. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 86 Where do the bugs come from?
  • 87. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 87
  • 88. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 88
  • 89. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Really, It’s Not Our Fault? 89 James D. Murphy We put them there
  • 90. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. This Work Flow is Designed to Allow Defects 90 Development Test Defects
  • 91. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. A Bug’s Life 91 From http://www.softwaretestinghelp.com/bug-life-cycle/
  • 92. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Edsger Dijkstra 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. 92
  • 93. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We tend to do what we know People do what they can conceive of, but sometimes there are better solutions, or considerations and risks they never knew were out there. They don’t take a solution they don’t know about. 93 From David Dunning via Smart Planet bit.ly/we-think-we-are-smart
  • 94. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. I’ve got 10 years experience! 94 1 year 1 year 1 year 1 year 1 year 1 year 1 year 1 year 1 year 1 year
  • 95. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We tend to do what we know It is almost impossible for an individual left to their own devices to get self-assessment right. The worth of one’s ideas runs through other people. That is, workers should pay attention to what other workers are doing. You can watch other people to benchmark how they handle the same sorts of tasks or situations. Seek out feedback from other workers or managers. 95 From David Dunning via Smart Planet bit.ly/we-think-we-are-smart
  • 96. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 96 Kent Beck Ron Jeffries Ward Cunningham Martin Fowler
  • 97. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. eHarmony Match 97
  • 98. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. XP Identifies Shared Values and Defines the Technical Practices Needed for Growing Computer Software 98
  • 99. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 99 Quality is important Focus on it every day Testing is good Test all the time Reviews are good Review all the time Customer input is good Talk to your customer every day Planning is important Keep the plan alive, plan to replan
  • 100. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The Physics of Debug Later Programming (DLP) • As Td increases, Tfind increases dramatically • Tfix is usually short, but can increase with Td http://www.renaissancesoftware.net/blog/archives/16 100 Bug discoveryMistake made (bug injection) Bug found Bug fixed Td Tfind T fix Time
  • 101. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 101Thanks to Yorian, Picture of a waterfall nearby Flam, Norway http:// commons.wikimedia.org/wiki/File:Waterfall_in_Norway.jpg HELLLLP!
  • 102. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Edsger Dijkstra 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. 102
  • 103. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. • Write a test • Watch it fail • Make it pass • Refactor (improve) • Repeat until done T D D
  • 104. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. devconfu, Nov 2013 Riga, Latvia www.renaissancesoftware.net james@renaissancesoftware.net Copyright © 2008-2013 James W. Grenning All Rights Reserved. Test Driven Development www.renaissancesoftware.net james@renaissancesoftware.net Copyright © 2008-2013 James W. Grenning All Rights Reserved. For use by training attendees. If test moved upstream, could we get working features to flow? 104
  • 105. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Development and Test are a Continuum Preventing Defects 105 Development Test
  • 106. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 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 106 Mistake discovery Mistake made Root cause found Mistake fixed T d Tfind T fix Time
  • 107. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 107 TDD is FUN! TDD is a challenge. It’s hard to learn.
  • 108. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 108 A Complex system that works is invariably found to have evolved from a simple system that worked.
  • 109. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 109 Unit Tests are Critical! Is your team doing TDD? Does your team create unit tests? Writing tests after is not so fun, but
  • 110. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. System Level Tests Cannot be Thorough • How many sub-system tests are needed? 110 10 states 10 states 10 states 5 interactions 5 interactions 5 interactions Tests
  • 111. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. TDD unit tests can be thorough • How many unit tests are needed? 111 10 states 10 states 10 states 5 interactions 5 interactions 5 interactions Tests Tests
  • 112. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 112 Solid foundation Wired properly and meets customer needs Looks and feels right
  • 113. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 113
  • 114. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 114 Tests Must be Automated
  • 115. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. test Assume Test Effort is Proportional to Development Effort dev Iterations Effort 5 10 15 20 25
  • 116. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 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]
  • 117. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 117 System Antics System - something setup to attain a goal Antics - amusing, frivolous, or eccentric behavior
  • 118. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 118 Systems
  • 119. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 119 System Antics
  • 120. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 120 Because systems actup -- we have to bevery careful.
  • 121. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. test Manual Test is Unsustainable Effort Iterations Unsustainable growth dev 5 10 15 20 25
  • 122. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Risk Accumulates in the Untested Code Gap Effort Iterations Unsustainable growth dev 5 10 15 20 25 Untested Code Gap test
  • 123. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. My Take Away 123 Keep the cost of retest low Keep the system running Tests Must be Automated
  • 124. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Try to Reframe the Problem 124 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
  • 125. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We believe the agile community must: #1 Demand technical excellence #2 Promote Individual [Change] and Lead Organizational Change
  • 126. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 126 TechnicalExcellence isn’tJust Passing Tests
  • 127. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 127 Why does code structure matter?
  • 128. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 128 The Two Values of Software
  • 129. 129 Defined “Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure.” [REF] ! ! • Refactoring Debt Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning.
  • 130. Refactoring Goal • “Clean code that works” – Ron Jeffries 130Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning.
  • 131. How? • Remove duplication • Fix bad names – J.B. Rainsberger 131Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning.
  • 132. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do. Donald Knuth Says 132
  • 133. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Really, It’s Not Our Fault? 133 James D. Murphy How are we doingat that one?
  • 134. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Spaghetti Slide 134
  • 135. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 135
  • 136. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 136
  • 137. Martin Fowler Says 137Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 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
  • 138. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 138 Code ‘Badness’ Over time 0 25 50 75 100 CodeBadness Time
  • 139. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 139 Code ‘Badness’ Over time 0 25 50 75 100 CodeBadness Time
  • 140. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Developers Need to Know and Practice Refactoring’s Three Critical Skills 140 Recognize what is wrong, fix it! Keep the code working the whole time!
  • 141. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 141 If a system is working, leave it alone. Don't change anything Systems don’t appreciate being fiddled and diddled with
  • 142. Humpty Dumpty from The Book of Knowledge, p. 968, Vol. III, The Grolier Society, New York, 1911. Code with design problem Envisioned design Improved design that works Take it apart, put it back together. The system is broken during redesign effort. Broken Debug Rework Unpredictable Unhappy Refactor to the better design. Test are always passing. The system is never broken. Refactoring vs. Humpty Dumpty Redesign 142Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning.
  • 143. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Automated Tests Make Refactoring Safer 143 Test Test Test Test Test Test Test Test Rename Extract Move Extract Extract Replace switch Encapsulate Move
  • 144. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 144 Sustain Low Code ‘Badness’ Over time 0 25 50 75 100 CodeBadness Time
  • 145. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Spaghetti Slide 145
  • 146. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 146 Code ‘Badness’ Over time 0 25 50 75 100 CodeBadness Time
  • 147. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 147 Why does code structure matter?
  • 148. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 148 The Lawyers are Coming
  • 149. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 149
  • 150. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 150
  • 151. 151 "We've demonstrated how as little as a single bit flip can cause the driver to lose control of the engine speed in real cars due to software malfunction that is not reliably detected by any fail-safe," - Michael Barr, CTO, co-founder of Barr Group http://www.eetimes.com/document.asp?doc_id=1319903
  • 152. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Stack overflow and software bugs led to memory corruption, he said. And it turns out that the crux of the issue was these memory corruptions, which acted "like ricocheting bullets." • “Kitchen Sink” (a.k.a. do it all) task • Responsible for closed loop control and failsafes
  • 153. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 153 You don’t want to create this website
  • 154. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 154 Why doesn’t your team use TDD and Refactoring and the other technical practices of Agile?
  • 155. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We’re different! 155
  • 156. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We can’t use TDD and Refactoring! 156
  • 157. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Everything is fine. 157
  • 158. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. REALLY! 158
  • 159. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. pay no attention to that fire over there 159
  • 160. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. REALLY! 160
  • 161. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We’re BUSY! 161 ACT
  • 162. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What Slows You Down? 162
  • 163. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 90% done 163
  • 164. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 164
  • 165. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 1 165
  • 166. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We’re different! 166
  • 167. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 167 Embedded software is special
  • 168. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 168 Web service software is special
  • 169. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 169 Health Insurance software is special
  • 170. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 170 Design automation is special
  • 171. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 171 Financial Software is special
  • 172. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 172 YOU are special
  • 173. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 173 It just does not matter.
  • 174. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What are We Supposed to Do? 174 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
  • 175. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. What is the biggest problem of getting there? 175 from: Scrum with XP and Beyond The biggest problem worldwide for Scrum teams is getting shippable code at the end of every sprint.
  • 176. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 176 What is in your way?
  • 177. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. ` 177 My Boss won’t let me
  • 179. 179 I don’t have time for all this extra stuff!!
  • 180. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The Physics of Debug Later Programming (DLP) • As Td increases, Tfind increases dramatically • Tfix is usually short, but can increase with Td http://www.renaissancesoftware.net/blog/archives/16 180 Bug discoveryMistake made (bug injection) Bug found Bug fixed Td Tfind T fix Time
  • 181. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 181
  • 182. 182 Michael Dubakov Speed in SW Development http://bit.ly/sw-dev-speed Slow workstation Development Speed Skills Waste and Non-value added activity Mentor other people Orange Fridays New people More Development teams Conferences People who learn things system complexity Technical debt Cowboy coding Deadlines Refactoring Unclear requirements Re-work Bad UX - Dev transition Focused Work IM/Skype Open Space Emergency rotation people rotations between teams UX meetings Unstable / slow Tests More work coordination Multi-tasking Large WIP Prototypes Good Specs Domain Knowledge Daily Meetings Sport at work Meetings Board meetings Passion Bugs Wait states Good Features Ranking Model Do right things HR interviews Disciplined process Work experience Work / Life balance Sport / Hobbies outside work Fast feedback Short term boost Good It depends Bad Increasing effect Decreasing effect Overtime Cooperative testing http://bit.ly/sw-dev-speed
  • 187. 187 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime
  • 188. 188 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime
  • 189. 189 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed
  • 190. 190 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed Development Speed More Development teams
  • 191. 191 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed Development Speed Waste and Non-value added activity Mentor other people New people More Development teams More work coordination Meetings HR interviews
  • 192. 192 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed Development Speed Waste and Non-value added activity Mentor other people New people More Development teams More work coordination Meetings HR interviews
  • 193. 193 Of course we don’thave time!!
  • 194. Development Speed Skills Conferences People who learn things Focused Work Domain Knowledge Passion Work experience Work / Life balance Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed Development Speed Waste and Non-value added activity Mentor other people New people More Development teams More work coordination Meetings HR interviews
  • 196. 196 Why are deadlines, overtime, and increasing technical debt such a popular practice in development? Development Speed system complexity Technical debt Deadlines Short term boost Overtime
  • 197. 197 Development Speed Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Short term boost Overtime Development Speed system complexity Technical debt Deadlines Focused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Short term boost Overtime Development Speed system complexity Technical debt Deadlines Unclear requirements Re-workFocused Work Emergency rotation people rotations between teams Multi-tasking Large WIP Bugs Do right things Short term boost Overtime Slow workstation Development Speed Development Speed Waste and Non-value added activity Mentor other people New people More Development teams More work coordination Meetings HR interviews Why are the destructive practices so much more prevalent?
  • 198. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. We tend to do what we know People do what they can conceive of, but sometimes there are better solutions, or considerations and risks they never knew were out there. They don’t take a solution they don’t know about. 198 From David Dunning via Smart Planet bit.ly/we-think-we-are-smart
  • 199. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Managers, Leaders and Coaches TODO 199 Make sure your team knows state of the art practices Support learning, problem solving, and continuous improvement Make sure your organization knows why they are important
  • 200. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Yeah but I’m an engineer 200
  • 201. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 201 People are generally doing the best they know Often, people don’t know what they don’t know
  • 202. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Developers TODO 202 Become an expert in your craft Become an advisor to your organization learn and try new things Build Trust - Make your Work Visible Work with others
  • 203. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 203 Beware of limits
  • 204. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Scrum Masters TODO 204 Encourage your people to be problem solvers Not dogma followers Remember: there are no scrum slaves
  • 205. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Managers TODO: 205 Grow great teams Stop Motivating Your Team
  • 206. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Motivation 206 Motivating an individual or a team is hard While demotivating them is really easy!
  • 207. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Avoid De-motivators 207 Unrealistic deadlines Encouraging poor quality work Punishing the truth Lack of trust Stretch goals
  • 208. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Motivators 208 Problem solving Knowing the Vision Knowing why it is important Trust Mutual respect
  • 209. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. I Tried to Avoid Computers 209
  • 211. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 211 People will pay me for this?!!
  • 212. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. 212 Putting out fires in the untested code gap is not technical excellence test Effort Unsustainable growth dev 5 10 15 20 25 Untested Code Gap
  • 213. 213Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. The End __EVENT__ www.wingman-sw.com james@wingman-sw.com Copyright © 2008-20XX James W. Grenning All Rights Reserved @jwgrenning. http://commons.wikimedia.org/wiki/File:Abies_nordmanniana_PAN_2.jpg
  • 214. Technical Excellence OOP, Munich 2015 www.wingman-sw.com Oop@wingman-sw.com Copyright © 2008-2014 James W. Grenning All Rights Reserved @jwgrenning. Demand Technical Excellence 214 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