growing and fostering software craftsmanship

Post on 08-May-2015

3.192 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

Growing And Fostering CraftsmanshipCory Foy | Cory Foy, LLC

@cory_foy | foyc@coryfoy.com

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.

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.

top related