Re: Master Craftsman Team by Uncle Bob

by Mark Nijhof, in Improvement Craftsmanship | Saturday, April 04, 2009 | 0 comments
I was reading Uncle Bob’s blog post “Master Craftsman Team” with great pleasure, and I would highly recommend everyone to read it, actually just read all of his stuff. Anyway I wanted to respond to his post with some questions so here it is, hopefully I get some feedback!

20 plus years

First of all I like to question the requirement of having a Master in the team that has plus 20 years of experience _and_ is still very much in touch and passionate about the current technologies and what not. I am just going for practicality here; I mean we already have lots of difficulties finding capable people that could take the role of Journeymen let along finding a person for the role as Master. Would a person with 10 plus years not be able to take the role of Master? And no I don’t have 10 plus years under my belt.

My way or the highway

This is something I can completely agree with, it has always been something that I didn’t like about the Agile way of working. Someone needs to be able to make a decision, take responsibility. Of course there are teams that are mature enough that such a person is automatically appointed, but even then I think it should be actually confirmed by the team that this is the person that has the responsibility, younger teams will definitely not have such dynamics. Because nothing is more annoying than having a disagreement and nobody is able to take the final decision, such a waste of time.

Having said that, this does _not_ mean that nobody can have an opinion, which is even worse. I am sure that the Master with 20 plus years under his belt can still learn even from someone that has no experience; actually those guys will often surprise you. So voice your ideas and opinions, just be prepared to be vetoed by a Journeymen or Master.

No more university

Aldo I strongly believe that the skills for which I was hired where not thought to me at school, but instead were self thought, I am not sure if we should skip this step? One of the purposes of an education program is to introduce the students with the different aspects and possibilities of the trade, I am sure that many started thinking they wanted to become one thing but ended up choosing for another thing later on. Those are not the people you want to have in your team and invest in, let them chose first. Personally I have known from the start what I wanted to do, so I would have loved to be an apprentice on your team. There is another issue as well more related to the country where I live and that is that it is really hard to get rid of those that don’t make it, you can’t just fire someone.

Anyway what about a middle way? Get one year very generic (like it is now) give students a taste of the different areas and then after that have them make a choice. When they choose to become a Software Developer then they can apply for an apprenticeship position in such a team. During this apprenticeship they stay in school, but perhaps only an x number of days per month, the rest of the time they are actively working in the team, this way making the training something officially recognized and much closer to the reality of the trade. You would still want the external institute to keep an eye on the progress. For example just because there is a personal mismatch between the team and the apprentice it should not mean that the apprentice should not progress to becoming a Journeyman. Also recording the progress to make this officially recognized should also be the responsibility of the institution. I do believe the apprentices should be paid while actually working.

I do think that this will be a very exclusive education, realistically how many of such teams would there be? When the results become visible and companies start seeing the value of it, then there will be more possible, but that will take time. Therefore I think that the initial teams should offer enough credibility that when the Apprentice becomes a Journeymen he will not have any problems finding a new team to continue his journey.

Continuous Integration

I read that you want the Apprentices to commit to their Journeymen and the Journeymen to commit to the Master; I am sure this that this works very well with your newfound love for Git. But how would you solve the CI stuff, all check-ins should run all unit tests, so I assume those committed by the Master. But the tests for the new functionality created by Apprentices or Journeyman should also be run by everyone. How quickly should the code go from Apprentice to Journeyman to Master? I would think that there will be some lag between the different steps?

Another issue I see is that while pairing you would continuously work with other people, each of them will have different ‘bosses’ so who needs to approve the code when two Apprentices with different Journeymen as mentor finish something, or a Apprentice and a Journeymen? I guess only when pairing with the Master this won’t be a problem.

Final thoughts

I really like the idea of creating such an environment but realistically I think it is highly unlikely that this is going to be even close to main stream, but I think it would work for some cases. I would love to try this.

No comments yet!

Mark is reading

 
Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.