I would add to the list: 13. CV driven development 14. developers with no interest in the underlying domain they are trying to solve making bad design decisions 15. excessive bureaucracy of IT department & rigid policies
As a contractor, I was compelled to learn those technologies because the companies were demanding these skills, not because I had a desire to learn another scripting language or whatever. Of course, it's often (senior) developers within the company that push the new, less-well-travelled technologies and the cycle repeats.
I guess the lesson is, don't let frontend developers dictate that JavaScript should be on the server, or is in fact a good language for desktop apps and so on.