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.
So what do we mean by code craftsmanship / crafting? At a minimum you will be practicing :
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?
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.
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.