My organization was flat two years ago, and people felt that the general manager had disproportionate almost dictatorial powers. Also the general manager didn’t have time to coach employees, so some employees were dysfunctional and nothing was done about them. However on the plus side everyone was involved in the decision making, thus motivation was very high.
So what do you think about flat vs hierarchical organizational structures in software development?
4
I don’t think given the question as is, you are really going to find an answer.
Some amount of hierarchy is always going to be necessary. As far as company goes, you will always have a president/CEO and then you’ve got people under him. Are those underlings all on the same level? Maybe. Maybe this company is only 5 or 10 people. But how can you scale to 500? or 5000? Self-directing teams are a great idea and I’m all for Agile and all that, but we also need to be realistic.
Management certainly fulfills and important function. Their job is to organize all the minions so they all march in the same direction and hopefully towards a common goal. With that organization comes certain amount of planning/debate/negations that is up to the management, so that you as a developer could focus on your job at hand.
I’ve got my own examples of various forms of organization. For example in my previous company we “went flat” for a while. So we had a director and 25+ local people (plus bunch more outsourcing) in the department reporting to him. Because we were “agile” (so weren’t but that’s besides the point), we had scrum masters. And somehow our scrum masters ended up being senior engineers who had the best coding ability and yet they spent at least 75% of their time doing paperwork and going to meetings. Why would you have an engineer come up with annual budgets??? That was their idea of flat. Clearly one or two managers would have been helpful so that guys who write best code could actually code.
On the other end of the spectrum, I have a friend that works for a military contractor. They have a strict hierarchy with a lead for every two people. That’s insane! The entire office is nothing but politics and from what she tells me, the entire environment is an absolute nightmare.
I work for a small start-up now and we are “mostly” flat, but I still have a boss and I’m glad I do because he gets to travel for various reasons 25% to 50% of his time, while I only need to hop on a plane few times a year. More power to him.
So to come back to your question. Managers will always be necessary. There will always be paperwork, meetings and 75 other distractions on daily basis. Whereas engineer’s goal is to “stay in the zone”, a manager switches tasks every 60 seconds. That’s two different roles and often two very different personalities.
Besides playing interference to keep the team productive and focused, as you mentioned in your own question, a very important part of manager’s responsibility is to build a productive team. That involves a) picking/hiring the right people, b) providing coaching/guidance so that those people would grow and develop and c) providing incentives/environment that would align the interests of those people with those of the manager (assuming that manager’s interests are those of his boss). So in your example, with good management you could solve your dysfunctional employee problem because they would be able to either adjust attitudes or replace the non-adjustables. Obviously that would only happen is if the guy in charge of the team has enough capacity to keep track of what’s going on in that team.
Is there a need for management? Absolutely. Is there need for micromanagement? Absolutely not. The role of the guy that is 5 levels up is to build and coach a team that is 4 levels up. He should be able to trust and rely on that team to give him the information he needs. If he isn’t capable of doing that and has to make engineers prepare reports for him, it just means that the guy 6 levels up didn’t do a good job of building and coaching his team.
Funny story, as I quit my last company, I had a chance to sit for two hours with a guy 6 levels up and ask him, “what’s up”. 6 months later he ended up removing the guys at levels 5, 4 and 3.
Having written this answer, at the developer level, I still believe in autonomous, largely self-contained, self-organizing teams just like you in materials on Agile.
What makes you think a hierarchical system would solve the ‘dysfunctional employee’ problem?
I’ve worked for both types of place, the flat one was the best IMHO. We had a director and a manager and then under those 2, everyone else. We all worked together for the benefit of the company and we were very efficient and successful because of it.
I now work for a place where my (let me get this right) boss’ boss’, boss’ boss’, boss wants a report so we’ve dropped everything to get a meaningless piece of nonsense done. The last place I worked was also hierarchical, but organised into teams – nevertheless there we spent months doing things that the first place would have have dusted off in a week.
Hierarchies can work to organise very large organisations, but even then they try to keep teams together and self-contained so they can work like the first place. If they succeed, the company succeeds IMHO, if they fail to do this the org starts to get too spread out and spends all its time managing itself.