Growing and Fostering Software Craftsmanship

  • 3,122 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,122
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
67
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Growing And Fostering Craftsmanship Cory Foy | Cory Foy, LLC @cory_foy | foyc@coryfoy.com Wednesday, June 2, 2010 1 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/
  • 2. Wednesday, June 2, 2010 2
  • 3. Problem Wednesday, June 2, 2010 3 “IT is a pain in the ass” - Guy next to me on the flight to XP2010
  • 4. Wednesday, June 2, 2010 4 How many of us are as happy as this guy?
  • 5. Source: http://www.infoq.com/articles/Interview-Johnson-Standish-CHAOS Wednesday, June 2, 2010 5 How can we be happy? 26% average succeeded rate in software projects. Success is measured solely by releasing on a specific date
  • 6. Source: http://www.infoq.com/articles/Interview-Johnson-Standish-CHAOS Wednesday, June 2, 2010 6 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?
  • 7. Wednesday, June 2, 2010 7 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.
  • 8. Typing Is Not The Bottleneck Wednesday, June 2, 2010 8
  • 9. Wednesday, June 2, 2010 9
  • 10. Wednesday, June 2, 2010 9
  • 11. “In programming the hard part isn’t solving problems, but deciding what problems to solve.” Paul Graham Wednesday, June 2, 2010 10
  • 12. Credit: http://www.flickr.com/photos/cdevers/4456481460/sizes/l/ Wednesday, June 2, 2010 11 There was a time when that was easy. Because the problem was engineering. And hardware.
  • 13. “...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 Wednesday, June 2, 2010 12
  • 14. Wednesday, June 2, 2010 13
  • 15. Wednesday, June 2, 2010 14 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?
  • 16. Code Quality Wednesday, June 2, 2010 15
  • 17. Communicating Intent Wednesday, June 2, 2010 16 Readability
  • 18. Collaboration Wednesday, June 2, 2010 17 We can’t be the stereotypical IT people
  • 19. Wednesday, June 2, 2010 18 We can’t be the stereotypical IT people
  • 20. Sharing Knowledge Wednesday, June 2, 2010 19
  • 21. Breaking Out Features Wednesday, June 2, 2010 20 Minimal Marketable Feature. Small Stories.
  • 22. Responsibility Wednesday, June 2, 2010 21 Regression Test Assurance
  • 23. How can Craftsmanship Help? Wednesday, June 2, 2010 22
  • 24. Fix the problem at its source. Wednesday, June 2, 2010 23 And what’s the source?
  • 25. Wednesday, June 2, 2010 24 We’ve let
  • 26. Us Wednesday, June 2, 2010 24 We’ve let
  • 27. Fear Wednesday, June 2, 2010 25 stagnate us.
  • 28. “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.” Fear Wednesday, June 2, 2010 25 stagnate us.
  • 29. 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.” Wednesday, June 2, 2010 25 stagnate us.
  • 30. 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.” Wednesday, June 2, 2010 25 stagnate us.
  • 31. “In my company, no code changes can happen without the approval of the Board of Governors for the product involved” Fear Wednesday, June 2, 2010 25 stagnate us.
  • 32. Source: http://www.twistedsister.com/gallery.php Wednesday, June 2, 2010 26 We have to say that we aren’t going to take it
  • 33. Unacceptable Wednesday, June 2, 2010 27 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
  • 34. Passion Wednesday, June 2, 2010 28 And it was this passion which led to a
  • 35. Manifesto Wednesday, June 2, 2010 29 Agile Manifesto outlining four key values for anyone adopting agile methodologies.
  • 36. Individuals and Interactions Wednesday, June 2, 2010 30 over processes and tools
  • 37. Working Software Wednesday, June 2, 2010 31 over comprehensive documentation
  • 38. Customer Collaboration Wednesday, June 2, 2010 32 over contract negotiation
  • 39. Responding to Change Wednesday, June 2, 2010 33 over following a plan. And everything was...
  • 40. Wednesday, June 2, 2010 34 flowers, right?! Right?! No! It was all....
  • 41. Wednesday, June 2, 2010 35 weird and distorted. Project Management seemed to be doing better, but developers were still pumping out garbage.
  • 42. Source:http://gallery.me.com/pew#100134/IMG_0155&bgcolor=black Wednesday, June 2, 2010 36 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.
  • 43. Craftsmanship over Crap Wednesday, June 2, 2010 37 No wait. That’s not it. Let’s try again.
  • 44. Wednesday, June 2, 2010 38 Ah, much better! This statement led to a manifesto focused at the software developers
  • 45. CRAFTSMANSHIP OVER CRAP! Wednesday, June 2, 2010 38 Ah, much better! This statement led to a manifesto focused at the software developers
  • 46. Wednesday, June 2, 2010 39 But the manifesto and the ideals behind it have an unspoken definition. Craftsmanship is about....
  • 47. Responsibility Wednesday, June 2, 2010 40 Whose Responsibility?
  • 48. Wednesday, June 2, 2010 41 YOUR RESPONSIBILITY! (And look! I found a hip bear!). Given that - whose responsibility is it for learning new technologies and techniques?
  • 49. Yours! Wednesday, June 2, 2010 42 Whose Responsibility is it for growing in your profession? (All together now)
  • 50. Yours! Wednesday, June 2, 2010 43 Whose Responsibility is it for teaching others?
  • 51. Yours! Wednesday, June 2, 2010 44 Whose Responsibility is it for making what you build the best it can be?
  • 52. Yours! Wednesday, June 2, 2010 45 Indeed. (Next slide: Craftsmanship==Responsibility)
  • 53. Craftsmanship == Responsibility Wednesday, June 2, 2010 46 So, if craftsmanship is responsibility, whose job is it to foster craftsmanship in your organization?
  • 54. Yours. Wednesday, June 2, 2010 47
  • 55. Wednesday, June 2, 2010 48 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...
  • 56. Wednesday, June 2, 2010 48 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...
  • 57. Fostering Craftsmanship in your Organization Wednesday, June 2, 2010 49
  • 58. a.k.a. Wednesday, June 2, 2010 50
  • 59. Cory’s 5-step Plan to World Domination Wednesday, June 2, 2010 51
  • 60. Cory’s 5-step Plan to Fostering Craftsmanship Wednesday, June 2, 2010 52
  • 61. Step 1: Start with you Wednesday, June 2, 2010 53 Katas. Learn them. Do them. Love them.
  • 62. Wednesday, June 2, 2010 54 Katas. Learn them. Do them. Love them.
  • 63. Step 2: Involve your team Wednesday, June 2, 2010 55 Brown Bags. Show people what you’ve been working on.
  • 64. Step 3: Get people talking Wednesday, June 2, 2010 56 Book Clubs. Doesn’t matter the topic - just get people meeting and talking. Do Food.
  • 65. Wednesday, June 2, 2010 57 Picture from Hashrocket
  • 66. Step 4: Get people learning (and teaching) Wednesday, June 2, 2010 58 Apprenticeships. Ask people to mentor you, and offer the same to those with you.
  • 67. Wednesday, June 2, 2010 59 Dave and Adewale’s Book
  • 68. Step 5: Make it Clear Wednesday, June 2, 2010 60 Profit! Or formalize the program. Create a training path for people to follow.
  • 69. This is Jason Gorman’s. Don’t blame me. http://qconlondon.com/london-2010/file?path=%2Fqcon-london-2010%2Fslides %2FJasonGorman_BeyondMastersApprenticesAScalablePeerLedModelForBuildingGoodHabitsInLargeDiverseDevelopmentTeams.pdf Wednesday, June 2, 2010 61
  • 70. Reference Application Wednesday, June 2, 2010 62 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
  • 71. Learning Models Wednesday, June 2, 2010 63 Thankfully, not every one. Just a specific one. It’s called the Dreyfus Model of Skills Acquisition
  • 72. Dreyfus Model of Skills Acquisition Level Description Needs to be told exactly what to do. Novice No context to work from Has more context, but needs Advanced Beginner rigid guidelines Questions reasoning behind the tasks Competent and can see consequences Still relies on rules, but can Proficient separate what’s important Works mainly on intuition, Expert except when problems occur Wednesday, June 2, 2010 64 Using this model, we can create a path for team members to go from Novice to Expert using Katas. How?
  • 73. Level 1: Novice Wednesday, June 2, 2010 65 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
  • 74. Level 2: Advanced Beginner Wednesday, June 2, 2010 66 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
  • 75. Level 3: Competent Wednesday, June 2, 2010 67 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.
  • 76. Level 4: Proficient Wednesday, June 2, 2010 68 At proficiency, developers should be able to tackle a Kata from scratch, including set-up of any necessary tools (RSpec, Cucumber, FitNesse, NUnit).
  • 77. Level 5: Expert Wednesday, June 2, 2010 69 Finally, as they reach an expert stage, they should be able to develop their own katas for contribution back to the team.
  • 78. But Remember Wednesday, June 2, 2010 70
  • 79. Individuals and Interactions Wednesday, June 2, 2010 71
  • 80. over Wednesday, June 2, 2010 72
  • 81. Processes and Tools Wednesday, June 2, 2010 73 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.
  • 82. Summary Wednesday, June 2, 2010 74 So, to summarize
  • 83. Wednesday, June 2, 2010 75 Don’t let fear
  • 84. Wednesday, June 2, 2010 76 Stagnate you
  • 85. Wednesday, June 2, 2010 77 and keep you from being happy
  • 86. Wednesday, June 2, 2010 78 Because only you
  • 87. Wednesday, June 2, 2010 79 can raise the bar
  • 88. Wednesday, June 2, 2010 80 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.