Explaining to business people why building software is still hard
Posted by fagnerbrack 7 hours ago
Comments
Comment by dasil003 5 hours ago
There are too many product managers and decision makers that are unable or unwilling to do the hard work of actually thinking through what they want, and re-evaluating their priors as new feedback and learnings come in. Similarly, there are too many engineers who are distant from the customer and the problem at hand, and end up chasing their own idea platonic ideal of good software, detached from the hard tradeoffs of what is truly needed right now vs what we anticipate needing in the future. The less software we can write to solve the problem now, while minimizing one way door decisions, and deferring as many "scaling" challenges as long as possible to make decisions with more complete information the better.
This is why AGI won't magically solve software development—because people don't actually know what they want until they try it and then they want something else. Raw intelligence can not solve for purpose or human goals. The better it gets, the more it will become like an evil genie or monkey's paw that never quite does what the feeble-minded human prompters want.
Comment by urbandw311er 4 hours ago
Comment by tripleee 6 hours ago
Low quality = cascading bugs, issues, slow to iterate and add or change features
This is just as true for human written as it is for AI
Instead we have everyone giving up on code quality as if it was just "beautiful code" perfectly indented that was only there for people to ooh and aah at
Comment by SoftTalker 5 hours ago
Comment by bluGill 5 hours ago
Comment by miranaproarrow 6 hours ago
My job is to wire to our backend data, and a lot of these wiring require me to be in there and actually think about the features. These take time, and I just haven't figure out a way to speed this process up with Claude.
Comment by platevoltage 6 hours ago
Comment by holoduke 6 hours ago
Comment by bigstrat2003 5 hours ago
I'm not a 90s engineer and that is crazy. The amount of inefficiency that people tolerate from JS and other web stuff is completely unreasonable in my view. It's also why software today is much worse than it was 20-30 years ago.
Comment by scottyah 6 hours ago
Comment by godwinson__4-8 6 hours ago
Why won't smarter and cheaper models in the future be able to automate this part for your manager as well? How novel is the feature set? Is it he has a knowledge gap or the model is incapable of something? What expertise are you bringing to bear that is beyond the scope of a future harness/model? Why wouldn't such a model simply fill in the blanks for your management, perhaps observing a diff of whatever you did? How do you verify the correctness of your thinking? Why could a future model not replicate this process?
I am just very puzzled by these sort of takes as we approach the end of 2026.
Comment by miranaproarrow 5 hours ago
The only difference right now between my manager getting this claude design web app to production are the infrastructure and interfacing with it.
To get to prod it has to go through our monorepo pipeline, which currently requires using a cli, using a cli/command prompt requires using terminal, getting claude to use terminal also requires you to even know what a terminal is and spawning claude in there. Steering claude to do all that without knowing what or how to use a terminal is, and setting up your environment still all requires some technical knowledge or the language to tell claude to do that.
That's just getting to production. What about getting the claude design which is in a web environment without any context of all that monorepo with all its backend services. So all the interactivity that are all faked or mocked. Has to be converted to a real react components that's actually wired to the Rest API. How do you get the manager to speak to claude to do all that, with claude only being on the claude design harness?
What if manager designed a new feature that the backend service doesn't support? now your asking to make changes on the backend too.
So I think your points are valid that sure we may get to this at some point. But how exactly without the manager having to learn some technical language of steering claude and the infrastructure to support it.
Comment by aDyslecticCrow 5 hours ago
Taking a visual proof-of-concept and turning it into a real product with integration to an existing complex system requires the developer to re-do a-lot of the work. And reading code; especially AI code someone-else wrote, is a miserable experience.
Comment by godwinson__4-8 5 hours ago
If the answer is it's reassuring because it's not happening yet (with your proviso for if ever) then fine.
Doesn't sound very compelling to me but if that's the answer then fair enough.
Comment by aDyslecticCrow 4 hours ago
Trust-able in particular is a growing issue i feel. Very polished looking AI made feature-rich software can have some atrocious bugs in the simplest of parts. Some features may not have been used at all since they were created. Testing never catches everything (even when written); humanity has probably been saved from countless billions of bugs from shower-thoughts of lunch discussions. (AI doesn't take showers). When AI made tests to verify AI made code based on the instructions of a single sleep deprived human using very fuzzy and ambiguous commutation media; can we trust that the software does what we expect it to do at all?
We had this discussion recently at work. "we spend X on our accounting and offer writing system; can we just replace it?". The answer was roughly; "yes, but would you trust it not to accidentally send us in an investigation with the IRS?". If we have to do it properly enough to trust, then AI ends up not being used for much more than user interface. (and that's still a glorified spreadsheet compared to most complex software systems). There is rather fascinating case of a UK cost tracking system convicting 900 sub-postmasters of theft (a few to prison and at-least one to self-inflicted death) over the span of 15 years because a software system was "perfect, tested, and not making any mistakes in its calculation"
https://en.wikipedia.org/wiki/British_Post_Office_scandal
---
Not to say AI is useless or inconsequential; we're wasting a lot of time writing low-consequence boilerplate for UI, code interfaces, API schemas, error handling and data parsing. If they don't work we notice, so they're perfect for AI. But when a "project manager" makes a "prototype app"; it sounds a-lot like a interactive prototype in javascript for the UI; closer to a modern-day figma design than a functional product.
Comment by miranaproarrow 5 hours ago
Comment by tripleee 6 hours ago
Making a calculator a billion times "smarter" isn't going to make it able to wash dishes
Comment by godwinson__4-8 5 hours ago
Anyway I hope I get an answer to my actual questions. Engaging with your "it's just a calculator" denialism is an obvious dead-end. Have a good day buddy.
Comment by tripleee 5 hours ago
Name me one human that can describe grandmaster level chess strategy but also loses to a random-only chess bot - that was the case for LLMs for a long time
My point is LLMs aren't humans. They're not a toddler slowly getting smarter, and when they're smarter they'll be able to do everything a human can do. It's a different scale entirely.
Comment by godwinson__4-8 5 hours ago
Why don't you calm down and read my question again and you will see the only one "completely missing the point" is you.
You're arguing with someone else. I didn't make a claim that LLMs were human. If you're going to respond to me then engage with what I'm exactly saying. Go back and read it again, if you can manage it.
Comment by tripleee 5 hours ago
Comment by Axsuul 5 hours ago
Comment by godwinson__4-8 5 hours ago
I'm asking why is it reassuring about his job? Surely your big human brain can understand to be automated away doesn't mean the machine is "smart as a human" whatever that means. There is probably not a lot of utility in comparing synthetic and organic intelligence from such a reductive perspective.
Factory workers got automated by machines. Is a robotic arm smarter than a human? Is a tractor smarter than a bovine?
My question is simply what is he doing that is so "smart" or novel that it cannot be automated or mechanized. This should not be so hard to understand.
Comment by discreteevent 5 hours ago
Why should they answer the question if you can't answer it yourself? What is he doing that is so "smart" or novel that it cannot be automated or mechanized right now? If you knew that answer you could put every one out of a job right now and you would be counting your trillions instead of asking "simple" questions on HN
Comment by Axsuul 3 hours ago
Machines don't go deep on problems, humans do. A machine has no will or purpose to solve a novel problem on their own. Hope that answers your question.
Comment by digitallogic 5 hours ago
The problem with this thinking is it requires certainty about the future. It's much cheaper right now IF AND ONLY IF you end up needing the thing. If you don't need it, then you've threw time and money down the drain.
Where I think this analogy weakens is you probably have far more certainty of whether or not you want a big family then you do on whether or not a new product line will see major adoption.
Comment by bluGill 5 hours ago
Comment by mattmanser 5 hours ago
Sometimes it's building a house, sometimes it's writing a book, sometimes it's the difference between a Ford and a kit car, sometimes it's how you build a bridge.
None of them stand up to full scrutiny. You can pick every single one apart.
That's not the point of analogies. The point is to explain just one of the many aspects of software engineering in a more understandable format to the listener. Software engineering is nothing like building a physical thing. But some of the many, many problems and complexity you hit have physical product analogies.
Don't stretch analogies too far as they all pop.
Comment by mehagar 6 hours ago
By loosely specifying things in a prompt, there's simply not enough context for the AI tool to know the "right" output to produce for all possible inputs. What's "right" is often subjective anyway ("Should this button be red or blue?").
Comment by urbandw311er 4 hours ago
Comment by SoftTalker 5 hours ago
Comment by skydhash 5 hours ago
After using OpenBSD for a while, I fully adopted the “write less code” approach. Create the simplest solution and leave “features” out until you need them. Nice to have should be practically banned.
Comment by etothepii 6 hours ago
The problem with software is that it is never done. There is always another feature you could have and worse than building a property the work is only done by the people on the outside.
Comment by randusername 6 hours ago
When clients ask why something takes so long, I explain that I'm not building what you asked for today, I'm building something that will be easy to turn into what you asked for today and possible to turn into whatever you ask for tomorrow.
Comment by Fr0styMatt88 5 hours ago
Comment by skydhash 5 hours ago
So for any current features, cost of fixing bugs and do trivial adjustments should be very low. But working on new things should have a great ROI, especially because what’s existing can be reused as a foundation.
Comment by andsoitis 6 hours ago
More useful would be to be able to explain at some high level what the the inherent and accidental complexity is, the tradeoffs to navigate, long-term vs short-term decisions, etc.
Saying "it is hard" makes the audience think you're less of an expert in your domain and they are then inclined to find someone who doesn't say "this work is hard".
Comment by LastTrain 6 hours ago
Comment by aDyslecticCrow 5 hours ago
Are we though? Despite the massive growth of the "AI industry", have the self-driving cars gotten much better than the steady snails-pace we've had for two decades?
We've gotten better at data-processing; but that was only half of making a car move around safely on a road.
Comment by high_na_euv 6 hours ago
Comment by LastTrain 4 hours ago
Comment by mikestew 6 hours ago
Comment by joshdavham 6 hours ago
Thanks for writing this!
Comment by scottyah 6 hours ago
Comment by davidhegarty 6 hours ago
…which is always how I explain legacy code.
Comment by jbverschoor 5 hours ago
Comment by vanschelven 6 hours ago
Comment by jmclnx 6 hours ago
* If a business person thinks a change or new program is very easy to do, it is really a very hard project.
* If a business person thinks the change or new program us hard to do, usually it is a trivial project.
For me, this has been true for well over 40 years. I never use any kind AI for my work, it did not exist before I retired.
Comment by etothepii 6 hours ago
If it's easy and the business thinks it's easy it gets done. If it's hard and the business thinks it's hard it doesn't.
Comment by zvr 6 hours ago
Comment by tristor 6 hours ago
Comment by sublinear 6 hours ago
Comment by YuechenLi 5 hours ago
Yeah, I'm not sure that's a good idea. At the end of the day, Lovable is still a TypeScript web-app with a Supabase backend full stack system. If you don't understand what you have the LLMs actually build, then there is no way you can maintain it or debug it if something goes wrong.
All these no code/vibe code website generators don't make the code go away; the code maintenance burden just shifted to somebody else.
Comment by pianopatrick 6 hours ago
Like in 1 to 5 years, vibe coding without looking at the code will likely be a lot better.