But aren't users demanding more and more features from software as time goes on, and won't this added size and complexity create additional work for programmers even though the stuff we did in the previous release is now easier to do? For example, compare the amount of software that went into a phone ten years ago with the gigabytes of software that sits on a smartphone today, or the complexity of the UI on a phone ten years ago vs. today. Not to mention the increased functionality of the servers at the back-ends of all these apps.
Also, if you're starting a project from scratch, you can use the latest and most streamlined technology. But if you're supporting a large code base (millions of lines of code) and adding features to it, you can't just suddenly re-write all your code to use the latest techniques. Also, you may be locked into a technology by your customers. For example, in the enterprise software space, lots of customers have a huge investment in Java application servers on which all their software runs, and if you want to compete in that space, it's easier to sell them a Java-based system than it is to convince them to install and learn to support a Ruby-based system just to run your product. And there's probably much more code (and programmers) in enterprise software -- think of all the software that supports banks, insurance companies, hospitals, government agencies, pharmaceutical companies, etc. -- than in the start-up world. I don't think AI is going to make a dent in that huge, complex pile of legacy software any time soon.