I often complain about my managers forcing me to argue lengthly about why I would do something a specific way or why I want to include this feature over this one in the next version of the product.
They force me to bring them up to speed on the current state of my knowledge in order for them to be able to take a decision. The decision being: to let me do it or to prevent me from doing it.
They are very intelligent people and I have them in high esteem but this situation seems wrong to me.
Teach me your job
On one side you have the people working on the project, their heads are geared toward working with the underlying concepts. They’re very comfortable with the building blocks and they can hopefully solve the higher order problems without having to be hindered by basic issues.
On the other side you have a manager which might have technical background (more or less recent) but doesn’t know the details of the project that well. They might know the general concepts and they might have recollection of a previous presentation of the project but their scope is more around deadlines, deliverables and coordination.
The ‘sync up’ usually happens through mail or during a meeting of a couple hours maximum. Very often, during the meeting or sometime after it, in an attempt to “drive” the project the manager will take a decision based on what he learned during his interactions. The hope being that with enough interaction the manager will have gathered enough knowledge to be able to decide what’s best for the project.
The problem is that very often it leaks into the tech domain. And then, in my opinion, It becomes very similar to asking a novice to take a design/feature decision on the product he has just been trained on. The chances that this person will take a better decision than the trainer are small.
You could argue that those people have been in similar position in the past, have a lot of experience, are very capable. But we know how much gap their can be between two similar situations, especially in the still relatively chaotic world of software engineering.
Evil lives in details.
In Orbit
Distance works both for and against the 3rd party observer. He might be able to give more weight to the big picture since that’s all he knows but the remarks and decision he makes often cover issues having been dealt with in previous sessions within the project team. And this is assuming that he grasps the big picture.
I agree that the role of a 3rd party observer or mirror is important to prevent a loose canon from causing a project to drift away. I’m just saying that it shouldn’t be the manager.
Also from a consequences point of view, these managers won’t have to suffer the full impact of their mistakes. Like a general sending part of its troops to a certain death, it will be inconvenient for you to not have these troops for the next offensive but the war is not lost and you’re still a general. Even if your responsibility is invoked, it might be hard to determine that the failure was directly linked to your decisions. And even if you can’t sleep at night you’re better off (some people might differ) than those who lost their lives.
Faith, Trust, etc.
The fact that a lot of managers in the software industry come from an engineer background could also explain why the interaction is sometimes going wrong. They can’t give up the tech side, they’re interested in the details because for most of them it’s sweet memory.
There’s also an issue of trust:
“My project depends on these people to do this and that, if they don’t, I’m screwed! I have to make sure they do it right!”
Note that everyday you do trust random people to do things you rely on: drive the bus, manufacture the stove in your apartment, prepare your coffee, give you an X-ray, etc. and in some cases their failure means more than just you sitting in the hot chair in your boss’s office.
But suddenly as you become the manager you suddenly can’t trust anybody anymore? Maybe you’re aware that you’re surrounded by incompetence and in this case there is a deeper problem you need to care of. But you can’t just live in distrust or can you?
On the other hand, it’s probably right that you can’t trust one person alone.
“L’erreur est humaine” (people make mistakes)
You don’t want to leave any decision unchallenged but you need to be in a position where you can challenge it efficiently and I would argue that a manager is not in a position to do so.
He will only be as efficient as a mirror and the reflected image could have defects which are defects belonging to the mirror. Also in the case of managers who are ex-engineers, there’s a conflict of interest right there! They still have the tech faith, they have some power… It’s so tempting for them to impose their beliefs.
Object Oriented Management
This reflexion is far from being over as far as I’m concerned but I believe the solution is somewhat of an object oriented approach: Leave the people with the most relevant information make the decisions, providing the input relevant to your level of abstraction if necessary. Do not break the encapsulation !
