Every function in human society has hidden complexity. Like, reality is very very detailed. Everytime I learn something new I discover oceans of complexity and nuance.
That's just the way the world is.
Now, software is hard because the complexity isn't as visible to most of the org, but also because software people tend to be less than good at explaining that complexity to the rest of the org.
I would also argue that software (and the people that write it) have a "correctness" bias that is not fully aligned with business goals.
Tech debt is real, but so is the downside of building a system that has constraints that do not actually align with the realities of the business: optimizing for too much scale, too much performance, or too much modularity. Those things are needed, but only sometimes. Walking that line well (which takes some luck!) is what separates good engineering leadership from great engineering leadership.
> I would also argue that software (and the people that write it) have a "correctness" bias that is not fully aligned with business goals.
Hey, I resemble that remark!
Yeah, I get where you're coming from but i do really feel that it's more of a communication issue, along with the abstract nature of software. I mostly do data related stuff, and have often had the experience of finding "wrong" data that doesn't have a large impact, and every time I need to remind myself that it might not matter.
You can also see this in the over-valuation of dashboards vs data engineering. Stakeholders lurve dashboards but value the engineering of pipelines much less highly, even though you can't have dashboards without data.
To be fair, this bias for "correctness" is both logical and necessary, and not something that stems from inability or unwillingness to understand business goals.
That tech debt you took on to meet the latest oh-so-important deadline? Prepare to live with it forever, because the next hare-brained initiative is right around the corner.
Frankly, the business's goals are not my goals, and unless I own the place, I'm not sacrificing good work for it.
This is spot on, and a very good explanation why the Agile Industrial Complex is so despised: It papers over the nuance and detailed complexities of software engineering. There are probably similar oversimplifications in other domains but the AIC particularly frustrates SWEs because it deceives management types into believing there isn't actually as much complexity that we are “less than good at explaining” as you accurately stated.
That's just the way the world is.
Now, software is hard because the complexity isn't as visible to most of the org, but also because software people tend to be less than good at explaining that complexity to the rest of the org.