Sourcesense is an interesting company that crossed my working life several times mainly for two reasons: because there are some friends (like Marco) working there and because there are former members of my team working there. My team is not huge and Sourcesense is not a huge company so this fact is pretty peculiar.
PierG: Matteo, Simone coaching a team seems usually pretty strange both to managers and to developers. Don’t we need bosses to achieve goals?
Matteo: a coach is not a boss — the two roles are quite different. As a coach my task is to help the team achieve its potential. The tools I have include training, explaining, questioning, talking, watching and listening. Sometimes I help teammates by working side-by-side, sometimes by bringing the team’s attention to the situation at hand. The “boss” role in a well-functioning team does not happen. That is, team members do have a boss of course, but the boss role is limited to setting goals, explaining what the desired outcome is, and sharing as much information as possible, so that the team can make the best decisions. The boss will also need to provide tools and materials, and give feedback on the team’s performance, but they will usually not tell the team how it’s done.
Simone: People started to use coaching as a managing tool probably twenty years ago but this approach still makes people uncomfortable. The fact is that sometime we have to step out our comfort area to improve ourselves.
I believe as well that the best way to achieve goals is to help your team to improve and to achieve its potential and the best way to do that is to put them at the centre of this process.
Established teaching practices put the students at the centre of the teaching experience because is now well understood that the learning/improving process is much more effective if you wish to learn.
We hope to show how it works during our workshop.
PierG: You are saying that command and control is not effective?
Matteo: I would not say that outright. There are places and times when command-and-control works well; take the military for instance. But even in the army, when the operatives are out in the field there cannot be someone to tell everyone what they should do. They need to know what the desired outcome is, what are the constraints, and they will make the decisions they need to take on the basis of the situation at hand. The quality of the outcome will depend heavily on their level and quality of training! The same thing happens in team sports. The coach cannot tell the player what to do in the heat of the action. The quality of the players’ training will make the difference between winning and not winning.
In software development, my goal is to have the team take responsibility for the desired outcome. I don’t want to act as a “project manager” who makes decisions and then takes responsibility for results. This is because software development requires making lots of important decisions at different scales, from how to name a variable to how to structure the architecture of a system. The people who are in the best position to make these decisions are the developers. If I make this sort of decisions in their place, the result will almost certainly be suboptimal.
But, you don’t get to the point where the team assumes responsibility just by willing it. It takes time, training, coaching, patience and the courage to let them do it their way. They might make mistakes, but then again, I make mistakes too.
Simone: One time discussing with a software architect I asked sarcastically why he was spending his time teaching the team instead of writing guidelines and diagrams to tell the team how to build the system.
He told me that he wasn’t able anyway to review all the code that was produced and the best way to achieve good quality was to help all the developers to become little architects able to spot what was right and what was wrong.
He knew that control is only apparent and that the best way to achieve excellence is to share the responsibilities with the team.
PierG: You are two examples of making good results in a non conventional way. In your opinion why is it so difficult in Italy to start your own product company?
Matteo: I’m not the best person to answer this question. I’m not worth a dime as an entrepreneur, and it’s not because I live in Italy. It’s just not my kind of job. The thing that I like to do is to help people do outstanding work. One thing I can say is that in Italy it may be difficult to sell the concept of “outstanding work”. It’s just not in our culture that a team of developers might be much better than another. And yet everybody can see that some are outstanding at playing guitar, or playing football, or cooking, and others are just mediocre. Why is it so difficult to believe that some people are outstanding at writing software, and some other people are mediocre? My answer is that software is a game of choices that have long-term consequences. The feedback loop between working well or poorly and then noticing the outcome is months long. But I’m curious to hear what others think.
Simone: If for unconventional you mean to be picky in the recruitment process and to create an environment that help people improve and become effective member of the team, yes we are 🙂
The difficulties related to start a product company in Italy are complex and partially related to our social structure; some of these difficulties (bureaucracy, founding, opaque market) can be avoided creating a company that works on the global market, but this is not going to solve the root problems that IMHO are more related to social stability than to anything else.
This is a interesting question and I’m quite emotional about that topic because I’m trying to open my own company since 2006 (without success yet) but I think I’ll leave it open ended until I get some success story to talk about.
Master Oogway is true, there are no accidents 🙂