growing and fostering software craftsmanship

88
Growing And Fostering Craftsmanship Cory Foy | Cory Foy, LLC @cory_foy | [email protected]m 1 Wednesday, June 2, 2010 L: 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/

Upload: cory-foy

Post on 08-May-2015

3.192 views

Category:

Technology


0 download

DESCRIPTION

This is the slide deck for Cory's talk at XP2010 in Trondheim, Norway. You can see the video at http://vimeo.com/12244804

TRANSCRIPT

Page 1: Growing and Fostering Software Craftsmanship

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/

Page 2: Growing and Fostering Software Craftsmanship

2Wednesday, June 2, 2010

Page 3: Growing and Fostering Software Craftsmanship

Problem

3Wednesday, June 2, 2010

“IT is a pain in the ass” - Guy next to me on the flight to XP2010

Page 4: Growing and Fostering Software Craftsmanship

4Wednesday, June 2, 2010

How many of us are as happy as this guy?

Page 5: Growing and Fostering Software Craftsmanship

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

Page 6: Growing and Fostering Software Craftsmanship

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?

Page 7: Growing and Fostering Software Craftsmanship

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.

Page 8: Growing and Fostering Software Craftsmanship

Typing Is Not The Bottleneck

8Wednesday, June 2, 2010

Page 9: Growing and Fostering Software Craftsmanship

9Wednesday, June 2, 2010

Page 10: Growing and Fostering Software Craftsmanship

9Wednesday, June 2, 2010

Page 11: Growing and Fostering Software Craftsmanship

“In programming the hard part isn’t solving problems, but deciding what

problems to solve.”

Paul Graham

10Wednesday, June 2, 2010

Page 12: Growing and Fostering Software Craftsmanship

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.

Page 13: Growing and Fostering Software Craftsmanship

“...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

Page 14: Growing and Fostering Software Craftsmanship

13Wednesday, June 2, 2010

Page 15: Growing and Fostering Software Craftsmanship

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?

Page 16: Growing and Fostering Software Craftsmanship

Code Quality

15Wednesday, June 2, 2010

Page 17: Growing and Fostering Software Craftsmanship

Communicating Intent

16Wednesday, June 2, 2010

Readability

Page 18: Growing and Fostering Software Craftsmanship

Collaboration

17Wednesday, June 2, 2010

We can’t be the stereotypical IT people

Page 19: Growing and Fostering Software Craftsmanship

18Wednesday, June 2, 2010

We can’t be the stereotypical IT people

Page 20: Growing and Fostering Software Craftsmanship

Sharing Knowledge

19Wednesday, June 2, 2010

Page 21: Growing and Fostering Software Craftsmanship

Breaking Out Features

20Wednesday, June 2, 2010

Minimal Marketable Feature. Small Stories.

Page 22: Growing and Fostering Software Craftsmanship

Responsibility

21Wednesday, June 2, 2010

Regression Test Assurance

Page 23: Growing and Fostering Software Craftsmanship

How can Craftsmanship Help?

22Wednesday, June 2, 2010

Page 24: Growing and Fostering Software Craftsmanship

Fix the problem at its source.

23Wednesday, June 2, 2010

And what’s the source?

Page 25: Growing and Fostering Software Craftsmanship

24Wednesday, June 2, 2010

We’ve let

Page 26: Growing and Fostering Software Craftsmanship

Us

24Wednesday, June 2, 2010

We’ve let

Page 27: Growing and Fostering Software Craftsmanship

Fear

25Wednesday, June 2, 2010

stagnate us.

Page 28: Growing and Fostering Software Craftsmanship

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.

Page 29: Growing and Fostering Software Craftsmanship

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.

Page 30: Growing and Fostering Software Craftsmanship

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.

Page 31: Growing and Fostering Software Craftsmanship

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.

Page 32: Growing and Fostering Software Craftsmanship

Source: http://www.twistedsister.com/gallery.php

26Wednesday, June 2, 2010

We have to say that we aren’t going to take it

Page 33: Growing and Fostering Software Craftsmanship

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

Page 34: Growing and Fostering Software Craftsmanship

Passion

28Wednesday, June 2, 2010

And it was this passion which led to a

Page 35: Growing and Fostering Software Craftsmanship

Manifesto

29Wednesday, June 2, 2010

Agile Manifesto outlining four key values for anyone adopting agile methodologies.

Page 36: Growing and Fostering Software Craftsmanship

Individuals and Interactions

30Wednesday, June 2, 2010

over processes and tools

Page 37: Growing and Fostering Software Craftsmanship

Working Software

31Wednesday, June 2, 2010

over comprehensive documentation

Page 38: Growing and Fostering Software Craftsmanship

Customer Collaboration

32Wednesday, June 2, 2010

over contract negotiation

Page 39: Growing and Fostering Software Craftsmanship

Responding to Change

33Wednesday, June 2, 2010

over following a plan. And everything was...

Page 40: Growing and Fostering Software Craftsmanship

34Wednesday, June 2, 2010

flowers, right?! Right?! No! It was all....

Page 41: Growing and Fostering Software Craftsmanship

35Wednesday, June 2, 2010

weird and distorted. Project Management seemed to be doing better, but developers were still pumping out garbage.

Page 42: Growing and Fostering Software Craftsmanship

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.

Page 43: Growing and Fostering Software Craftsmanship

CraftsmanshipoverCrap

37Wednesday, June 2, 2010

No wait. That’s not it. Let’s try again.

Page 44: Growing and Fostering Software Craftsmanship

38Wednesday, June 2, 2010

Ah, much better! This statement led to a manifesto focused at the software developers

Page 45: Growing and Fostering Software Craftsmanship

CRAFTSMANSHIPOVERCRAP!

38Wednesday, June 2, 2010

Ah, much better! This statement led to a manifesto focused at the software developers

Page 46: Growing and Fostering Software Craftsmanship

39Wednesday, June 2, 2010

But the manifesto and the ideals behind it have an unspoken definition. Craftsmanship is about....

Page 47: Growing and Fostering Software Craftsmanship

Responsibility

40Wednesday, June 2, 2010

Whose Responsibility?

Page 48: Growing and Fostering Software Craftsmanship

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?

Page 49: Growing and Fostering Software Craftsmanship

Yours!

42Wednesday, June 2, 2010

Whose Responsibility is it for growing in your profession? (All together now)

Page 50: Growing and Fostering Software Craftsmanship

Yours!

43Wednesday, June 2, 2010

Whose Responsibility is it for teaching others?

Page 51: Growing and Fostering Software Craftsmanship

Yours!

44Wednesday, June 2, 2010

Whose Responsibility is it for making what you build the best it can be?

Page 52: Growing and Fostering Software Craftsmanship

Yours!

45Wednesday, June 2, 2010

Indeed. (Next slide: Craftsmanship==Responsibility)

Page 53: Growing and Fostering Software Craftsmanship

Craftsmanship ==Responsibility

46Wednesday, June 2, 2010

So, if craftsmanship is responsibility, whose job is it to foster craftsmanship in your organization?

Page 54: Growing and Fostering Software Craftsmanship

Yours.

47Wednesday, June 2, 2010

Page 55: Growing and Fostering Software Craftsmanship

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...

Page 56: Growing and Fostering Software Craftsmanship

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...

Page 57: Growing and Fostering Software Craftsmanship

Fostering Craftsmanship in your Organization

49Wednesday, June 2, 2010

Page 58: Growing and Fostering Software Craftsmanship

a.k.a.

50Wednesday, June 2, 2010

Page 59: Growing and Fostering Software Craftsmanship

Cory’s 5-step Plan to World Domination

51Wednesday, June 2, 2010

Page 60: Growing and Fostering Software Craftsmanship

Cory’s 5-step Plan to Fostering Craftsmanship

52Wednesday, June 2, 2010

Page 61: Growing and Fostering Software Craftsmanship

Step 1:Start with you

53Wednesday, June 2, 2010

Katas. Learn them. Do them. Love them.

Page 62: Growing and Fostering Software Craftsmanship

54Wednesday, June 2, 2010

Katas. Learn them. Do them. Love them.

Page 63: Growing and Fostering Software Craftsmanship

Step 2:Involve your team

55Wednesday, June 2, 2010

Brown Bags. Show people what you’ve been working on.

Page 64: Growing and Fostering Software Craftsmanship

Step 3:Get people talking

56Wednesday, June 2, 2010

Book Clubs. Doesn’t matter the topic - just get people meeting and talking. Do Food.

Page 65: Growing and Fostering Software Craftsmanship

57Wednesday, June 2, 2010

Picture from Hashrocket

Page 66: Growing and Fostering Software Craftsmanship

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.

Page 67: Growing and Fostering Software Craftsmanship

59Wednesday, June 2, 2010

Dave and Adewale’s Book

Page 68: Growing and Fostering Software Craftsmanship

Step 5:Make it Clear

60Wednesday, June 2, 2010

Profit! Or formalize the program. Create a training path for people to follow.

Page 70: Growing and Fostering Software Craftsmanship

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

Page 71: Growing and Fostering Software Craftsmanship

Learning Models

63Wednesday, June 2, 2010

Thankfully, not every one. Just a specific one. It’s called the Dreyfus Model of Skills Acquisition

Page 72: Growing and Fostering Software Craftsmanship

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?

Page 73: Growing and Fostering Software Craftsmanship

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

Page 74: Growing and Fostering Software Craftsmanship

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

Page 75: Growing and Fostering Software Craftsmanship

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.

Page 76: Growing and Fostering Software Craftsmanship

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).

Page 77: Growing and Fostering Software Craftsmanship

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.

Page 78: Growing and Fostering Software Craftsmanship

But Remember

70Wednesday, June 2, 2010

Page 79: Growing and Fostering Software Craftsmanship

Individuals and Interactions

71Wednesday, June 2, 2010

Page 80: Growing and Fostering Software Craftsmanship

over

72Wednesday, June 2, 2010

Page 81: Growing and Fostering Software Craftsmanship

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.

Page 82: Growing and Fostering Software Craftsmanship

Summary

74Wednesday, June 2, 2010

So, to summarize

Page 83: Growing and Fostering Software Craftsmanship

75Wednesday, June 2, 2010

Don’t let fear

Page 84: Growing and Fostering Software Craftsmanship

76Wednesday, June 2, 2010

Stagnate you

Page 85: Growing and Fostering Software Craftsmanship

77Wednesday, June 2, 2010

and keep you from being happy

Page 86: Growing and Fostering Software Craftsmanship

78Wednesday, June 2, 2010

Because only you

Page 87: Growing and Fostering Software Craftsmanship

79Wednesday, June 2, 2010

can raise the bar

Page 88: Growing and Fostering Software Craftsmanship

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.