28 Days - Talk Recap - Elixir in Production
I very recently gave a talk at the Atlanta Elixir Meetup called “Elixir in Production”. The talk was fairly broad, but focused on what is needed to talk Elixir into production from both a personal and technical standpoint.
One of the prevailing messages that I focus on is that the decision to use a technology is not just about working out technical challenges and mastering the technology over time. Rather, I think that the “human element” needs to be considered early and often.
As an overarching theme, empathy and caring for others on the team is crucial. All objectives and goals should keep the engineers on the team in mind. Questions like “how will this affect my day to day” or “what mentorship will be available for me” should be considered in putting together any timelines.
In order to establish a healthy level of expertise and mentorship, I break down two distinct roles which are useful in rolling out a new language: champions and helpers. The champion (1-2 per team) are going to focus on overcoming any obstacles to roll out the new technology. Champions are people who can stand to be interrupted to help out others on the team. On top of champions, helpers who help out with questions and expertise are established as the technology is implemented.
As team members gain knowledge, expertise, and motivation behind the new tech, critical mass can be established. Use this to accelerate the objectives and bring more team members into the mix.
Of course, the human element isn’t everything. There is ideation, implementation, and maintenance to be conquered in bringing Elixir to the organization.
Existing technology requirements should be considered early. In established technology stacks, some pieces are going to be non-negotiable. There may be proprietary authentication systems, databases, etc which need to be integrated with from day 1. Knowing about these and planning for them early, rather than by surprise later, may help speed along the process.
I have really enjoyed two different articles by Hamidreza Soleimani: Erlang Scheduler Details and Why It Matters and Erlang Garbage Collection Details and Why It Matters. I found both of these posts to be among the best in terms of understanding core parts of the erlang runtime.
Finally, there are operational needs from deploying the app to maintaining it in production. These differ greatly based on an organization, but there are some clear patterns that win out in Elixir. Whatever you end up with, I would expect high upfront cost followed by quicker times in the future.
Thanks for reading the 13th post in my 28 days of Elixir. Keep up through the month of February to see if I can stand subjecting myself to 28 days of straight writing. I am looking for new topics to write about, so please reach out if there’s anything you really want to see!