Also, I think people want to attract others to their tool of choice due to the positive network externalities involved.
Also, I think people want to attract others to their tool of choice due to the positive network externalities involved.
This is huge point. I've wasted so much time in my life fighting about what technology to use on a project- with people that aren't actually going to be writing any code on the project. Why do people care SO MUCH about what technology is used on project- even when it's a project they are NOT ON? Positive network externalities sums it up pretty well.
The crazy thing programming is that it defines people's mental models around problems. The common chestnut of Java programmers using iterative techniques in SQL stored procedures, as opposed to set based operations is borne out in reality. The different mental models associated with different languages make it hard to switch too often.
To use your examples: why learn Erlang? Well, if your concurrency needs are great enough, Erlang is a great fit! If not, maybe consider another language? You pick the best and most appropriate tool for the job. Sometimes you can nail something in using your shoe, but more often than not, the best tool is a hammer.
Why learn Ruby if you know Python? Perhaps you have a project that could be taken to market significantly faster if you use Rails? Perhaps you can use Django? It really _is_ a question of the right tool: and sometimes that tool is Ruby and sometimes it's Python and sometimes it's Java (never COBOL :)).
You could probably make a strong case for any language out there. But you should make sure you're choosing the right one for your task: square pegs and square holes.