Developers Need to Understand the Business
All I need to understand is the technology stack.
I work on frameworks, I don’t even care what the company actually does.
If the technology isn’t any good, the company can’t succeed anyway, so maybe I’ll learn it later.
These are quotes that I’ve heard from very smart software engineers. I don’t agree that a member of a software team can do a great job without truly understanding the business. I don’t believe anybody can do a good job without understanding more than just their part of it.
This is one of those on-paper distinctions that doesn’t seem like a big, but really matters in hiring. I don’t care how great of a developer you are, you cannot be as effective as your potential if you are just building technology without a firm understanding of why and where you are building it.
Here are two examples from disciplines that are compared informally to software engineering: “pure” engineering and physical construction.
An engineering example
The smartest engineer at NASA knows if he is working on is to send a team to the Moon, or to Mars, or a refuel-restock mission to the International Space Station. They know if their component is used in orbit or travel or after landing. They know what its expected lifetime, what genders will use it, and how much money they have for research and final build.
A construction example
A carpenter knows the budget they are operating under, the client’s wishes, the architect’s plan, environment that the house sits in, the expected lifetime of each component, and how long they have to work on it.
Ok, so what
In neither of these examples did I tell you what the person was building. Was the NASA engineer a materials engineer, rocket fuel chemist, hardware engineer, software expert, bathroom designer?
Was the carpenter building the kitchen counter, the fireplace, the pedestal that the washer and dryer would sit on? The mudroom closet? A coffee table for the panic room?
Well, they better know the context in any of these situations so that they can make all the micro-decisions needed to do an excellent job.
What I hear when someone says that they don’t care about the context in which their software runs is that they don’t care about the rest of the team that helps to build it. Or customers.
And this means that they won’t great to work with, as they aren’t humble enough to ask the questions that really matter. They won’t find solutions that aren’t challenging. And they won’t build truly great software that does what it needs to do when it needs to do it. And worst of all for them, they will not get better.
They will build beautiful cathedrals of impressive tech that won’t matter.
Complex sandcastles. Wrong place, wrong material, wrong size.
I’m writing a book about successfully working from home; click here if you would like to know more.