Elixir Users' Survey 2016 Results

Each year since 2014 I have surveyed the Elixir community about its use of the language and the makeup of the community. I started this survey three years ago as part of ElixirSips, and am continuing it as part of my new startup DailyDrip.

Obvious Marketing Plug: If you think the Elixir community needs an amazing reference project, or that a world class, modern, and Open Source Phoenix-based forum should exist, then check out Firestorm Forum over on Kickstarter. It’s fully funded with just six days to go, but we’d love your support in creating a truly great piece of Open Source Software - anything helps!

As part of the Firestorm effort we’ll be publishing a whole month of beginning Elixir content -- free to everyone. That’ll be 8 screencasts and 12 short written pieces that will teach beginning Elixir users everything they need to know in convenient five minute chunks. We’ll cover the basics of Elixir, OTP, Phoenix, and Ecto. Through ElixirSips and DailyDrip, I’ve helped educate thousands of Elixir developers, and I’ll make sure that this is the best work I’ve done yet.

We hope you enjoy the results of the 2016 Elixir Users’ Survey.

A Look Back

We’ve seen significant growth in the Elixir community over the last three years. In 2014 there were only 191 responses, but this year there were 1,109 responses. That’s 580% growth in three years! Here’s the graph of our growth over time.

Growth in the Elixir community over the years

This year’s results

Now, let’s look at the actual data from this year and discuss what it might mean.

Desktop vs Mobile

It’s fun to look at metrics on the types of devices people used. We had 1,885 unique visitors and, of those, 1,109 filled out the survey. I am curious why only 40% of potential respondents finished the survey. Perhaps because it took over 12 minutes to complete!

About 75% of visitors were on their PCs with the remainder on their smartphones. People that answered the survey from their phones seemed to finish significantly faster. This is completely irrelevant to Elixir, but I find it interesting!

Now let’s look at each question and how respondents reacted.

How many months have you been using Elixir?

Months using Elixir

The overwhelming majority of Elixir Users have been using the language for less than a year. This makes sense when you appreciate that the user base of the language has been more than doubling in size each year!

What was your primary language before getting interested in Elixir?

Primary language prior to Elixir

The majority of Elixir Users moved over from Ruby. There is a strong showing from a number of other languages including: JavaScript, Python, Java, PHP, C#, C, and C++.

How much do you anticipate using Elixir professionally in the next 12 months?

How much will you use Elixir professionally next year?

Most respondents anticipate using Elixir on a few projects or prototypes. Over one-third of respondents will be using it with more than 2 projects or rely on it heavily. This breakdown is expected with over half of Elixir users being new to the language.

What is your text editor preference?

Preferred Text Editor

The majority of users are still using vim, although Atom and Sublime Text are doing well. I am surprised there were fewer emacs users than the non-modal editors. I had expected emacs to have a stronger showing due to the excellent Alchemist package.

For the Elixir developers using vim: I’ve recently reworked my vim setup and switched to neovim. I’m really enjoying this new setup; it’s increased my productivity significantly. Check out the full walkthrough here!

How would you rate your Elixir expertise?

Elixir expertise

The pace of growth means we’re bound to have a ton of people with average expertise, but the fact that over 25% of respondents rate themselves above average means there are lots of people to ask for help now!

How would you rate your OTP expertise?

OTP expertise

A whopping 71% of Elixir developers rate their OTP experience as below average. This tells me that we need to do a better job as a community on OTP-related outreach. Fault tolerance is one of the biggest selling points of Elixir, and OTP is the path to it.

This also implies that people are building monoliths -- we should avoid monoliths! Huge props to the Phoenix Framework for making great strides in encouraging the use of OTP, as discussed in Chris McCord’s Elixir and Phoenix Conf 2016 Keynote.

One thing I’d like to note: answers to this question may be skewed by modesty. I’ve spoken with people that I find very knowledgeable, and they still consider themselves average in OTP experience. Let’s fix this!

What are your thoughts on automated testing?

Thoughts on testing

The responses to this question made me happy. An overwhelming 92% of users appreciate the value of testing, with about half of them doing it all the time!. This is a pretty good showing for our community! I think it’s related to the excellent tooling that Elixir provides -- for instance, shipping with ExUnit and supporting doctests. Upcoming languages, take note!

Have you contributed open source code in the past year?

Contributed to open source?

I don’t have numbers on other communities’ open source contributions; if you do, please share in the comments. It is likely that the Elixir community represents itself in the top tier with Open Source contributions. As an open source zealot, this makes me unbelievably happy. I’d love to hear your thoughts on how we can bring the 28% that haven’t contributed into the fold. Drop them in the comments and let’s do it!

I added the Communist response because I always enjoy seeing people answer with it. Depending on their ideological stance, this could be interpreted in varying ways :)

What is your employment status?

Employment status

96% of Elixir developers are gainfully employed, and this is better than the US average for the year. As for the 4% unemployed -- here are a few resources to get this sorted!

If you exhaust that and still can’t get sorted, DM me (@josh) on the Elixir Slack and I’ll see if I can be helpful. I hope I don’t come to regret that last bit :)

Which of these languages do you regularly use?

Which languages do you regularly use?

JavaScript and Ruby each appear to be heavily in use by the majority of respondents. JavaScript taking the top spot makes sense, since it’s essentially a requirement for anything on the frontend. If you’re looking to have a better experience than JavaScript, I suggest Elm. I’ve produced over 31 weeks of content teaching Elm on DailyDrip, and I guarantee it can get you up to speed quickly.

Outside of the top 2 spots, we see Python, Java, PHP, C#, C, and C++ each with over 10%. There was a heavy contingent of Other, so follow this footnote to see languages I left off the list. 1

Is Elixir your favorite programming language?

Is elixir your favorite language?

The majority of respondents say they prefer Elixir, with only 8% saying no. One-third of developers said it was complicated. I really wish I’d provided a way to get a long form answer from those respondents. If you were one, add your reasoning to the comments! Let’s talk about it.

Which Elixir version are you running on?

Elixir version

An impressive 94% of users are on the latest major Elixir release -- which is great uptake! Some of them still have 1.2 projects running. There are 6 people using Elixir prior to 1.0 still! Wow! I’m assuming they’re just production apps that are chugging along without problems.

Which packages and frameworks are you using?

Packages and Frameworks

We wanted to find out what frameworks and packages people were using. Overwhelmingly, Elixir users are building web applications -- but read on to find out how that is not the whole story. Additionally, Nerves comes in pretty strong, which is fantastic! There’s a great list of interesting packages included in the Other responses as well. 2

What other languages do you want to spend time with this year?

What languages do you want to play with?

Elm is dominant, which is thrilling because I love Elm! I am also excited to see Erlang and Rust going toe to toe with Ruby and JavaScript. I loved seeing Lasp get 2% too!

My biggest takeaway from this is that we are a Community of Polyglots. What’s not to love? Programming == Good.

There were, of course, some languages I left off of the list, even though I put 58 languages into it. Follow this fancy footnote to read the whole list. 3

What other BEAM languages are you interested in?

Other BEAM languages

Elixir is but one of the languages that compiles down to Erlang’s Virtual Machine: the BEAM. Most respondents seemed unaware that there were others. Of the respondents that were aware, Lisp-Flavoured Erlang and ML-Flavoured Erlang have the most interest. I was impressed with the number or responses to the other options listed, and some people shared additional options I had omitted. 4

In what environment are you using Elixir?

Elixir environment

Earlier we saw that 95% of Elixir users use Phoenix, but this question’s answers show that nearly 25% of the community is doing something non-Web as well! Follow the trail to find a long list! 5

Is Elixir your first FP language?

Is Elixir your first FP language?

It is interesting that nearly half of new Elixir users have not experienced Functional Programming before. This strikes me as something that the broader programming community needs to work on correcting! We’d love to hear your suggestions on how to solve this problem and bring exposure to FP in the comments.

If Elixir is not your first FP language, do you prefer it over others you've used?

Do you prefer Elixir over other FP languages?

The majority of respondents that have used FP languages previously prefer Elixir. However, there were 721 responses to this question while only 574 people said they had previous FP experience. Consequently, this metric should be taken with an appropriately-sized grain of salt.

Would you say that learning Elixir has changed the way you think about programming and architecting your code and applications?

Has Elixir changed your brain?

Almost everyone says Elixir and OTP have changed the way they build applications. I am not even a little surprised at this answer. Erlang was eye-opening for me!

How are you deploying your Elixir apps?

How do you deploy?

I have two deployment-related takeaways from this. First, we as a community should find a way to expose new users to releases earlier in their Elixir experience. Secondly, we need more examples that clarify the simplicity and value of Erlang’s distribution -- Docker and Heroku inherently cripple the value the Virtual Machine can provide.

There were also quite a few other deployment processes that respondents called out which, as you might have guessed, are on the other side of this footnote. 6

In summary

I love these surveys so much, because they highlight such a great community that we have building around Elixir. Our open source contributions are high. We are growing fast and everyone is contributing. By identifying education issues around OTP and releases, we know where to focus our attention on teaching and documentation for the next year. Everyone has jobs. The state of the Elixir union is strong.

And please don’t forget about Firestorm Forum! We want to build something amazing: an Open Source Elixir & Phoenix backed forum, with a sweet, modern Elm front-end. Then we want to use that platform to teach Elixir and Phoenix to everyone for free. We’re excited to do what we can to help grow our community, and we need help.

We hope you enjoyed the 2016 Elixir Users’ Survey, and we’ll see you in 2017!

  1. NOTE: There were a substantial number of additional languages in regular use: 

    • ASM
    • Awk
    • Bash (nerds...but yeah I’m in this list as well)
    • CoffeeScript
    • Common Lisp
    • Crystal (exciting!)
    • Delphi
    • Elixir (I left this off because it seemed obvious, but nice to see it show up!)
    • Elm (woot!)
    • Emacs Lisp
    • Erlang (how did I leave this off)
    • Forth
    • Groovy
    • Haskell (how did I miss this)
    • Haxe
    • Idris
    • Kotlin (I really dig this but don’t write much Java)
    • Lisp-Flavoured Erlang (nice)
    • Lua
    • Objective-C
    • Pascal
    • Powershell (comment was: “I’m a filthy community janitor”)
    • R
    • SQL
    • TypeScript
    • UC4 Script
    • VB.NET
  2. Other packages people mention using follow -- some of these are new to me! 

    • AMQP
    • Absinthe
    • Arc
    • bamboo
    • Brod
    • Calendar
    • Comeonin
    • corsica
    • Cowboy
    • Credo
    • dialyxir
    • distillery
    • earmark
    • erlcloud
    • ESpec
    • ExAdmin
    • ExConstructor
    • Exleveldb
    • ex_machina
    • exrm
    • extreme
    • Exq
    • feeder
    • fsm
    • fuse
    • gproc
    • guardian
    • hackney
    • Happy
    • Honeydew
    • Hound
    • HTTPoison
    • HTTPotion
    • I'm building my own: exlearn
    • Ja_serializer
    • Joken
    • Json
    • KafkaEx
    • logger_file_backend
    • Mariaex
    • Maru
    • Mock
    • moebius
    • mogrify
    • monadex
    • msgpax
    • OTP
    • Plug
    • Poison
    • poolboy
    • portmidi
    • Prometheus
    • Redix
    • Riak Core
    • sweetxml
    • TDS
    • Tesla
    • Timex
    • tirexs
    • trot
    • Ueberauth
    • Verk
    • Whitebread
    • Xmlbuilder
  3. Here’s the list of other languages that people want to spend time with this year: 

    • Bash
    • Bucklescript
    • CSS
    • Ceylon
    • forth
    • GraphQL
    • Hy
    • Kotlin
    • Lisp-Flavoured Erlang
    • Objective-C - how did I miss this?
    • R
    • Red
    • TypeScript
    • Verilog
  4. Other BEAM languages mentioned include: 

    • Core Erlang
    • JavaScript-Flavoured Erlang (which isn't a thing as far as I can tell)
    • Lasp
    • Elmer - I wasn’t aware of this. I’m not convinced it’s the best path to Elm on the BEAM, but of course I’d love to check it out sometime!
    • Erlang
    • And one respondent said: I would be interested in some of these (Haskerl, erlog) if they didn't look abandoned.)
  5. Aside from Web and Embedded, there were a host of additional environments people called out for their use of Elixir. 

    • AMQP messaging
    • APIs
    • Automated share trading
    • Backend
    • Background Processes
    • Billing Reporting System
    • Bioinformatics
    • Bots
    • Building standalone server applications
    • Business Rule Engines
    • CLI
    • Custom non-web servers
    • Daemon
    • Data Processing
    • Database
    • Desktop
    • Developer tooling
    • Distributed Systems
    • Enterprise services
    • Games
    • Games Backend
    • General TCP/IP Servers
    • Homesecurity
    • Industrial
    • Infrastructure
    • Intranet
    • IoT backend, tricky business logic
    • Machine Learning
    • Microservices
    • Middleware
    • Mobile - I'm assuming this is a mobile backend, but if it's not I want details!
    • Online game packet analyzer
    • Puzzle solving (exercism, euler, codewars etc)
    • SMPP
    • SS7 signaling
    • Scraping
    • Scripting
    • Simulation
    • Software-Defined Networking
    • Spiders - Pretty sure this is the same answer as Scraping above, but there's a huge part of me that hopes it's something related to actual spiders.
    • Systems programming
    • Teaching functional and distributed concepts
    • Telecom
    • VPS
    • VoIP
  6. Other means of deployment in use: 

    • AWS CodeDeploy
    • AWS via custom scripts
    • Bottler
    • Capistrano
    • Catalyze.io, which uses Herokuish, so git push to deploy with command line for environment variables
    • CircleCI
    • Compile + debian package + ansible
    • Convox (uses Docker and AWS)
    • Copypasta
    • Custom Deployment
    • Deploy code to server
    • Digital Ocean
    • Distillery
    • Distillery + Docker
    • Distillery to make a build. Custom application (in elixir) to archive and make it available, terraform with chef
    • Dokku
    • Embedded Distribution
    • ExRM and Conform
    • Fabric
    • GCloud App Engine
    • Git pull and mix run. Really. Help me please.
    • Haven't deployed yet
    • Jenkins
    • mix phoenix.server + ansible
    • Nerves
    • Releases + Docker + Kubernetes
    • Releases packed as debian packages
    • Yocto)