Over the years of my career I have learned a lot of things about what makes an organization efficient and successful. The number one factor in this, I think, is the fundamental structure of the organization itself.
What do I mean? What I mean is, the way an organization is setup determines its future – whether it will be successful or whether it is doomed from the start. It is exactly like how a good and strong building with integrity requires a good and strong foundation. I think that an organization with a good structure provides a good way to communicate within different teams, departments, bosses and so on.
Principles of management are very essential. The companies I have worked for so far has not even remotely implemented even one of the principles. Without these, there is a lot of red tape. The bureaucracy is more complex than what you’ll probably find in a Kafka’s novel.
If your boss or a manager does not understand what their team is doing or what they are supposed to do, then there will never be an output from them. At least not what the management is expecting. But I guess we cannot wish for everything.
What if you have a boss who is clearly not educated enough in the field that your team is working on? Can we expect him to learn all these things just to get the work done? Ideally, yes. That is what a superior should do. But realistically, it is not possible. They have their own assignments that are running off track which they are worried about. Amidst all this chaos and craziness, it is unreasonable to ask them to learn, say, the structure of nodejs, just so that they’ll have a better understanding of the projects. This is especially challenging considering most of the tome the manager above you will be an MBA or with some other totally unrelated degree.
But this brings forth another problem – how do we explain the technical challenges that we are facing to the manager in meetings? This is where a huge part of my time actually went. Not only I had to develop and keep track of the projects that was assigned to me and the team, but I had to constantly think and plan ways of explaining the status and challenges to my manager and the management in general. It requires enormous effort. You have to come up with a matter of speaking in terms that they understand. Maybe this is a bit manipulative, but it is required in order to get the job done. Let’s say for example, our team is working on a software project and I’m required to talk to a technical manager. I’ll try to explain the actual bugs and why, to solve these bugs, the system or the module needs to be rewritten and refactored. I’ll explain that this will dramatically improve the performance and the team’s metrics in the future.
What if I’m talking to a project manager? Then I will have to restructure it a bit. I’ll explain the current status of the project in such a way that he understands it in a timeline basis. And I’ll have to explain the restructuring in a way so that he sees how much quicker we could get this thing done and start the next one.
Explaining the technical debt to the management is such a complex problem. Let’s say that your boss understands the issue we are having. If he is not in charge of decision making and he has to explain the issue to his boss who in turn has to explain up the chain and so on, and the person who is actually in charge of making the decision is not ready to take it (as in he cannot understand the issue), then the issue will never be solved and the team has to find a work around and find a way to ship the software, even if the actual issue of technical debt is unsolved.
I think this is a core factor in a dysfunctional organization. Maybe I’m being a bit picky but imaging how much time could be saved if the managers knew how and why things worked. All I ask is to at least make an effort to understand the basics. This issue is rampant in almost all organizations which are the so called “old and established”. But this problem exists in startups also, in my experience. Maybe in startups which are driven by people who actually know what they are doing, things are different. I would argue that a company where we have managers who do not care about tech debt or how the projects under them work, then these organizations are dysfunctional and only promote people who are “talk and no action” type. The business owners/executives know that their entire management team is a bunch of idiots. But they are smart enough idiots that they can help squeeze money out of customers with the grand illusion that a decent product is being provided. The morale is boosted by constant talk about how great things are going and how much they care about customers. But the developers keeping the place running know the truth and that is why they are out before too long. They know the stress it takes to make shit look like gold long enough to get someone to pay. These observations seems a bit harsh, but hey, the truth is often painful.