One such force is that compensation tends to increase more quickly, at least in the early stages of a career, with rapid job-hopping. This leads to the kind of title inflation mentioned in the article, and in the extreme case you get the 27-year-old founder/CTO who has an impressive-looking list of former employers on their résumé yet who has never built a substantial software system from scratch nor maintained an existing system for more than a year or two.
Another force pushing towards short-termism is that lot of new software simply isn’t expected or intended to last. The commercial incentives to invest in building robust, future-proof software are often outweighed by the commercial incentives to deliver early and deal with any problems if and when you get to v2. But then v2 has to be shipped early, and… Issues with reliability, scalability, performance and security just get kicked down the road until the next big rewrite, and writing maintainable code that can support ongoing development for a long time is unnecessary if you’re going to throw it all out and start over within a year or two anyway. Eventually, if the business hasn’t failed along the way, it reaches a level of maturity where it’s worth investing in these things more seriously, and then you do need developers who know what they’re doing. But by then a lot of the cool kids have moved on to throwing stuff at their next employer’s wall to see what sticks.
Of course there are parts of the industry that don’t follow this pattern and do have serious quality and longevity requirements for what they are building. However, they don’t tend to be in today’s fashionable parts of the industry like web app and mobile app development. As a result they may not be so attractive to the expert beginner, which is unfortunate because the expert beginner is not then exposed to better ways of doing things that are used routinely out of necessity in more demanding environments.