Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Software Craftsmanship:

Agile is Not Enough

Ken Auer

@kauerrolemodel

ken.auer@rolemodelsoftware.com
Phenomenon*
1.a fact or situation that is observed to
exist or happen, esp. one whose cause
or explanation is in question....
Community
Participation*
1.Community Participation is a
progressive political party in Colombia.
At the last legislative e...
Craftsman*
1.a person who is skilled in a particular
craft.

synonyms: artisan, artist, skilled worker;
expert, master
* h...
Wisdom*
• “When there are many words,
transgression is unavoidable, But he who
restrains his lips is wise.” (Proverbs 10:1...
Software Craftsmen
Ship!
With Quality
Object-Oriented
Manifesto
Everything is an Object

Send messages to them
Object-Oriented
Manifesto
Everything is an Object

Send messages to them
“Actually I made up the term 

object-oriented, a...
Patterns Manifesto
“...to use patterns in a generative way in the sense
that Christopher Alexander uses patterns for
urban...
Patterns Manifesto
“...to use patterns in a generative way in the sense
that Christopher Alexander uses patterns for
urban...
* http://agilemanifesto.org/
* http://manifesto.softwarecraftsmanship.org
* http://manifesto.softwarecraftsmanship.org
* http://manifesto.softwarecraftsmanship.org
* http://manifesto.softwarecraftsmanship.org
* http://manifesto.softwarecraftsmanship.org
* http://manifesto.softwarecraftsmanship.org
GitHub & StackOverflow
Participation
≠
Well-crafted Software
* http://notonlyoo.org/
No More Manifestos*
“I believe this new face of agility has three simple
tenets, and doesn't need a manifesto at all:	

1....
Two Points of Quality*
* http://c2.com/cgi/wiki?InternalAndExternalQuality
Two Points of Quality*
• External (Business/Customer facing)

• Correctness

• Effectiveness
* http://c2.com/cgi/wiki?Inter...
Two Points of Quality*
• External (Business/Customer facing)

• Correctness

• Effectiveness
• Internal (Technologist facin...
Dartboards & Darts
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)...
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)...
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)...
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)...
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)...
Business Facing Success
Business Facing Success
• Need a Subject Matter Expert (SME) to identify
potentially viable dartboards

• a dedicated SME ...
Business Facing Success
• Need a Subject Matter Expert (SME) to identify
potentially viable dartboards

• a dedicated SME ...
Business Facing Success
• Need a Subject Matter Expert (SME) to identify
potentially viable dartboards

• a dedicated SME ...
Internal Facing Success
Internal Facing Success
• We are the SMEs of Quality Code
Internal Facing Success
• We are the SMEs of Quality Code
• We are the Users
Internal Facing Success
• We are the SMEs of Quality Code
• We are the Users
• We need a model that works
Subject Matter
Experts?
What is an Expert?
* http://agilemanifesto.org/
* http://agilemanifesto.org/
Continuous Refinement of...
• Requirements

• Design

• Plan

• People

• Results
Potential Value!
?
eXtreme Programming
• code reviews => pair programming

• testing => 100% unit, tracking acceptance

• design => continuou...
TDD, Refactoring, Pairing +
Collective Code Ownership
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
• Shared learning
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
• Shared learning
• In context
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
• Shared learning
• In context
• Fo...
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
• Shared learning
• In context
• Fo...
Reality of Internal Quality
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Reality of Internal Quality
• Easy for anyone to slip in the name of expediency
• Make it run. Make it right. Make it fast...
Dreyfus Model of Skill Acquisition*

Rules Detached
Observer
Considers

Everything
Intuition
Relevant

Focus
Part of

Syst...
Dreyfus Model of Skill Acquisition*

Rules Detached
Observer
Considers

Everything
Intuition
Relevant

Focus
Part of

Syst...
Knowledge vs. Skill*
“There’s much more to mastering a skill than
just acquiring more knowledge. Just like adults
are not ...
To a Novice, an Advanced
Beginner looks like an Expert
“Have cheap people do easy things under the CLOSE
supervision of so...
Learning in Context?
Learning in Context?
“The Religious Tradesman”

- Richard Steele	

Excellent thoughts on business	

Section on apprentices...
Learning in Context?
“Situated Learning: 

Legitimate Peripheral Participation”

- Jean Lave & Etienne Wenger	

People lea...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Cost of Advanced
Beginners
Novice
Advanced Beginner
Competent
Proficient
Expert
Clueless
Mostly “right”
Make it run... rig...
Getting Past Advanced
Beginner
• “Proficient practitioners can
take full advantage of the
reflection and feedback that is
...
High Performance Team in
Custom Software Development
Level Description
Dreyfus Model
plus experience
Master
Craftsman
Expe...
High Performance Team in
Custom Software Development
Level Description
Dreyfus Model
plus experience
Master
Craftsman
Expe...
High Performance Team in
Custom Software Development
Level Description
Dreyfus Model
plus experience
Master
Craftsman
Expe...
RoleModel
Internal Quality Goals
RoleModel
Internal Quality Goals
• Proficient level code is the minimum
acceptable
RoleModel
Internal Quality Goals
• Proficient level code is the minimum
acceptable
• Craftsman level code is the goal
RoleModel
Internal Quality Goals
• Proficient level code is the minimum
acceptable
• Craftsman level code is the goal
• But...
Two Sets of Eyes
on all production code
The RoleModel Standard for Internal Quality...

A reminder that we care about “Mak...
Two Sets of Eyes
Two Sets of Eyes
• In a project
Two Sets of Eyes
• In a project
• Craftsmanship level will rarely be achieved without a
Craftsman
Two Sets of Eyes
• In a project
• Craftsmanship level will rarely be achieved without a
Craftsman
• Typically, will only r...
Two Sets of Eyes
• In a project
• Craftsmanship level will rarely be achieved without a
Craftsman
• Typically, will only r...
Two Sets of Eyes
• In a project
• Craftsmanship level will rarely be achieved without a
Craftsman
• Typically, will only r...
Two Sets of Eyes
• In a project
• Craftsmanship level will rarely be achieved without a
Craftsman
• Typically, will only r...
Effective Communication?*
* Graph taken from 

Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
Effective Communication?*
Github,
StackOverflow
Podcast
Destroy All Software,
RailsCasts, ...
* Graph taken from 

Alistair ...
Effective Communication?*
Github,
StackOverflow
Podcast
Destroy All Software,
RailsCasts, ...
* Graph taken from 

Alistair ...
Effective Skills Transfer
Effective Skills Transfer
Async Pull
Requests
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing...
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing...
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing...
Acceptable Methods
• Pair Programming

• Opportunistic Pairing

• Pair Refactoring/Rewriting

• Synchronous pull requests
...
Exceptions?
Exceptions?
• Short answer is “NEVER”
Exceptions?
• Short answer is “NEVER”
• Real answer is “Rarely” and
“Temporarily”

• Fixing a production problem at night
...
What Do We Look For?
• Intention Revealing names

• DRY code

• Single (or appropriate)
Responsibility

• Least amount of ...
Other Rules of Thumb
Other Rules of Thumb
• Don’t use the same reviewer all the time
Other Rules of Thumb
• Don’t use the same reviewer all the time
• Cross projects when possible/
reasonable
Other Rules of Thumb
• Don’t use the same reviewer all the time
• Cross projects when possible/
reasonable
• Goal is to ra...
Humble Yourself
• You are probably somewhere between a Novice and
Proficient in most things you do

• Find someone better (...
Software Craftsmen
Ship!
With Quality
Software Craftsmen
Ship!
With Quality
Raise The Bar!
Dreyfus Model
References
• http://en.wikipedia.org/wiki/
Dreyfus_model_of_skill_acquisition 

• http://1.usa.gov/1iOLuWC -...
Upcoming SlideShare
Loading in …5
×

Software Craftsmanship: Agile is Not Enough

862 views

Published on

Some people seem to think that following an Agile process will get you good software. But, the reality is that Software Craftsmanship is found in the work produced, not in the process followed. The Agile Manifesto hints at this, but many have missed it. How do you get that quality up there, consistently keep it there, and keep raising the bar? Through a combination of some discussion on the nature of Skills Acquisition, and an analysis of common practices in software development (from Tests to Pull Requests to Pair Programming), we’ll paint a picture of how to become a true expert that you can’t get from “Agile alone”.

Published in: Software, Technology

Software Craftsmanship: Agile is Not Enough

  1. 1. Software Craftsmanship:
 Agile is Not Enough Ken Auer @kauerrolemodel ken.auer@rolemodelsoftware.com
  2. 2. Phenomenon* 1.a fact or situation that is observed to exist or happen, esp. one whose cause or explanation is in question. * https://www.google.com/search?q=Phenomenon
  3. 3. Community Participation* 1.Community Participation is a progressive political party in Colombia. At the last legislative elections, 10 March 2002, the party won, as one of the many small parties, parliamentary representation. In the election of 2006, the party won no seats. * https://www.google.com/search?q=Community%20participation%20definition
  4. 4. Craftsman* 1.a person who is skilled in a particular craft.
 synonyms: artisan, artist, skilled worker; expert, master * https://www.google.com/search?q=Craftsman+definition
  5. 5. Wisdom* • “When there are many words, transgression is unavoidable, But he who restrains his lips is wise.” (Proverbs 10:19) • “For the dream comes through much effort and the voice of a fool through many words.” (Ecclesiastes 5:3) * All Scripture quotations taken from the New American Standard Bible®,
 Copyright © 1960, 1962, 1963, 1968, 1971, 1972, 1973, 1975, 1977, 1995 by The Lockman Foundation. Used by permission. (http://www.Lockman.org)
  6. 6. Software Craftsmen Ship! With Quality
  7. 7. Object-Oriented Manifesto Everything is an Object Send messages to them
  8. 8. Object-Oriented Manifesto Everything is an Object Send messages to them “Actually I made up the term 
 object-oriented, and I can tell you I did not have C++ in mind.” Alan Kay 1997 OOPSLA Keynote 
 “The Computer Revolution Hasn’t Happened Yet”

  9. 9. Patterns Manifesto “...to use patterns in a generative way in the sense that Christopher Alexander uses patterns for urban planning and building architecture”* * http://hillside.net/home/history
  10. 10. Patterns Manifesto “...to use patterns in a generative way in the sense that Christopher Alexander uses patterns for urban planning and building architecture”* * http://hillside.net/home/history “The Accused, by distilling hard-won design expertise into patterns, have encouraged novices to act like experts.” OOPSLA 1999 Show Trial of the Gang of Four

  11. 11. * http://agilemanifesto.org/
  12. 12. * http://manifesto.softwarecraftsmanship.org
  13. 13. * http://manifesto.softwarecraftsmanship.org
  14. 14. * http://manifesto.softwarecraftsmanship.org
  15. 15. * http://manifesto.softwarecraftsmanship.org
  16. 16. * http://manifesto.softwarecraftsmanship.org
  17. 17. * http://manifesto.softwarecraftsmanship.org GitHub & StackOverflow Participation ≠ Well-crafted Software
  18. 18. * http://notonlyoo.org/
  19. 19. No More Manifestos* “I believe this new face of agility has three simple tenets, and doesn't need a manifesto at all: 1.Ship as often as possible. 2.Keep quality high. 3.Solicit and respond to feedback.” - David Starr, “So Long and Thanks for the All the Manifestos”,Visual Studio Magazine 16 June 2013 * http://visualstudiomagazine.com/articles/2013/06/01/so-long-and-thanks-for- the-all-the-manifestos.aspx
  20. 20. Two Points of Quality* * http://c2.com/cgi/wiki?InternalAndExternalQuality
  21. 21. Two Points of Quality* • External (Business/Customer facing) • Correctness • Effectiveness * http://c2.com/cgi/wiki?InternalAndExternalQuality
  22. 22. Two Points of Quality* • External (Business/Customer facing) • Correctness • Effectiveness • Internal (Technologist facing) • Software Asset leverage • Customer benefit: 
 Maintainable/Extendable... cost effectiveness * http://c2.com/cgi/wiki?InternalAndExternalQuality
  23. 23. Dartboards & Darts
  24. 24. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s)
  25. 25. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) Scenario(s)
  26. 26. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) Scenario(s) Persona(s)
  27. 27. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) Scenario(s) Persona(s) Software Asset(s)
  28. 28. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) • Validate and repeat until you have a winning combination... Scenario(s) Persona(s) Software Asset(s)
  29. 29. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) • Validate and repeat until you have a winning combination... • ...or the money runs out Scenario(s) Persona(s) Software Asset(s)
  30. 30. Business Facing Success
  31. 31. Business Facing Success • Need a Subject Matter Expert (SME) to identify potentially viable dartboards • a dedicated SME or • someone dedicated to becoming a SME
  32. 32. Business Facing Success • Need a Subject Matter Expert (SME) to identify potentially viable dartboards • a dedicated SME or • someone dedicated to becoming a SME • Need User Feedback • access to Users (various roles/personas) • access to Potential Users
  33. 33. Business Facing Success • Need a Subject Matter Expert (SME) to identify potentially viable dartboards • a dedicated SME or • someone dedicated to becoming a SME • Need User Feedback • access to Users (various roles/personas) • access to Potential Users • A business model that works with the above
  34. 34. Internal Facing Success
  35. 35. Internal Facing Success • We are the SMEs of Quality Code
  36. 36. Internal Facing Success • We are the SMEs of Quality Code • We are the Users
  37. 37. Internal Facing Success • We are the SMEs of Quality Code • We are the Users • We need a model that works
  38. 38. Subject Matter Experts? What is an Expert?
  39. 39. * http://agilemanifesto.org/
  40. 40. * http://agilemanifesto.org/
  41. 41. Continuous Refinement of... • Requirements • Design • Plan • People • Results Potential Value! ?
  42. 42. eXtreme Programming • code reviews => pair programming • testing => 100% unit, tracking acceptance • design => continuous refactoring • simplicity => TSTTCPW, YAGNI, test-driven • customer involvement => they drive • integration => daily or more often • short iterations => 1-4 week release cycle • risk management => collective code ownership
  43. 43. TDD, Refactoring, Pairing + Collective Code Ownership
  44. 44. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code
  45. 45. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning
  46. 46. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning • In context
  47. 47. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning • In context • For context
  48. 48. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning • In context • For context • Anyone(?) can keep it going forward with quality
  49. 49. Reality of Internal Quality
  50. 50. Reality of Internal Quality • Easy for anyone to slip in the name of expediency
  51. 51. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR
  52. 52. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it.
  53. 53. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it. • Make it right?
  54. 54. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it. • Make it right? • Limited by expertise of most skilled participant
  55. 55. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it. • Make it right? • Limited by expertise of most skilled participant • Can increase by collaboration
  56. 56. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it. • Make it right? • Limited by expertise of most skilled participant • Can increase by collaboration • Two novices don’t produce the quality of experts by pairing
  57. 57. Reality of Internal Quality • Easy for anyone to slip in the name of expediency • Make it run. Make it right. Make it fast. OR • Make it run... fast enough?… Ship it. • Make it right? • Limited by expertise of most skilled participant • Can increase by collaboration • Two novices don’t produce the quality of experts by pairing
  58. 58. Dreyfus Model of Skill Acquisition*
 Rules Detached Observer Considers
 Everything Intuition Relevant
 Focus Part of
 System Novice Advanced Beginner Competent Proficient Expert * http://litemind.com/expert-roadmap/
  59. 59. Dreyfus Model of Skill Acquisition*
 Rules Detached Observer Considers
 Everything Intuition Relevant
 Focus Part of
 System Novice Advanced Beginner Competent Proficient Expert Context Matters * http://litemind.com/expert-roadmap/
  60. 60. Knowledge vs. Skill* “There’s much more to mastering a skill than just acquiring more knowledge. Just like adults are not simply bigger children, experts are not only smarter, more knowledgeable or faster than novices.The differences can be found at a more fundamental level, such as in how they perceive the world and approach problems.” - Luciano Passuello * http://litemind.com/expert-roadmap/
  61. 61. To a Novice, an Advanced Beginner looks like an Expert “Have cheap people do easy things under the CLOSE supervision of someone who knows the difference” - Me, 2010 SCNA talk “Lean Craftsmanship vs. Corporate Craftsmanship” “Have advanced beginners do tasks for which the rules they know are appropriate to the context and check their work. Let them watch, and have discussions with, someone who has the appropriate skills for the task when the advanced beginner does not” - Me,Today, this talk
  62. 62. Learning in Context?
  63. 63. Learning in Context? “The Religious Tradesman”
 - Richard Steele Excellent thoughts on business Section on apprenticeship
  64. 64. Learning in Context? “Situated Learning: 
 Legitimate Peripheral Participation”
 - Jean Lave & Etienne Wenger People learn by being there Not out of sight of experts work “The Religious Tradesman”
 - Richard Steele Excellent thoughts on business Section on apprenticeship
  65. 65. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages
  66. 66. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages Follow rules on well-defined tasks
  67. 67. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages Follow rules on well-defined tasks Complete similar tasks following rules
  68. 68. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages Follow rules on well-defined tasks Complete similar tasks following rules Have conceptual models in which to operate
  69. 69. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages Follow rules on well-defined tasks Complete similar tasks following rules Have conceptual models in which to operate Have conceptual framework in which to adjust
  70. 70. Cost of Advanced Beginners Novice Advanced Beginner Competent Proficient Expert Clueless Mostly “right” Make it run... right? All of us are Novices at some things... 
 Some may be experts in others... Usually somewhere in between Tools TechniquesSkills Domains Languages Follow rules on well-defined tasks Complete similar tasks following rules Have conceptual models in which to operate Have conceptual framework in which to adjust Intuitively identify and solve problems... it’s simple
  71. 71. Getting Past Advanced Beginner • “Proficient practitioners can take full advantage of the reflection and feedback that is core to agile methods.” – (“Pragmatic Thinking & Learning”, Andrew Hunt, p.35)
 • But how do you get there? – Individual exercise? – Team work?
  72. 72. High Performance Team in Custom Software Development Level Description Dreyfus Model plus experience Master Craftsman Expert >25,000 hours including >10,000 in leadership Sr. Craftsman Expert/Proficient, >15,000 hours including >3,000 in leadership Craftsman Proficient, typically >10,000 hours plus proven leadership skills
  73. 73. High Performance Team in Custom Software Development Level Description Dreyfus Model plus experience Master Craftsman Expert >25,000 hours including >10,000 in leadership Sr. Craftsman Expert/Proficient, >15,000 hours including >3,000 in leadership Craftsman Proficient, typically >10,000 hours plus proven leadership skills Level Description Dreyfus Model plus experience Sr. Developer /Designer Competent to Proficient, >8,000 hours OR >6,000 hours plus leadership skills Developer /Designer Competent, >5000 hours Jr. Developer /Designer Competent w/ some holes in experience, >2000 hours
  74. 74. High Performance Team in Custom Software Development Level Description Dreyfus Model plus experience Master Craftsman Expert >25,000 hours including >10,000 in leadership Sr. Craftsman Expert/Proficient, >15,000 hours including >3,000 in leadership Craftsman Proficient, typically >10,000 hours plus proven leadership skills Level Description Dreyfus Model plus experience Sr. Developer /Designer Competent to Proficient, >8,000 hours OR >6,000 hours plus leadership skills Developer /Designer Competent, >5000 hours Jr. Developer /Designer Competent w/ some holes in experience, >2000 hours Level Description Dreyfus Model plus experience Sr. Resident Developer/ Designer Advanced Beginner with Competence in areas, Craftsmanship Academy >1500 hours Resident Developer/ Designer Advanced Beginner with Competence in areas, Craftsmanship Academy >1000 hours Apprentice Developer/ Designer Advanced Beginner, Craftsmanship Academy >500 hours Novice Developer/ Designer Novice, in Craftsmanship Academy, <500 hours
  75. 75. RoleModel Internal Quality Goals
  76. 76. RoleModel Internal Quality Goals • Proficient level code is the minimum acceptable
  77. 77. RoleModel Internal Quality Goals • Proficient level code is the minimum acceptable • Craftsman level code is the goal
  78. 78. RoleModel Internal Quality Goals • Proficient level code is the minimum acceptable • Craftsman level code is the goal • But how do we keep it at that level when others are on the project?
  79. 79. Two Sets of Eyes on all production code The RoleModel Standard for Internal Quality... A reminder that we care about “Make it Right” AND “Helping Others Learn the Craft”
  80. 80. Two Sets of Eyes
  81. 81. Two Sets of Eyes • In a project
  82. 82. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman
  83. 83. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman • Typically, will only rise to “Highest Skill Level” on the project
  84. 84. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman • Typically, will only rise to “Highest Skill Level” on the project • Across projects
  85. 85. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman • Typically, will only rise to “Highest Skill Level” on the project • Across projects • Can benefit from Higher Skill Level input
  86. 86. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman • Typically, will only rise to “Highest Skill Level” on the project • Across projects • Can benefit from Higher Skill Level input • “How did/would you do _______ in the context of _____?”
  87. 87. Effective Communication?* * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
  88. 88. Effective Communication?* Github, StackOverflow Podcast Destroy All Software, RailsCasts, ... * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
  89. 89. Effective Communication?* Github, StackOverflow Podcast Destroy All Software, RailsCasts, ... * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002 Books, Blogs
  90. 90. Effective Skills Transfer
  91. 91. Effective Skills Transfer Async Pull Requests
  92. 92. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests
  93. 93. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting
  94. 94. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing
  95. 95. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming
  96. 96. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming Code outLoud!
  97. 97. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming Code outLoud! Individual Code Deployed
  98. 98. Acceptable Methods • Pair Programming • Opportunistic Pairing • Pair Refactoring/Rewriting • Synchronous pull requests • Asynchronous pull requests Hot High Skill Transfer Cold Low Skill Transfer
  99. 99. Exceptions?
  100. 100. Exceptions? • Short answer is “NEVER”
  101. 101. Exceptions? • Short answer is “NEVER” • Real answer is “Rarely” and “Temporarily” • Fixing a production problem at night • Craftsman working by himself on least complex code • Prototype for demo
  102. 102. What Do We Look For? • Intention Revealing names • DRY code • Single (or appropriate) Responsibility • Least amount of “state” possible • Tests (well-factored with reasonable edge cases) • Simple abstractions • Appropriate use of patterns • Consistent, readable structure • Good OO practices • instances vs. globals • appropriate composition and inheritance • Follows appropriate idioms • Appropriate use of 3rd party code (assets are liabilities)
  103. 103. Other Rules of Thumb
  104. 104. Other Rules of Thumb • Don’t use the same reviewer all the time
  105. 105. Other Rules of Thumb • Don’t use the same reviewer all the time • Cross projects when possible/ reasonable
  106. 106. Other Rules of Thumb • Don’t use the same reviewer all the time • Cross projects when possible/ reasonable • Goal is to raise the bar, not to win an argument • Thick skin • Tender heart
  107. 107. Humble Yourself • You are probably somewhere between a Novice and Proficient in most things you do • Find someone better (or potentially better) than you • Find someone who can learn from you • If you are an expert, find something else to do that takes you out of your comfortable context(s) • Don’t stop reading, but seek more collaboration • If you work alone, collaborate more often • Encourage others to raise the bar
  108. 108. Software Craftsmen Ship! With Quality
  109. 109. Software Craftsmen Ship! With Quality Raise The Bar!
  110. 110. Dreyfus Model References • http://en.wikipedia.org/wiki/ Dreyfus_model_of_skill_acquisition • http://1.usa.gov/1iOLuWC - Dreyfus, Stuart E.; Dreyfus, Hubert L. (February 1980), A Five-Stage Model of the Mental Activities Involved in Directed Skill Acquisition • http://bit.ly/1fU3aLn - Benner, Patricia (2004), Using the Dreyfus Model of Skill Acquisition to Describe and Interpret Skill Acquisition and Clinical Judgment in Nursing Practice and Education

×