Here’s our first Sponsor Spotlight of 2019, with Podium!
Please tell us a little bit about Podium
Podium was founded in 2014 in the Lehi, Utah area, originally as a way to help local businesses get more reviews using text messaging. We’ve since expanded into an Interaction Management™ platform, where we handle all of a business’s external and internal communications (through SMS, Facebook chat, reviews, etc).
How did you discover Elixir?
Our developers were aware of Elixir mostly from being involved with Ruby, so when the opportunity presented itself to write some new apps in Elixir we jumped on it.
What attracted you to Elixir the most, or what was the biggest advantage of Elixir that was most relevant to you and what you do?
The initial attraction was in its performance and reliability. Having a single monolithic app in any language is bound to be slow, so besides wanting to branch out into microservices, we wanted to invest in a language and framework that was going to be fast and that wasn’t going to crash. The functional aspect of Elixir was also a factor, in our Rails app, there was a lot of implicit, “magic” things going on that only a handful of us understood. Elixir is a lot more explicit and easier to reason with.
How big is your dev team?
About 90 engineers and growing to more than 160 by the end of 2019. Come join us! https://www.podium.com/careers
How many of your developers work with Elixir?
Almost all of them. We have created an engineering culture where all of our engineers should be full-stack.
How did you train your developers?
In the beginning, we just learned it as we went, writing small microservices and some bigger projects. Then we started going to (and then hosting) Elixir lunch meetups, and have instituted weekly Elixir trainings. We also have subscriptions to several training sites and regularly send developers to conferences to learn there.
What are your policies on remote work?
Developers are fine to work from home on occasion, but we have a highly collaborative culture here, so we like them to be in the office most of the time. We are, however, looking into adding remote offices, so that an entire team can work together and still have that collaborative environment, but live outside of Utah.
What kind of Elixir related projects have you worked on and how are you using Elixir generally?
We use Elixir for everything; URL shortening, web crawling, messaging (SMS, internal chats, Facebook Messenger, Google Maps messaging, Apple Business Chat, etc), payment processing, integrating with multiple CRM systems, running analytics, etc. The only things we have that aren’t in Elixir are our old Rails monolith and a couple of on-premise integrations that have to run in C#.
Were there any difficulties in transitioning to Elixir?
Since we were still fairly small we could slowly transition to Elixir as we added features. We let the Rails app continue to do its thing, and any new features we built were generally part of a new microservice, that talked to the Rails app as necessary. The only real struggle has been that since the Rails app is the central place to handle users and authorization (though that’s slowly changing), it has at times been a bit of a bottleneck.
Are there any architectures or methodologies in particular that you follow?
All teams do a Monday morning standup + sprint planning. We work on 1-week sprints. We put a lot of trust in our PM’s and Team Leads so not all teams function the same. We have highly autonomous teams that are always experimenting with their processes and what works best for their team dynamic.
Some other fun things we do:
- Every other Friday we end our 1-week sprint 1 day early to do something that we call “Friday Fury”. This is an opportunity to really focus on the customer and deliver small but impactful changes to our code base. This could be anything from UI / UX papercuts to small features and bug fixes. Our engineers really like this as it breaks up the “normal” work week and gives a fun “hackathon” kinda feel.
Which database systems do you use the most?
Which front end technologies do you use the most?
React and Graphql, with our mobile app in React Native
What was your primary language before you discovered Elixir?
How happy are you with your choice in using Elixir?
Very happy. Elixir has helped our ability to rapidly grow and scale, and has allowed our developers to feel like a part of a more exclusive community. Not many of the bigger companies around us are using Elixir, and even fewer have more than a couple of services using it. That said, there’s still a lot of interest in Elixir here, so we get to feel cool and lucky to be using it to the extent that we are.
What would you say to other companies thinking about adopting Elixir?
Just do it. You don’t need to rewrite your whole stack today, just try it out in a couple of new microservices. Once you’ve discovered that your Elixir apps pretty much never go down, you can start rewriting your old stuff.
Thank you for answering our questions! Is there anything else you’d like to share? Any plans? News? Tips?
We are in the process of opening an Engineering office in Sao Paulo Brazil! We will have more updates coming soon!
Very interesting to read. It would be nice to know who exactly of Podium answers the questions. Is it a founder, CEO, a longtime employee?
Hi Nefcairon, this is CJ from Podium. The person who answered the questions is one of our first engineering hires. He also wrote this article about our experience with Elixir over the last 2 years https://link.medium.com/H7ClunTqKT.
There are a few of us here that will be posting from the Podium account on the forum.