it's worse than that and will never get better - because everyone is trying to make it better - on their own.
Everyone re-invents the wheel because that is faster than understanding the wheel. There are fifty-billion wheels and it will take you weeks to just survey the existing wheels or the favourite wheels or the wheels that most people are using. Then you realise that some wheels are no longer maintained - which could mean that there is nothing left to fix actually, but nobody wants to take the chance that it means it is somehow totally broken and you will never get anyone to fix it. Some wheels have been maintained for so long that the feature list is full of esoteric and incompatible options and they are too bloated or too complex to use in your application. Besides, the only part of the wheel you really need right now is the hub and the rim - the rest you can worry about later - so you decide to make your own mini wheel. You never get around to evaluating the other wheels because you have a wheel that is fine, except when it needs a new feature, which you add. Soon the wheel becomes a library or a package or a framework and it becomes another wheel in the world of wheels that some people will use (and many will ignore) and the more it is used the more features will be requested until it's just another incompatible bloated wheel like all the rest and everybody starting a new project knows that all the wheels are bad and they can do better and besides, they just need a hub and a rim and that will be quicker than evaluating the other wheels ... and round, and round, and round.
From time to time we create a new language so we can try to create better described new wheels this time but we always run into the same problems that made the old wheels bad when we get to the edge cases. And what goes for wheels, goes for languages.
You end up with dungpiles made of dungpiles on top of other dungpiles - and if you change one of the dungpiles all the other dung will fall all over the place.