growing and fostering software craftsmanship
DESCRIPTION
This is the slide deck for Cory's talk at XP2010 in Trondheim, Norway. You can see the video at http://vimeo.com/12244804TRANSCRIPT
Growing And Fostering CraftsmanshipCory Foy | Cory Foy, LLC
@cory_foy | [email protected]
1Wednesday, June 2, 2010L: http://www.flickr.com/photos/cobalt/2712729687/sizes/l/R: http://www.flickr.com/photos/jeffbelmonte/6406082/sizes/o/C: http://www.flickr.com/photos/pepe50/3057465486/sizes/l/
2Wednesday, June 2, 2010
Problem
3Wednesday, June 2, 2010
“IT is a pain in the ass” - Guy next to me on the flight to XP2010
4Wednesday, June 2, 2010
How many of us are as happy as this guy?
Source: http://www.infoq.com/articles/Interview-Johnson-Standish-CHAOS
5Wednesday, June 2, 2010
How can we be happy? 26% average succeeded rate in software projects. Success is measured solely by releasing on a specific date
Source: http://www.infoq.com/articles/Interview-Johnson-Standish-CHAOS
6Wednesday, June 2, 2010
One year, 1 million dollar project is now a 1.8 million dollar project. And you’ll get it 6 months late. How ‘bout them apples?
7Wednesday, June 2, 2010
Release July 10th. Next release planned for June. Pulled everything to one backlog planned for next release. Ran one 4-week iteration. Initial velocity showed release date August - 3 years later.
Typing Is Not The Bottleneck
8Wednesday, June 2, 2010
9Wednesday, June 2, 2010
9Wednesday, June 2, 2010
“In programming the hard part isn’t solving problems, but deciding what
problems to solve.”
Paul Graham
10Wednesday, June 2, 2010
Credit: http://www.flickr.com/photos/cdevers/4456481460/sizes/l/
11Wednesday, June 2, 2010
There was a time when that was easy. Because the problem was engineering. And hardware.
“...the intellectual bookkeeping challenge...has been replaced with the challenge of clearly expressing the design intention to
the rest of the team so the system can evolve.”- Pete McBreen, Software Craftsmanship: The New Imperative
12Wednesday, June 2, 2010
13Wednesday, June 2, 2010
14Wednesday, June 2, 2010
This means there is a shift happening in our industry. If typing isn’t the bottleneck, and hardware isn’t the problem, and the challenge is in expression - what are our weaknesses?
Code Quality
15Wednesday, June 2, 2010
Communicating Intent
16Wednesday, June 2, 2010
Readability
Collaboration
17Wednesday, June 2, 2010
We can’t be the stereotypical IT people
18Wednesday, June 2, 2010
We can’t be the stereotypical IT people
Sharing Knowledge
19Wednesday, June 2, 2010
Breaking Out Features
20Wednesday, June 2, 2010
Minimal Marketable Feature. Small Stories.
Responsibility
21Wednesday, June 2, 2010
Regression Test Assurance
How can Craftsmanship Help?
22Wednesday, June 2, 2010
Fix the problem at its source.
23Wednesday, June 2, 2010
And what’s the source?
24Wednesday, June 2, 2010
We’ve let
Us
24Wednesday, June 2, 2010
We’ve let
Fear
25Wednesday, June 2, 2010
stagnate us.
Fear
“People can be trained not to innovate, not to explore, and not to reach. Many organizations value conformance above all.
They cut off the top and the bottom of the bell curve -- they like interchangeable cogs. You can achieve predictability through mediocrity in those places, and the best answer is to decide to
either go along or get out.”
25Wednesday, June 2, 2010
stagnate us.
Fear“Since my endeavors are not supported by my organization, I'm limited to TDD,
and have no way of implementing acceptance tests without getting sacked. I'm pushing my luck to do TDD at all.”
25Wednesday, June 2, 2010
stagnate us.
Fear“When the manager saw our
estimate for the project, he gave us a deadline without
considering our suggestions. He is not a programmer and
his reason was a political deadline.”
25Wednesday, June 2, 2010
stagnate us.
Fear
“In my company, no code changes can happen without the approval of
the Board of Governors for the product involved”
25Wednesday, June 2, 2010
stagnate us.
Source: http://www.twistedsister.com/gallery.php
26Wednesday, June 2, 2010
We have to say that we aren’t going to take it
Unacceptable
27Wednesday, June 2, 2010
We have to declare that it is unacceptable for us to be put in situations which destroy the one thing which drives each of us here
Passion
28Wednesday, June 2, 2010
And it was this passion which led to a
Manifesto
29Wednesday, June 2, 2010
Agile Manifesto outlining four key values for anyone adopting agile methodologies.
Individuals and Interactions
30Wednesday, June 2, 2010
over processes and tools
Working Software
31Wednesday, June 2, 2010
over comprehensive documentation
Customer Collaboration
32Wednesday, June 2, 2010
over contract negotiation
Responding to Change
33Wednesday, June 2, 2010
over following a plan. And everything was...
34Wednesday, June 2, 2010
flowers, right?! Right?! No! It was all....
35Wednesday, June 2, 2010
weird and distorted. Project Management seemed to be doing better, but developers were still pumping out garbage.
Source:http://gallery.me.com/pew#100134/IMG_0155&bgcolor=black
36Wednesday, June 2, 2010
But then this guy lulled us all in during dinner with 1500 of our closest friends at Agile 2008 and said the words that have stuck with me ever since.
CraftsmanshipoverCrap
37Wednesday, June 2, 2010
No wait. That’s not it. Let’s try again.
38Wednesday, June 2, 2010
Ah, much better! This statement led to a manifesto focused at the software developers
CRAFTSMANSHIPOVERCRAP!
38Wednesday, June 2, 2010
Ah, much better! This statement led to a manifesto focused at the software developers
39Wednesday, June 2, 2010
But the manifesto and the ideals behind it have an unspoken definition. Craftsmanship is about....
Responsibility
40Wednesday, June 2, 2010
Whose Responsibility?
41Wednesday, June 2, 2010
YOUR RESPONSIBILITY! (And look! I found a hip bear!). Given that - whose responsibility is it for learning new technologies and techniques?
Yours!
42Wednesday, June 2, 2010
Whose Responsibility is it for growing in your profession? (All together now)
Yours!
43Wednesday, June 2, 2010
Whose Responsibility is it for teaching others?
Yours!
44Wednesday, June 2, 2010
Whose Responsibility is it for making what you build the best it can be?
Yours!
45Wednesday, June 2, 2010
Indeed. (Next slide: Craftsmanship==Responsibility)
Craftsmanship ==Responsibility
46Wednesday, June 2, 2010
So, if craftsmanship is responsibility, whose job is it to foster craftsmanship in your organization?
Yours.
47Wednesday, June 2, 2010
48Wednesday, June 2, 2010
Come on, Cory. How the heck are we supposed to be responsible for all that? Well, I’ll tell you. By showing you the guide to...
48Wednesday, June 2, 2010
Come on, Cory. How the heck are we supposed to be responsible for all that? Well, I’ll tell you. By showing you the guide to...
Fostering Craftsmanship in your Organization
49Wednesday, June 2, 2010
a.k.a.
50Wednesday, June 2, 2010
Cory’s 5-step Plan to World Domination
51Wednesday, June 2, 2010
Cory’s 5-step Plan to Fostering Craftsmanship
52Wednesday, June 2, 2010
Step 1:Start with you
53Wednesday, June 2, 2010
Katas. Learn them. Do them. Love them.
54Wednesday, June 2, 2010
Katas. Learn them. Do them. Love them.
Step 2:Involve your team
55Wednesday, June 2, 2010
Brown Bags. Show people what you’ve been working on.
Step 3:Get people talking
56Wednesday, June 2, 2010
Book Clubs. Doesn’t matter the topic - just get people meeting and talking. Do Food.
57Wednesday, June 2, 2010
Picture from Hashrocket
Step 4:Get people learning
(and teaching)
58Wednesday, June 2, 2010
Apprenticeships. Ask people to mentor you, and offer the same to those with you.
59Wednesday, June 2, 2010
Dave and Adewale’s Book
Step 5:Make it Clear
60Wednesday, June 2, 2010
Profit! Or formalize the program. Create a training path for people to follow.
This is Jason Gorman’s. Don’t blame me. http://qconlondon.com/london-2010/file?path=%2Fqcon-london-2010%2Fslides
%2FJasonGorman_BeyondMastersApprenticesAScalablePeerLedModelForBuildingGoodHabitsInLargeDiverseDevelopmentTeams.pdf
61Wednesday, June 2, 2010
Reference Application
62Wednesday, June 2, 2010
In fact, because I’ve only gotten 4 hours of sleep in the past 70 hours, I found a way to do all five steps using only Katas. I call this my “reference application”. To understand it we have to know about
Learning Models
63Wednesday, June 2, 2010
Thankfully, not every one. Just a specific one. It’s called the Dreyfus Model of Skills Acquisition
Dreyfus Model of Skills AcquisitionLevel Description
Novice Needs to be told exactly what to do. No context to work from
Advanced Beginner Has more context, but needs rigid guidelines
Competent Questions reasoning behind the tasks and can see consequences
Proficient Still relies on rules, but can separate what’s important
Expert Works mainly on intuition, except when problems occur
64Wednesday, June 2, 2010
Using this model, we can create a path for team members to go from Novice to Expert using Katas. How?
Level 1: Novice
65Wednesday, June 2, 2010
Novices don’t have the context to make judgement calls. So for novices, we can provide the outline of a Kata with acceptance tests pre-filled out. This gives them context and structure. Show Corey’s String Calculator
Level 2: Advanced Beginner
66Wednesday, June 2, 2010
Advanced Beginners still need structure, so at level 2, they would still use pre-populated templates. However, they would only be partially filled out. For example, in the String Calculator, Roy defined additional requirements which aren’t in the tests
Level 3: Competent
67Wednesday, June 2, 2010
As developers reach competency, they need less context. At this stage, there still may be some structure predefined in the katas, but certainly no tests are filled in.
Level 4: Proficient
68Wednesday, June 2, 2010
At proficiency, developers should be able to tackle a Kata from scratch, including set-up of any necessary tools (RSpec, Cucumber, FitNesse, NUnit).
Level 5: Expert
69Wednesday, June 2, 2010
Finally, as they reach an expert stage, they should be able to develop their own katas for contribution back to the team.
But Remember
70Wednesday, June 2, 2010
Individuals and Interactions
71Wednesday, June 2, 2010
over
72Wednesday, June 2, 2010
Processes and Tools
73Wednesday, June 2, 2010
In other words, don’t let the kata structure become a replacement for individuals and interactions. Part of why programs and methodologies work is the learning that goes into implementing and customizing it. As it grows, it may stagnate. Don’t do that.
Summary
74Wednesday, June 2, 2010
So, to summarize
75Wednesday, June 2, 2010
Don’t let fear
76Wednesday, June 2, 2010
Stagnate you
77Wednesday, June 2, 2010
and keep you from being happy
78Wednesday, June 2, 2010
Because only you
79Wednesday, June 2, 2010
can raise the bar
80Wednesday, June 2, 2010
stop valuing crap, and instead deliver real value. And at the end of the day, that’s what our customers want, our organizations want, and I bet most of us want too.