If you check out the suggested reading list at the back of the Codemanship TDD course book, you’ll find what is essentially my road map for mastering code craft. There are 8 books that make up what I have found to be the essential code craft skills, namely:
- Unit test design
- Test-Driven Development
- Software Design Principles
- Specification By Example
- Changing legacy code
- Continuous Integration
- Continuous Delivery
These are the core skills needed to rapidly iterate working software so we can learn our way to a solution that’s fit for purpose and that will be easy to change as the problem changes, so we can keep it fit for purpose for as long as the customer needs.
They are foundational skills that – if it were up to me – we’d instill in all developers.
You cannot learn these skills in a 3-day training workshop with maybe 1.5 days’ hands-on practical experience. Realistically, it’s going to take a smart person 2-3 years to read these books and learn to effectively apply the ideas. My TDD course is your road map for that journey.
But, I’m sad to say, it’s a journey that maybe only 20-25% of developers who come on the course actually take.
I’m painfully aware that, for the majority, a code craft training course is like spending 3 days being shown how to cook healthy meals, and then being sent back to your day job flipping burgers. Some will be inspired to try the recipes themselves, but have to do it in their own kitchens and in their own time. The usual outcome – after they’ve mastered the techniques – is that these developers outgrow their organisations and move on, taking the skills with them.
As an outside observer who stays in touch with hundreds of people who came on courses, I can see this happening. Developers who came on a course, got inspired, and invested their own time, rarely stay put. Their current organisation begins to frustrate them – “We make burgers! That’s just how it’s done here!” – and they’ve made themselves much more bankable in the meantime. On average, developers with good code craft skills earn 27% more.
With very few exceptions, the organisations where developers got inspired and stayed have been the ones who gave them the time and the support to continue learning. Now they mentor junior developers in those same skills – some are even trainers themselves now – and that initial investment in them pays dividends for their employers.
Of course, you might be reading this and thinking “We better not train our developers. They’ll just leave.” But here’s the thing: you need these skills. They’re foundational, remember. If you want reliable software that does what the business needs, when it needs it – and is easy to change as those needs change – then there are no shortcuts. Employers are falling over themselves to hire people with these skills, but where are developers learning them in the first place?
It’s not the training that’s the issue here. Our TDD course just kick-starts the learning process. By giving teams a practical hands-on introduction to the key ideas, and a road map to take with them on their journey, you can save a good deal of time and money on wrong turns and dead ends. (It took me well over a decade, a tonne of trial-and-error, and a library full of books to get a handle on these skills and distill it down.)
But they still have to go on the journey. And if you don’t invest in that, they’ll take the journey by themselves and will very likely be delivering the benefits to some other employer soon enough.