Code Craftsmanship

Continuous attention to technical excellence 
and good design enhances agility.

Being fortunate enough to have worked in several high performance teams (all of which were practicing Extreme Programming), I find myself ever searching to recreate this nirvana of clean code and self-organization. This was a big part of why I created FAST Agile. 
While Extreme Programming has fell out of favor (in the USA at least), much of it still lives on in different ways. The Code Craftsmanship movement is one of these and embodies the essence of the clean coding portion of Extreme Programming. As one of the goals of FAST is high performance, I have included Code Craftsmanship in the values and practices of FAST Agile and is in keeping with the agile principle of Technical Excellence.

What is Code Crafting?

So what do we mean by code craftsmanship / crafting? At a minimum you will be practicing :
  • The Four Rules of Simple Design
  • Merciless Refactoring
  • Test Driven Development
  • Pair Programming / Mob Programming
  • Continuous Integration (Check in little and often)
  • Team Coding Standards
  • Collective Code Ownership
  • Agile Testing (Pyramid)

Code Crafters Continue to Perfect Their Art

In a FAST organization that values Code Craftsmanship, I would expect activities, conversations and support for developers to continue their growth in their craft. What might this look like?

  • Lunches provided for any groups facilitating brown bag sessions
  • Book clubs where groups pick a book and meet on cadence to discuss a chapter e.g. Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
  • A library of books available to the tribe
  • An active WIKI that the tribe maintain
  • A training budget for coding related conferences
  • An internal one or two day conference held once or twice a year (using Open Space Technology perhaps?) on code craftsmanship
  • Code Retreats
  • Coding Kata groups/exercises
  • A mentoring program

etc. etc. etc.

I hope you get the idea. Become an organization that supports Code Craftsmanship and you will attract quality developers. The rewards of this effort will be reflected in the quality of code produced and the low turnover rate of developers.

An Interview with a Couple of the Founding Parents of Extreme Programming

Ron Quartel Interviewing Ron Jeffries and Chet Hendrinkson on Code Craftsmanship, XP, Scrum and more

A Code Craftsman Recruitment and Training Strategy

From my experience as a development manager I came up with this strategy to maintain and build XP teams. You will need to start with a core team of XP developers. To grow the team, find developers that are hungry to learn and are a good fit. Obviously they have to know something about coding but as long as it above a certain bar, it's more important to have team fit and aptitude. With this attitude a developer brought into an XP team that practices pair programming, will get the new recruit up to 80% capability and domain knowledge of a senior developer within six months or under. True story.

The interview comprises of having the candidate come for half a day (after initial phone screening and HR screening has happened). They will do some pair programming with a couple of devs and then the team take them out to lunch. During pairing we can see the candidate's coding aptitude and if they are capable of pairing. During lunch we find out if they are the kind of person that we want to hang out with for eight hours a day i.e. a team fit.

Suggested Reading List

RefactoringThe Pragmatic ProgrammerThe Art of Agile DevelopmentClean CodeExtreme Programming ExplainedThe Software CraftsmanThe Nature of Software DevelopmentThe Four Rules of Simple Design