what I think happens is that companies try to hire the best talent they can find for their money and tell fairy tales how they are modern and foward-looking company with the vision that is going to change the world - and of course devs will internalize that and will try to apply craftsmanship to their daily work, and then you will have problem of shipping on time and on budget.
if managers told exactly and upfront that the products must be hacked together and asap and the quality is NOT the goal, that the goal is to ship shiny new thing quickly to impress VC suits in next N months, and get their funding check and continue this loop until the company finds its exit in form of IPO/acquisition/etc - everything would be honest, upfront, efficient, and conflict free.
On the best places, a lot of the communication problems come from the fact that managers tend to willfully ignore the fact that low quality is a losing proposition at the long term, and developers tend to willfully ignore the fact that short term only gains have value.
On the worst places, communication problems tend to come from the fact that management wants to artificially prop the numbers before they get a way to jump ship, defrauding everybody else, so they simply can not be honest.
All the bonsai-like rules about software jewellery have zero value in those industries.
What those company owners and management departments care about is their main business line, as long as those boxes keep shipping or people keep buying their stuff, they couldn't care one second how the sausage is made.
It is easy to blame all the major consulting sweet shops for the quality of delivered work, while in most cases what gets delivered is what customers (e.g. management board) are willing to pay for.
Just ranting out loud, not targeting anyone.
More generally, I feel like tech needs some breakthroughs in the "create more value than you capture" (Tim Orielly 2008) sense, where it is tech itself that is the product, rather than a product built of tech, that is trying to be created. Exposing & opening the tech, making the tech accessible. This is a far off point, not one I'd want to reduce the discussion to, but I think in general we've had a lack of technical leadership that's deflated our general sense of how core, critical, & powerful this general drift is.
I very much agree, that it's all very complicated.
We don’t always do good enough... some times we need extremely well done due to the sensitive nature of the code.. it all depends.
There seems to be a polarized view of "jewels are worthless, just ship" or "we need more jewels". Both perspectives are dangerous.
Software-jewels have a place, but you have to be selective about what code needs to be that level of quality. And like so many decisions in software development, it's about the trade-offs.
If we're writing experimental code with a low shelf-life or internal tooling, we are better off writing code we expect to throw away completely. Writing high quality code here will take time away from making code quality high in areas where it's important.
On the other hand, if there are some subsystems critical to our business--we want them robust, extensible, and fast--they are good candidates for "jewel" quality. But you have to allow the time needed for a potential rewrite and more thoughtful architecture.
Except Google, Microsoft and Apple.
Rarely are technics given first seat at companies. We talk about being product organizations or engineering organizations but I feel like in both cases there is still enormous political processes that most engineers face in their urge to do the right thing. And sussing out, helping the company internalize which bits are of lasting value, done well, &bought be enshrined &built upon, sharing & syndicating these notions out: it re-becomes political almost immediately.
I had a rather long-winded reply to "software is a losers game" that surmized a lot of the challenges & environments of software development together[2]. I think it helps explain some of why the field so rarely, clearly excels.
[1] https://www.tlt21.com/why-software-engineers-should-become-c...
[2] https://news.ycombinator.com/item?id=26661164