I'll start with two questions:
- Is complexity inevitable in software development?
- How much of this complexity is our failure to curb "accidental complexity" which we are the ones to introduce to begin with?
Let us use a couple of popular tools as examples: Rust and React.
For what I've gathered Rust has has been developed out of need. The need to manage systems programming, manual memory management and the development of software that sits very close to the operating system. Its complexity is intrinsic to the problems it had to solve initially.
React has been developed out of need as well. The need to manage a massive frontend code base at Facebook. Its complexity is intrinsic to the problems it had to solve initially.
As any software developer knows, tools intended for a purpose are easily going to be used for anything else but that initial purpose. It's normal, we're humans. It's not like Rust or React creators have a direct line with all the developers out there.
This goes back to the second of my initial questions: is a tool developed and managed by a company, worth several hundreds of billions of dollars, to handle a massive frontend code base going to be accidental complexity when applied to the 99.99% of projects which are infinitely smaller?
If you're not familiar with the difference between essential/intrinsic complexity and accidental complexity I suggest you this post:
Is the push towards React's adoption only a positive or could it have effectively hurt some companies business over the years?
Is using Rust for your average web application a good idea? Is using Rust for anything other than systems programming a good idea? Is using React for anything other than a complex frontend a good idea?
We all know how the wrong tool chosen at the wrong time can affect a company's prospects. So, when people choose a tool before having written any lines of code, are they betting they will be able to manage the complexity it brings or are they really making an informed choice?
Evidence tells us you can build successful products with or without either Rust or React, so that's a given but the problem, as always, isn't in the tool per se.
I think Nat Allison here has a point:
Are we software developers simply bad at making choices for a thousand different reasons?