When PagerDuty was founded, development speed was of the essence.
This is common for most of the startups. The goal is not to have an unlimited scalability solution (which doesn’t exist anyway), but to make something that is good enough to find customers as soon as possible. Usually, in the beginning, you pick the programming language that you are most confident with, in the case of PagerDuty they went with Ruby. When they found out that Ruby was not scaling enough for the customer demand, they started using Scala.
The article explains very well what are the difficulties that they found using Ruby and Scala, and they didn’t really found any solution. The author realized that one of the solutions could be Erlang/Elixir, and he found an internal project that can be used as a test case for Elixir. Now Elixir grew inside the company, and they are often meeting with the Elixir community to learn more (and find potentially interested engineers to join PagerDuty).
I think this article explains exactly how a company should approach the adoption of a new programming language internally. Every company should follow this structure. If a new company starts with a programming language they are not comfortable with, they will be extremely slow in the beginning and they may do a lot of silly mistakes, and if an established company decides to use a new programming language, and the first project is huge, they will lose a lot of time to have it production-ready, and the benefit will not be enough for the company to decide to stick with it, so it may be a complete waste of time. This approach is the perfect one: Start with the programming language you are most comfortable with, and once you grow you can experiment with new programming languages in a small test case that is important enough for production but it is not the biggest problem if you need to rewrite it later. With this approach now PagerDuty is using Elixir in many production services, and it is successfully growing within the company.