Software Development Myths
Tags: programming, mythbusters
Published: 2022-10-18 13:28:11

Have you, as a software developer, ever been told _you have to_ know the business? That you have to dive deep, and you have to understand the client's needs?

Well, I in my 30 years of experience, have obviously heard that time and time again. Pretty much every single time I change projects or jobs, I hear the same thing from both product people as well as from devs that have already been working on the product for years. And I flat out disagree with it. Here's why.

## Required skills
So when you look for a new position you're seldom, if ever, asked about your business knowledge. You're harassed over and over again about frameworks, SOLID, DRY, TDD and what not but the questions about the business area are always left as "ok, so you seem worthy and here's what we actually do". Nobody is actually asking if you know how the planes work or how the financial sector works, because the assumption is that you either "should just know it" or "you'll learn".

## How about other professions?

That assumption alone is just crazy. You wouldn't expect a dentist to know how to treat heart disease, let alone how to sell houses, but you'd still expect the teeth to be fixed if it is broken. That is what you pay for. It'd be actually hilarious to come to the doctor and tell him you have problems at work and expect that doctor to tell you anything that would help you. It's not what doctors do. They heal people's bodies. Of course, there are doctors that heal the brains too, but anyone who has seen a shrink knows they don't know shit about the job you do. Their preoccupation is your brain, not your work. Even if the problem is connected, the shrink won't help you solve that problem, but rather will help you help yourself.

## So what about devs?

Why then developers, that deal with code, not with cars, planes, houses, and whatever else, are supposed to be experts at this or that business domain? The answer is, just like with doctors, they are not. Developers will, naturally, assimilate a portion of how the business works while working on a project, but that's accidental knowledge. To put it bluntly: if you want a dev that knows everything about the business, you need to train a non-developer that knows it to become a developer. There is no other way around it.

Sure, sometimes you'll find a guy that likes coding and has a kick for, let's say, aviation. It's a sexy topic on its own, so it's not that unheard of to meet people interested in both. And that's true for every business out there. But it is, and has rarely been, a point of interest for recruiters. I have never heard of a candidate that was rejected because of lack of knowledge about some business area...

## So what's a dev to do?

The myth about developers having to learn about the business is just rude and impolite towards the devs because it treats the skills that we have as second-grade. Let me remind you that in 99% of the interview questions you won't find anything about the business itself. It's all technical.

The way to go is to have realistic expectations. If you need a person that knows, for example, what a hospital patient needs then you should ask someone who is directly involved with patients - not a guy who 6 months ago was writing a game about slashing zombies. The dev will know how to present the scanned image in a 1000 different ways, but in reality all of them are equally good. It is in the hands of whoever knows the business to figure it out and it is in the very capable hands of the developer to make sure whoever comes next will understand what the fuck you meant when writing code that translates business requirements.

## Punchline

For you, as a developer, it makes all the sense in the world to learn about programming. It's a tool you get paid to use and the better you are at it the more you will be paid. It is that simple.

If, by any chance, you get interested in the area you work with - even better. Expecting that every developer will do that is just hilariously misguided and will render the codebase you work on useless due to lack of technical skills. I've seen it done a number of times specifically because the devs working on it were just very poor at actually programming.

As for the rest of us... Just keep doing what you do best. Someday the world will understand that a doctor is not a police officer and a developer is not a business expert.