Had an interesting discussion with a colleague about AI.

Companies investing in AI are seeking to turn software development to manufacture code. They look to adopt a factory model to generate software focused on producing features, using automation and reducing the number of "skilled" workers to a small team.

Traditional software development is more craftsmanship.  It's slower, but more thoughtful and there's generally a reason it costs more. It's also where there can be a lot of creativity and innovation.

What I found really interesting, is that thinking about AI as Manufacturing is really interesting to me. The reason that the US is so far behind right now is because we have lost our Tool & Die industry. That's work that you can't automate, and it generally tends to be more of a craft, since you're not producing hundreds of dies. China is particularly good at Tool & Die, which is why all manufacturing now happens there.

Senior Devs are the Tool & Die of Software. We're not replacing them as they leave.

Again, all of this is both sad and hilarious to me. We USA folk keep trying to find new ways to self sabotage.

(edit: typo)

@jrconlin I fully agree.

Software is infinitely re-usable. That's why we rarely write the same software twice. That's why writing software is a craft.

But, the key word here is "development". Creating software isn't a production task, it's an R&D task. That means that a mistake in development affects all production going forward until it is fixed. Like a Ford Pinto fuel tank or a Stellantis PureTech wet belt. Development of anything doesn't automate the way production does.

@jbqueru

Heh. Software development is a production task, to people who don't understand what software development is. They're the same people who want you to use a generic tool which solves 80% of the problem but you spend most of your effort on that last 20%. It's all efficiency and optimization on paper, but without understanding the problem they're trying to solve.

That's why they love the idea of commodity resources; fungible assets that can be quickly and easily replaced. For them the goal is to produce, not provide.  Flood the market with features to constantly capture novelty, without providing the support for enduring commitments.

For them, knowing that LLMs produce disposable, unmaintainable code is a feature. They were going to drop that feature later when it doesn't meet their metrics anyway.

@jrconlin Spot on. And the final nail in that coffin is that the deciders assume that they can just have senior engineers implement the last 20%, and debug issues once in production, and do the detective work to delete dead code, if they're even aware that those tasks exist beyond "why does it take so long to develop new features?", without asking themselves where senior engineers come from.