Not sure why this is being downvoted. It’s spot on imo. Engineers who don’t want to understand the domain and the customers won’t be as effective in an engineering organization as those who do.
It always baffles me when someone wants to only think about the code as if it exists in a vacuum. (Although for junior engineers it’s a bit more acceptable than for senior engineers).
Isn't it a bit of both? When it comes to noticing whether or not code will be a security nightmare, a performance nightmare, an architectural nightmare, etc, haven't experienced developers already learned to watch out for these issues?
We're assuming we all somehow have perfect customers with technical knowledge who know exactly what they want and can express it as such, while gracefully accepting pushback over constraints brought up.
Anyone who's worked in a "bikeshed sensitive" stack of programming knows how quickly things railroad off when such customers get direct access to an engineer. Think being a fullstack dev but you constantly get requests over button colors while you're trying to get the database setup.
Dealing with the occasional pushy customers is way easier than dealing with pushy PMs or designers. Which happen to be the majority.
Customers bikeshed WAY less than those two categories.
I'm glad you dealt with some good customers. I can't agree in my experience, though.
It's not luck.
Customers want to save money and see projects finished. That anyone can reason with.
Someone inside the company trying to climb the corporate ladder? Different story.