A side note on Code Craftsmanship and FAST
Ron Quartel - 4 Dec 2015
First of all an apology to the ladies and an assurance that I am not trying to be sexist in my choice of words in this article. I have used the terms brotherhood and craftsmanship instead of humanhood and crafter due to their wider usage and acceptance. I will slip between the terms crafter and craftsman in this blog. You may also notice I slip between British and American English (on account of having lived in both countries and have trouble remembering when to use which spelling when). Finally, I will also be slipping between the term Extreme Programming and it's the abbreviation XP.
It feels like a brotherhood to me because we share common values, understand each other and help each other out (to be better coders). This connection gives crafters a head start to productivity when they find other crafters in their team. This secret can be used to your organisation's benefit in a way that I will make clear further into the article. But perhaps you need to understand what I mean by crafter first?
Extreme Programming, Clean Coding and care for Technical Excellence (one of the agile principles). Sure things have moved on since XP was created, and we now have modern development practices and modern XP, but the essence remains the same (and if nothing else, classic XP is a really good foundational step on your path toward mastery).
Humility was a big pill I had to take at the start of my journey into craftsmanship. Before XP, my title was Senior Developer. After XP, I dropped that title and called myself a Code Crafter.
Bad pairing experiences will turn people away from pair programming. (Agile coaches take note.) If you are one of those that pairing has left a bad taste, I'm sorry. I hope that you can experience pairing the way it should happen and be open enough to give it another chance.
In short, pair programming is about being a coach, being coachable and knowing when to switch between these two states. Lysa Adkins would use the word mentor in place of the word coach in this context, and she would be technically more correct. Whichever word (coach or mentor) works best for your understanding in this article, run with it.
Code Retreat. I have been amazed time and time again at just how effective this class' simple format has been at creating a sense of brotherhood and learning among the participants. For many this is their first introduction to test-driven development (TDD) and pair programming. Participants come away with the sense of what it is to be a code crafter in a safe, non-threatening environment.
If you have not experienced Code Retreat before, I can't recommend it highly enough. Once you have done the class, read Corey Hains' book Understanding The Four Rules of Simple Design. It's a fantastic book that will help you on your journey into craftsmanship. And then do the class again. And again.
This is the secret that can be leveraged by your organization: By becoming a place that values craftsmanship, you will not only attract the kind of developers that can get up to speed quicker but they will also be doing the right thing by your code.
- Code crafters can form a productive team within hours
- few defects (near zero)
- low technical debt (no legacy code)
- easily maintained code base (long-term sustainability of your product)
- the cost of adding new features stays low (instead of growing over time)
- low staff turnover
- low cost/time of onboarding new team members
- no siloing of information/skills and being held hostage by senior developers
- attract quality staff
- able to hire juniors and build them quickly into seniors (lower salary costs)
- Understanding The Four Rules of Simple Design by Corey Hains
- Extreme Programming Explained: Embrace Change (1st Edition) by Kent Beck
- The Art of Agile Development by James Shore
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
- The Pragmatic Programmer: From Journeyman to Master by Andrew Hunt
The ability to bypass forming/storming/norming/performing is a large part of why code craftsmanship is one of the core values of FAST Agile and how FAST proposes to spin up teams dynamically around work. For this reason this blog has been posted on this site.