Users couldn't care less about a perfect domain model, dependency injection or asynchronous yada yada.
They care if it works and Product Developers know this.
"Drivers don't care about different ways of reinforcing concrete or finite element modelling or yada yada, they just care if the bridge works."
If the users don't care, it's because they don't really understand why the software they pay for and put up with over the years becomes an unmaintainable nightmare...
And then a competitor pops up and they are dealing with the same sized data blazingly fast, instantly from the user's perspective.
And you look into it and they are using the same technology stack you are using.
It's at that point that you might start to care about the difference between a linked list and a hash table.
Of course users care about page load time - scalability should be built in to an application from day one (I never said otherwise). Modern Paas services allow for this more or less out of the box so there's no excuse not to have scalability built in.
I've built apps that scale well (over 100 concurrent users) but have still never had to worry about whether to use a linked list or a hash table.
I would call your product developer a cowboy programmer. Been there, done that, after the cowboy leaves the result is a maintenance nightmare.
I meant that product developers know when something is good enough (or "will do for now") whilst IMO software developers want to iterate and iterate to a perfect, elegant solution.
Don't get me wrong, the latter may be the correct choice to take but only when its for a feature that people are actually using.
From a business perspective, a software developer who is sitting on functionality thats "not quite right yet" is the cowboy programmer. But I guess thats just perspectives for ya :-)