SlideShare una empresa de Scribd logo
1 de 112
Descargar para leer sin conexión
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.
* https://www.google.com/search?q=Phenomenon
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
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
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)
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, and I can tell you I did
not have C++ in mind.”
Alan Kay 1997 OOPSLA Keynote 

“The Computer Revolution Hasn’t Happened Yet”

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

* 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.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
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?InternalAndExternalQuality
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
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)
Scenario(s)
Dartboards & Darts
• Every project

• Identify dartboard(s)

• Identify interested dart player(s)

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

• Identify dartboard(s)

• Identify interested dart player(s)

• Build capable dart(s)
Scenario(s)
Persona(s)
Software Asset(s)
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)
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)
Business Facing Success
Business Facing Success
• Need a Subject Matter Expert (SME) to identify
potentially viable dartboards

• a dedicated SME or 

• someone dedicated to becoming a SME
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
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
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 => 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
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
• For context
TDD, Refactoring, Pairing +
Collective Code Ownership
• Achieve validated quality code
• Shared learning
• In context
• For context
• Anyone(?) can keep it going forward
with quality
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. OR
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.
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?
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
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
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
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
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/
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/
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/
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
Learning in Context?
Learning in Context?
“The Religious Tradesman”

- Richard Steele	

Excellent thoughts on business	

Section on apprenticeship
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
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
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
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
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
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
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
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?
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
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
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
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 how do we keep it at that level
when others are on the project?
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”
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 rise to “Highest Skill Level” on the
project
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
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
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
_____?”
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 Cockburn,“Agile Software Development”,Addison-Wesley 2002
Effective Communication?*
Github,
StackOverflow
Podcast
Destroy All Software,
RailsCasts, ...
* Graph taken from 

Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
Books, Blogs
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
Pair
Programming
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing
Pair
Programming
Code outLoud!
Effective Skills Transfer
Async Pull
Requests
Synchronous
Pull Requests
Pair Refactoring
or Rewriting
Opportunistic
Pairing
Pair
Programming
Code outLoud!
Individual
Code
Deployed
Acceptable Methods
• Pair Programming

• Opportunistic Pairing

• Pair Refactoring/Rewriting

• Synchronous pull requests

• Asynchronous pull requests
Hot
High Skill
Transfer
Cold Low Skill
Transfer
Exceptions?
Exceptions?
• Short answer is “NEVER”
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
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)
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 raise the bar, not to win an
argument

• Thick skin

• Tender heart
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
Are You an Aspiring
Software Craftsman?
• Our Craftsmanship Academy is one way

• next entrance in June

• Immersion Phase - 14-16 weeks -
foundation laid and reinforced

• Apprenticeship follows

• But…
* http://craftsmanshipacademy.com
Take Charge
• You have work to do

• Do it well

• No one is stopping you

• Ask your boss, “do you
want us to get better at
software development, or
just get better at stand-up
meetings”?
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 - 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

Más contenido relacionado

Similar a Software Craftsmanship: Agile Is Not Enough

The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Adrian Carr
 
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...Acquia
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech TalentRecruitingDaily.com LLC
 
Partner Masterclass - Digital Leadership
Partner Masterclass - Digital LeadershipPartner Masterclass - Digital Leadership
Partner Masterclass - Digital LeadershipSuperfast Business
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev opsAgile Montréal
 
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismPractical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismBen Johnson
 
Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017Steven Herod
 
Anatomy of a (un)fundable startup
Anatomy of a (un)fundable startupAnatomy of a (un)fundable startup
Anatomy of a (un)fundable startupVenture Hacks
 
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...Dylan Wilbanks
 
Cybercrime and the Developer Java2Days 2016 Sofia
Cybercrime and the Developer Java2Days 2016 SofiaCybercrime and the Developer Java2Days 2016 Sofia
Cybercrime and the Developer Java2Days 2016 SofiaSteve Poole
 
Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Innovator SG
 
Continuous Acceleration with a Software Supply Chain Approach
Continuous Acceleration with a Software Supply Chain ApproachContinuous Acceleration with a Software Supply Chain Approach
Continuous Acceleration with a Software Supply Chain ApproachSonatype
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the toolingBram Vogelaar
 
Global impact of OpenStack
Global impact of OpenStack   Global impact of OpenStack
Global impact of OpenStack openstackindia
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadBen Limmer
 
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019Peter Gfader
 

Similar a Software Craftsmanship: Agile Is Not Enough (20)

The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
DevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable ProductsDevDay 2013 - Building Startups and Minimum Viable Products
DevDay 2013 - Building Startups and Minimum Viable Products
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012
 
Journey to Next Level of Agility- Charkrvarthy
Journey to Next Level of Agility- CharkrvarthyJourney to Next Level of Agility- Charkrvarthy
Journey to Next Level of Agility- Charkrvarthy
 
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...
Story of Multnomah County: Migrating from Vignette and Building a Drupal Ecos...
 
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
Master Technical Recruiting Workshop:  How to Recruit Top Tech TalentMaster Technical Recruiting Workshop:  How to Recruit Top Tech Talent
Master Technical Recruiting Workshop: How to Recruit Top Tech Talent
 
Partner Masterclass - Digital Leadership
Partner Masterclass - Digital LeadershipPartner Masterclass - Digital Leadership
Partner Masterclass - Digital Leadership
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security EvangelismPractical Cyber: Lessons from 500,000 Miles of Security Evangelism
Practical Cyber: Lessons from 500,000 Miles of Security Evangelism
 
Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017
 
Anatomy of a (un)fundable startup
Anatomy of a (un)fundable startupAnatomy of a (un)fundable startup
Anatomy of a (un)fundable startup
 
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...
Twin Redheaded Stepchildren of a Different Mother: The Usability of Accessibi...
 
Cybercrime and the Developer Java2Days 2016 Sofia
Cybercrime and the Developer Java2Days 2016 SofiaCybercrime and the Developer Java2Days 2016 Sofia
Cybercrime and the Developer Java2Days 2016 Sofia
 
Pitch your idea like a rockstar!
Pitch your idea like a rockstar!Pitch your idea like a rockstar!
Pitch your idea like a rockstar!
 
Continuous Acceleration with a Software Supply Chain Approach
Continuous Acceleration with a Software Supply Chain ApproachContinuous Acceleration with a Software Supply Chain Approach
Continuous Acceleration with a Software Supply Chain Approach
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the tooling
 
Global impact of OpenStack
Global impact of OpenStack   Global impact of OpenStack
Global impact of OpenStack
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
 
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019
You Can't Be Agile If Your Testing Practices Suck - Vilnius October 2019
 

Último

What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 

Último (20)

What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 

Software Craftsmanship: Agile Is Not Enough

  • 1. Software Craftsmanship:
 Agile is Not Enough Ken Auer @kauerrolemodel ken.auer@rolemodelsoftware.com
  • 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. 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. 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. 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)
  • 7. Object-Oriented Manifesto Everything is an Object Send messages to them
  • 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. 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. 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

  • 17. * http://manifesto.softwarecraftsmanship.org GitHub & StackOverflow Participation ≠ Well-crafted Software
  • 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. Two Points of Quality* * http://c2.com/cgi/wiki?InternalAndExternalQuality
  • 21. Two Points of Quality* • External (Business/Customer facing) • Correctness • Effectiveness * http://c2.com/cgi/wiki?InternalAndExternalQuality
  • 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
  • 24. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s)
  • 25. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) Scenario(s)
  • 26. Dartboards & Darts • Every project • Identify dartboard(s) • Identify interested dart player(s) • Build capable dart(s) Scenario(s) Persona(s)
  • 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. 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. 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)
  • 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. 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. 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
  • 35. Internal Facing Success • We are the SMEs of Quality Code
  • 36. Internal Facing Success • We are the SMEs of Quality Code • We are the Users
  • 37. Internal Facing Success • We are the SMEs of Quality Code • We are the Users • We need a model that works
  • 41. Continuous Refinement of... • Requirements • Design • Plan • People • Results Potential Value! ?
  • 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. TDD, Refactoring, Pairing + Collective Code Ownership
  • 44. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code
  • 45. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning
  • 46. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning • In context
  • 47. TDD, Refactoring, Pairing + Collective Code Ownership • Achieve validated quality code • Shared learning • In context • For context
  • 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
  • 50. Reality of Internal Quality • Easy for anyone to slip in the name of expediency
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 63. Learning in Context? “The Religious Tradesman”
 - Richard Steele Excellent thoughts on business Section on apprenticeship
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 76. RoleModel Internal Quality Goals • Proficient level code is the minimum acceptable
  • 77. RoleModel Internal Quality Goals • Proficient level code is the minimum acceptable • Craftsman level code is the goal
  • 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. 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. Two Sets of Eyes
  • 81. Two Sets of Eyes • In a project
  • 82. Two Sets of Eyes • In a project • Craftsmanship level will rarely be achieved without a Craftsman
  • 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. 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. 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. 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. Effective Communication?* * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
  • 88. Effective Communication?* Github, StackOverflow Podcast Destroy All Software, RailsCasts, ... * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002
  • 89. Effective Communication?* Github, StackOverflow Podcast Destroy All Software, RailsCasts, ... * Graph taken from 
 Alistair Cockburn,“Agile Software Development”,Addison-Wesley 2002 Books, Blogs
  • 92. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests
  • 93. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting
  • 94. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing
  • 95. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming
  • 96. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming Code outLoud!
  • 97. Effective Skills Transfer Async Pull Requests Synchronous Pull Requests Pair Refactoring or Rewriting Opportunistic Pairing Pair Programming Code outLoud! Individual Code Deployed
  • 98. Acceptable Methods • Pair Programming • Opportunistic Pairing • Pair Refactoring/Rewriting • Synchronous pull requests • Asynchronous pull requests Hot High Skill Transfer Cold Low Skill Transfer
  • 100. Exceptions? • Short answer is “NEVER”
  • 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. 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. Other Rules of Thumb
  • 104. Other Rules of Thumb • Don’t use the same reviewer all the time
  • 105. Other Rules of Thumb • Don’t use the same reviewer all the time • Cross projects when possible/ reasonable
  • 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. 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. Are You an Aspiring Software Craftsman? • Our Craftsmanship Academy is one way • next entrance in June • Immersion Phase - 14-16 weeks - foundation laid and reinforced • Apprenticeship follows • But… * http://craftsmanshipacademy.com
  • 109. Take Charge • You have work to do • Do it well • No one is stopping you • Ask your boss, “do you want us to get better at software development, or just get better at stand-up meetings”?
  • 112. 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