This is the third and last post (at least for now), on the internal workings of Codurance. This time, I will be talking about something that we are currently implementing. It is a direct consequence of having the Initiative Circles described in my previous post.
Sandro and Mash (our founders) created Codurance with the idea of having a flat hierarchy. Their own experience led to this idea. In a company of consultants, with highly skilled employees, a formalised bureaucracy will get in the way of moving forward. Furthermore, in my experience, bureaucracy hinders the agility of a company (but there is always a minimum needed).
A flat hierarchy doesn’t mean that there is no structure to your company. You need structure at two very important points: on dealings with the client, as the structure helps on communication channels; and on the career advancement of your consultants. I am not going to talk about the first type here, though we have been adding that as well. But I will be talking … well, writing … about the second.
At Codurance there was some basic structure: Junior, Craftsperson, Principal, but that structure was barely defined. We kind of knew how a person moved from Junior to Craftsperson, but we did not know how you could move from Craftsperson—and this is a problem. To understand more, I recommend that you watch this presentation by Marco Rodgers or look at his slides or do both. But the gist of it is that, without a clear idea of how to move, people get lost in the middle. It was an issue for our juniors because they were left to their own devices, without guidance on how to improve, and for senior people because they were left without a way to show their advancement, nor a way to reach a higher position.
So out of these concerns we tried earlier to create some kind of structure, but the effort fizzled out. Yet the concern was important enough that we tried a second time, giving ourselves tight deadlines to make sure that we set it up. So a group of people got together and we created a progression structure.
One of the things that we decided at the beginning is that we were not trying to create the perfect structure. We wanted to create something that was good enough, and we will keep evaluating the system and improving it if we see the issues with it.
The other important aspect is that we are a consultancy, and therefore the skills chosen for advancement are to improve our capacity as consultants.
So how is the progress structure setup? We have a collection of disciplines — areas where we want people to improve. Each discipline is divided into at most 5 levels. Each level has one or more skills/experiences. The idea is that they represent a continuous advancement on the difficulty or knowledge required. Then there are the spider nets, an approximate shape of the levels on each discipline that we expect a person at each level to have reached. We want to allow for some flexibility as some of the “requirements” really depend on being provided with opportunities to develop in these areas. Sometimes people are so well advanced around a specific area that compensates for lack in others. But in general, for a consultancy, well rounded individuals, that can cover all the job/projects possibilities is better.
A detail that I believe is important is that your career advancement will not depend on someone of higher seniority level vacating a position. Each person's progress is their own, and will not be affected by the progression of their colleagues.
Originally I saw this as trying to get well rounded people that are useful on every possible scenario. But probably the broken comb metaphor is better suited on the long term. The less people you have in your company, the more important it is that anyone can do any job. But as you grow, that importance subsides.
Finally, we use a competency matrix, a description of the expected skills based on discipline and levels. This then creates a set of recommended shapes for our craftspeople at each seniority level.
I think this is something that needs to be understood. It takes years to reach Principal (the highest seniority) level. You need a broad knowledge and experience. You need to have seen multiple projects, with different characteristics, so for any new assignments you can reach into your own drawer of solutions/approaches/tricks to move forward satisfactorily a project. Trying to race here only leads to disappointment. Or as the saying goes: Rome wasn’t built in a day.
Mentoring is one of the most important ways in which we can help people to improve and progress. Therefore, we are introducing mentoring (non-compulsory) for every level of seniority. A mentor will become a guide and helper, to allow the mentee to move forwards. It is important however that the mentee is the one in charge of his/her own progression. The mentor is there to lend a hand, provide advice, and help with getting Codurance to provide the resource/opportunities/solutions that the mentee requires.
The roll out plan is all about getting everyone more or less aligned in terms of the future progression, and on the more appropriate seniority level. We do expect people to be all over the place right now, due to the fact that before everyone was left to find their own path. Furthermore, we have a competency matrix that is live, but that doesn’t mean it is perfect. Not only do we need to train ourselves, but the model itself. So a 6 month period has been reserved to get everyone rolling with a plan of improvement, and get additional feedback in the process. An initial assignment of mentors (based on the mentees preferences) has been made, just to make it easy for everyone to start.
How will it go? Time will tell
Software is our passion.
We are software craftspeople. We build well-crafted software for our clients, we help developers to get better at their craft through training, coaching and mentoring, and we help companies get better at delivering software.