The Technical/Business Dichotomy

It’s a common trope in the software development world that non-technical people often dictate technical decisions which they are unqualified to make, with hilariously awful results. Programmers recount stories of their own experiences in this situation, and these stories become “I told you so” adages.

And even though reasonable programmers admit that the business needs to have input on technical decisions, we still feel like we are the best gatekeepers of business’ influence. After all, we are the programmers.

It sounds convincing – it’s easy to picture a product manager forcing a developer to do something that the developer doesn’t want to do. To make a button a different shade of blue, for example, or to use the term “Save” instead of “Done”, or to use PHP. All manner of evils.

But I think we developers tend to overestimate our objectivity. Non-technical colleagues also have a large stake in technical decisions. When a decision is made that we disagree with, we tend to take it personally because we’re the ones whose work is affected by it.

We are affected by their poor judgement.

Well, not necessarily “poor judgement” – more like a difference of opinion.

Non-technical team-members make decisions from their own perspectives, with their own priorities. Those perspectives and priorities often differ from our own, which leads to tension. Tension leads to hate, and hate leads to sufferingthe trope of the clueless managers.

But technology for its own sake isn’t a compelling business case. For the majority of us, technology exists to serve business – not the other way around.

So it’s a bit dishonest to pretend that we know better. Our opinions aren’t necessarily more informed – they’re just informed by a different perspective. Maybe it makes sense to A/B test which shade of blue results in more conversions. Maybe it makes sense to use “Save” instead of “Done” for some reason. Maybe PHP is the right solution for a project.

Pretending that all technical decisions should ultimately be decided by programmers is silly. Programmers, at least the ones that I know, are bad at making objectively good decisions. We do things like use a new language before it’s ready, because we think it’ll be fun. Or we’re dicks to other programmers because they use different tools.

The fact is that technical decisions do have an impact on business. For example, which programming language a company uses will affect how easily they can hire more programmers for their team, how much they’ll pay in salaries, the amount of maintenance work required, and so on.

We’d like to think our job as technologists is to make technical decisions, but that’s incorrect. Or rather, it’s incomplete. Yes, it’s our job to make decisions, but it’s also our job to recognize when those decisions need input from our colleagues. We should present the facts and our opinion, and work together to make a decision.

Of course I sympathize with frustrated developers. Of course I feel their pain. But I often see us buying into the trope of “managers are stupid.” We follow this to what seems like its logcal conclusion: that decisions we disagree with are wrong.

Please submit typo corrections on GitHub