2. At the Start
• Some organizations can be slow to adopt new technology
• The easiest and fastest way to introduce something new
is by educating your peers
• You need to drive the hype train!
3. Provide Education
• People won’t use something that they don’t understand
and what’s worse, they won’t want to support it!
• Provide analogies and similarities to your current
technology
• Show some of the unique features (pipeline operator,
pattern matching, guard clauses)
• Ask and answer questions! Provide a bridge from your
company to the community at large!
4. Got problems? Maybe Elixir
can be a solution!
• Ask yourself or your coworkers what common problems
you see
• Show off features that can address common pain points
5. What about Hiring?
• Create great education resources!
• This not only helps with your current peers but removes a
bar to Elixir adoption at your company!
• It’s easy to hire a good developer than it is to hire a
developer for a specific language (especially one that’s
new!)
6. Convincing your
management
• When all else fails, try numbers!
• The mroth/phoenix-showdown benchmark numbers are a
great resource to show to convince others!
• Functional programming is a proven way to reduce risk of
mutable state and hard-to-track bugs!
• Anyone who has worked on a large dynamic language
codebase has experienced what could be best-described
as a “wibbly-wobbly timey-wimey state bug”
7. Maintainability
• Better testability through functional programming? Check!
• Cleaner code through less mutable state? Check!
• Pattern matching and guard clauses to have functions
that truly have one purpose and path? Check!
8. Moving from a monolith
• Odds are if you have a large monolithic app, you’re
already considering doing something to mitigate that over
time. Why not consider Elixir for high-traffic portions or
portions that require great concurrency?
9. Already have separate
services or apps?
• Great! Pick one of those that is a good target (again, high
traffic/large concurrency needs) and one that responds
well to an input->processing->output model.
10. When all else fails…
• …show them the pipeline operator!