State of the BEAM 2017: Survey Results

Intro

You can't improve what you don't measure, and since I think there are areas in the BEAM community (Erlang, Elixir, LFE, Efene, Alpaca, Clojerl et al.) to improve we need to have a better picture of it.

That's why some months ago I decided to create this survey, I told to some people and started researching other "State of the X Community" yearly surveys, I wrote some draft questions and published to some people for feedback, after a couple of rounds I made a Form and ran a test survey for more feedback, after a couple dozen answers I cleared the results and announced it publicly with a weakly reminder on multiple channels.

Result Analysis

We got 423 Responses up to this point.

I present the results of the State of the BEAM Survey 2017 here in two ways:

  • Bar charts sorted by most answers to less
    • On questions with many answers I make a cut at some point
  • Raw data tables sorted by most answers to less
    • Here I did some consolidation of answers to avoid making them too large

I was thinking on doing a deep analysis on the answers but later I realized that if I did an analysis many people would read mine and avoid analyzing it themselves in detail.

Instead I decided to open an analysis thread in some forum and later maybe summarize the most interesting comments.

To ease the discussion I will do some light observations where I see it makes sense and make some questions to open the discussion.

Before diving into the result I want to make explicit two things that may make the results less representative than they should:

1. The "Elixir Effect"

I think the Elixir community is bigger or at least more active than the rest of the BEAM community, because of that and the fact that Elixir already has its own survey, I decided not to promote this survey there, to avoid the number of Elixir specific answers to skew the results and make this survey just be yet another Elixir survey with some BEAMers also replying.

With this clarification, and looking at the answers, I can identify some answers that are from Elixir-only developers, you can see that when some Elixir specific tools appear in the answers (Mix, ExUnit, Distillery, deploy to Heroku etc.), just keep that in mind when analyzing the results.

2. The "Survivorship Bias Effect"

From the wikipedia article on Survivorship bias

Survivorship bias or survival bias is the logical error of concentrating on the people or things that made it past some selection process and overlooking those that did not, typically because of their lack of visibility. This can lead to false conclusions in several different ways. It is a form of selection bias.

Survivorship bias can lead to overly optimistic beliefs because failures are ignored, such as when companies that no longer exist are excluded from analyses of financial performance.

/galleries/state-of-beam-2017/Survivorship-bias.png

The damaged portions of returning planes show locations where they can take a hit and still return home safely; those hit in other places do not survive.

This survey is done on people that wanted to learn Erlang, learned it, and are still active enough on the community to see the survey announcement.

This means that the answers are from the ones that "survived", which makes it really hard to get good feedback on the bad parts of the language, tooling and community since the most affected by it aren't going to stay around to fill this survey.

How to reach those? I don't know, propose solutions on the discussion.

I forgot to ask if I could make public the name of the companies so I won't, but I can say that I got 202 responses and most of them are not duplicates.

Things to improve for next year

  • Ask users if they want their answers available to be distributed in raw form for others to analyze
  • Ask users if I can share publicly the name of the company where they use Erlang
  • Decide what to do about Elixir-only replies, maybe make a question about it
  • Make specific questions regarding better tooling
  • I forgot Russia and Central America options, maybe next time do Latin America?

Let's see the results!

Which languages of the BEAM do you use?

/galleries/state-of-beam-2017/lang.png

Clearly Erlang is the most used language, ignoring the Elixir Effect, I'm kind of disappointed by the lack of users trying alternative languages. More so given the fact that many of the complaints or requests in other questions are already solved by other languages in the ecosystem, for example "better macros" or lisp inspired features being solved by LFE, static/stronger typing or better static analysis being solved by Alpaca, Elixir's pipe operator and a more mainstream syntax being solved by Efene.

My advice to the community, try the other languages, blog/tweet about it and share feedback with their creators, there's a language for each taste!

Erlang 326 54.42%
Elixir 231 38.56%
LFE 14 2.34%
Luerl 12 2.00%
Alpaca 9 1.50%
Clojerl 4 0.67%
Erlog 1 0.17%
Efene 1 0.17%
PHP 1 0.17%

How would you characterize your use of BEAM Languages today?

/galleries/state-of-beam-2017/use.png

Many people using it for serious stuff, the Open Source answer is really low here but is contradicted by another answer below.

I think I should add another option for something like "experiments", "try new ideas".

I use it at work 327 48.66%
I use it for serious "hobby" projects 245 36.46%
I'm just tinkering 62 9.23%
I use it for my studies 35 5.21%
Learning 1 0.15%
katas 1 0.15%
Open Source Software 1 0.15%

In which domains are you applying it?

/galleries/state-of-beam-2017/domains.png
Distributed Systems 225 15.20%
Web development 214 14.46%
Building and delivering commercial services 172 11.62%
Open source projects 149 10.07%
Network programming 136 9.19%
Enterprise apps 92 6.22%
Databases 80 5.41%
IoT / home automation / physical computing 75 5.07%
System administration / dev ops 60 4.05%
Big Data 51 3.45%
Mobile app development (non-web) 46 3.11%
Research 33 2.23%
AI / NLP / machine learning 28 1.89%
Games 28 1.89%
Math / data analysis 23 1.55%
Scientific computing / simulations / data visualization 21 1.42%
Desktop apps 14 0.95%
Graphics / Art 4 0.27%
Music 3 0.20%
Industrial Automation 2 0.14%
log system 1 0.07%
videostreaming 1 0.07%
soft real time analytics 1 0.07%
Security Event Processing 1 0.07%
Media encoding and distribution 1 0.07%
Ad delivery 1 0.07%
Telecom Apps 1 0.07%
telecom and chat 1 0.07%
video 1 0.07%
Developer Tooling 1 0.07%
Telecommunications 1 0.07%
embedded systems 1 0.07%
Advertising/RTB 1 0.07%
Prototyping network apps 1 0.07%
Real time systems 1 0.07%
Real-Time Bidding 1 0.07%
Instant messaging / VoIP / Communications 1 0.07%
ad traffic management 1 0.07%
REST/GraphQL API 1 0.07%
Test systems 1 0.07%
Learning 1 0.07%
telecommunications 1 0.07%
VoIP 1 0.07%
Code static analysis 1 0.07%

What industry or industries do you develop for?

/galleries/state-of-beam-2017/industries.png
Enterprise software 117 15.04%
Communications / Networking 103 13.24%
Consumer software 85 10.93%
IT / Cloud Provider 83 10.67%
Financial services / FinTech 69 8.87%
Telecom 67 8.61%
Media / Advertising 46 5.91%
Retail / ecommerce 41 5.27%
Academic 29 3.73%
Healthcare 28 3.60%
Education 26 3.34%
Government / Military 22 2.83%
Scientific 16 2.06%
Legal Tech 6 0.77%
Energy 5 0.64%
Gaming 2 0.26%
HR 2 0.26%
Security 2 0.26%
Logistics 2 0.26%
sports/fitness 1 0.13%
Retired 1 0.13%
Sport 1 0.13%
Business Intelligence 1 0.13%
Telematics / Car industry 1 0.13%
Manufacturing / Automotive 1 0.13%
Cultural/Museum 1 0.13%
Utilities 1 0.13%
Open source 1 0.13%
Travel 1 0.13%
Sport analysis 1 0.13%
Fitness 1 0.13%
Online Games 1 0.13%
Automotive 1 0.13%
Marketing 1 0.13%
Real estate 1 0.13%
Consumer electronics 1 0.13%
Non profit 1 0.13%
Client driven 1 0.13%
Industrial IoT 1 0.13%
Electric utility 1 0.13%
SaaS 1 0.13%
Automobile 1 0.13%
energy sector 1 0.13%
utilities 1 0.13%
Recruitment 1 0.13%
Energetics 1 0.13%

How long have you been using Erlang?

/galleries/state-of-beam-2017/howlong.png

The entrants (1 year or less) being less than 2 and 3 years may be discouraging or maybe as a sign that this survey didn't reach as many newcomers as it should.

> 6 Years 116 27.62%
2 Years 76 18.10%
3 Years 58 13.81%
1 Year 52 12.38%
Less than a year 45 10.71%
5 Years 36 8.57%
4 Years 34 8.10%
I've stopped using it 3 0.71%

What's your age

/galleries/state-of-beam-2017/age.png

Similar to the previous one, the survey shows that we are not interesting to young programmers (or this survey is not interesting to them :)

30-40 179 42.42%
20-30 112 26.54%
40-50 93 22.04%
> 50 31 7.35%
< 20 7 1.66%

What's your gender

/galleries/state-of-beam-2017/gender.png

One I was expecting, but bad nonetheless.

Male 401 95.02%
Prefer not to say 15 3.55%
Female 5 1.18%
attack helicopter 1 0.24%

Where are you located?

/galleries/state-of-beam-2017/location.png
North America 127 30.09%
Western Europe 117 27.73%
Eastern Europe 42 9.95%
Northern Europe 39 9.24%
South America 30 7.11%
Asia 25 5.92%
Oceania 11 2.61%
Russia 7 1.66%
India 6 1.42%
China 6 1.42%
South Saharan Afica 3 0.71%
Middle East 2 0.47%
Europe 1 0.24%
Iran 1 0.24%
Central America 1 0.24%
Australia 1 0.24%
Thailand 1 0.24%
East Africa 1 0.24%
Central Europe 1 0.24%

What is your level of experience with functional programming?

/galleries/state-of-beam-2017/fpexp.png

7 answers got the joke or are really awesome programmers :)

/galleries/state-of-beam-2017/profunctor.jpg
Intermediate 202 48.44%
Advanced 148 35.49%
Beginner 57 13.67%
Profunctor Optics Level 7 1.68%
None 3 0.72%

Prior to using Erlang, which were your primary development languages?

/galleries/state-of-beam-2017/prevlang.png
C or C++ 163 14.75%
Python 145 13.12%
Javascript 144 13.03%
Ruby 138 12.49%
Java 135 12.22%
PHP 72 6.52%
C# 56 5.07%
Perl 46 4.16%
Go 26 2.35%
Haskell 25 2.26%
Swift or Objective-C 24 2.17%
Common Lisp 20 1.81%
Scala 20 1.81%
Scheme or Racket 14 1.27%
Visual Basic 11 1.00%
Clojure 8 0.72%
R 8 0.72%
Rust 7 0.63%
None 6 0.54%
OCaml 3 0.27%
F# 3 0.27%
Kotlin 2 0.18%
Standard ML 2 0.18%
Fortran 2 0.18%
Pascal 1 0.09%
Ocaml 1 0.09%
KDB 1 0.09%
so "primary" here for me is "what was most used at work" 1 0.09%
TypeScript 1 0.09%
Microsoft Access 1 0.09%
Groovy 1 0.09%
but I am a self-proclaimed polyglot 1 0.09%
Shell 1 0.09%
Tcl/Tk 1 0.09%
Limbo 1 0.09%
Smalltalk 1 0.09%
clojure 1 0.09%
ActionScript 1 0.09%
Actionscript 1 0.09%
Prolog 1 0.09%
Racket 1 0.09%
Bash 1 0.09%
ML 1 0.09%
TCL 1 0.09%
Elixir 1 0.09%
C ANSI POSIX 1 0.09%
D 1 0.09%
ocaml 1 0.09%
Assembly 1 0.09%

Which client-side language are you using with Erlang?

/galleries/state-of-beam-2017/clientlang.png
Javascript 257 44.93%
None 90 15.73%
Elm 69 12.06%
Java 36 6.29%
Swift/Objective-C 36 6.29%
Clojurescript 13 2.27%
ReasonML/Ocaml 10 1.75%
Kotlin 8 1.40%
Typescript 7 1.22%
Scala 7 1.22%
Purescript 6 1.05%
C++ 4 0.70%
TypeScript 3 0.52%
Go 2 0.35%
typescript 2 0.35%
Python 2 0.35%
Erlang 2 0.35%
Flow + Javascript 1 0.17%
HTML-CSS 1 0.17%
Haskell 1 0.17%
What do you mean by "client-side language"? 1 0.17%
other 1 0.17%
Action Script 3 1 0.17%
Coffeescript 1 0.17%
d3.js 1 0.17%
lua 1 0.17%
Python/PyQt 1 0.17%
Dart 1 0.17%
Golang 1 0.17%
Ruby 1 0.17%
M$ C# 1 0.17%
Python (interface to legacy system - not web based) 1 0.17%
clojure 1 0.17%
C# 1 0.17%
Tcl/Tk 1 0.17%

In your Erlang projects, do you interoperate with other languages? if so, which ones?

/galleries/state-of-beam-2017/interop.png
C or C++ 156 24.19%
None 92 14.26%
Python 87 13.49%
Javascript 72 11.16%
Java 51 7.91%
Ruby 37 5.74%
Rust 27 4.19%
Go 27 4.19%
Swift or Objective-C 14 2.17%
C# 12 1.86%
Scala 11 1.71%
PHP 9 1.40%
Perl 8 1.24%
R 8 1.24%
Haskell 6 0.93%
Common Lisp 4 0.62%
Clojure 3 0.47%
OCaml 3 0.47%
Elixir 2 0.31%
Scheme or Racket 2 0.31%
Bash 2 0.31%
Kotlin 1 0.16%
KDB 1 0.16%
I use Erlang from Elixir 1 0.16%
lua 1 0.16%
SQL 1 0.16%
java 1 0.16%
Ocaml 1 0.16%
go 1 0.16%
Not directly via NIFs/ports but via HTTP/rabbit with ruby 1 0.16%
Tcl/Tk 1 0.16%
Lua 1 0.16%
python 1 0.16%

Which is your primary development environment?

/galleries/state-of-beam-2017/editor.png

I thought Emacs would win here by the fact that the Erlang creators use Emacs.

Vim 116 27.49%
Emacs 114 27.01%
IntelliJ 47 11.14%
Visual Studio Code 47 11.14%
Sublime Text 39 9.24%
Atom 32 7.58%
Eclipse 6 1.42%
spacemacs 2 0.47%
nano 2 0.47%
linux with vim as my text editor 1 0.24%
Kate 1 0.24%
textmate 1 0.24%
TextPad 1 0.24%
Simple text editor 1 0.24%
Notepad++ 1 0.24%
Also nvi. 1 0.24%
mcedit 1 0.24%
PSPad 1 0.24%
geany with erlang syntax support 1 0.24%
Kakoune 1 0.24%
Neovim 1 0.24%
Acme 1 0.24%
Spacemacs 1 0.24%
Atom and Emacs both very equally 1 0.24%
ed 1 0.24%
elvis 1 0.24%

Where do you go for Erlang news and discussions?

/galleries/state-of-beam-2017/news.png
Twitter 204 20.20%
Mailing List 188 18.61%
Slack 116 11.49%
Reddit 111 10.99%
Stack Overflow 103 10.20%
IRC 62 6.14%
Erlang Central 60 5.94%
Newsletters 50 4.95%
Podcasts 33 3.27%
Planet Erlang 31 3.07%
ElixirForum 31 3.07%
Elixir Community 1 0.10%
lobste.rs 1 0.10%
EUC 1 0.10%
Reddit and ElixirForum 1 0.10%
This week in Erlang 1 0.10%
Gitter 1 0.10%
Awesome Elixir 1 0.10%
OTP's github for PRs and commit log 1 0.10%
elixirstatus.com 1 0.10%
Google Plus 1 0.10%
youtube 1 0.10%
Search on github 1 0.10%
Erlang solutions 1 0.10%
not interesting 1 0.10%
Medium 1 0.10%
None 1 0.10%
Watch talks 1 0.10%
Conference Videos 1 0.10%
Elixir Sips 1 0.10%
https://medium.com/@gootik 1 0.10%
https://lobste.rs/t/erlang 1 0.10%

Which versions of the Erlang VM do you currently use for development?

/galleries/state-of-beam-2017/versiondev.png

We are really up to date, we are near a point where we can assume maps on our libraries :)

20 305 46.71%
19 213 32.62%
18 84 12.86%
17 30 4.59%
16 16 2.45%
<= 15 5 0.77%

Which versions of the Erlang VM do you currently use in production?

/galleries/state-of-beam-2017/versiondeploy.png

Of course production is a little more conservative

19 215 37.65%
20 183 32.05%
18 94 16.46%
17 43 7.53%
16 26 4.55%
<= 15 10 1.75%

Which build tool do you use?

/galleries/state-of-beam-2017/buildtool.png

Nice to see Rebar3 picking up momentum, Mix being mainly the Elixir Effect, next year I should add an option for "Mix for erlang or mixed projects".

Rebar3 220 32.59%
Mix 177 26.22%
Makefile 111 16.44%
Rebar 71 10.52%
erlang.mk 46 6.81%
Custom build scripts 44 6.52%
Distillery 1 0.15%
maven 1 0.15%
redo 1 0.15%
mix 1 0.15%
synrc/mad 1 0.15%
MBU 1 0.15%

How do you test your code?

/galleries/state-of-beam-2017/howtest.png

Surprised by EUnit being on top, why do people prefer it over Common Test?

EUnit 216 34.67%
Common Test 158 25.36%
ExUnit 74 11.88%
PropEr 69 11.08%
I don't write tests 45 7.22%
QuickCheck 33 5.30%
Custom 4 0.64%
Triq 4 0.64%
ESpec 3 0.48%
CutEr 3 0.48%
StreamData 2 0.32%
Lux 2 0.32%
py.test 2 0.32%
Functional tests 1 0.16%
Don't have time to write tests 1 0.16%
katana-test 1 0.16%
riak_test 1 0.16%
Dialyzer 1 0.16%
Integration tests 1 0.16%
Elixir tests. 1 0.16%
Concuerror 1 0.16%

How do you deploy your application?

/galleries/state-of-beam-2017/howdeploy.png

Lot of custom deploy scripts and docker/kubernetes here, maybe we should have better deploy support in our tools?

Custom deploy scripts 186 32.75%
Docker 128 22.54%
Kubernetes 50 8.80%
Ansible 44 7.75%
I don't deploy in other servers 40 7.04%
Chef 39 6.87%
Puppet 11 1.94%
SaltStack 11 1.94%
Heroku 11 1.94%
Edeliver 8 1.41%
deb 7 1.23%
Distillery 7 1.23%
Zones 5 0.88%
AWS CodeDeploy 3 0.53%
Rancher 1 0.18%
VM image 1 0.18%
boot from flash 1 0.18%
https://github.com/labzero/bootleg2 1 0.18%
Not my job 1 0.18%
copy paste 1 0.18%
mad 1 0.18%
CD 1 0.18%
Exrm 1 0.18%
rpm 1 0.18%
Nomad 1 0.18%
AWS ECS 1 0.18%
FreeBSD Jails 1 0.18%
lxc 1 0.18%
WIX 1 0.18%
os packages 1 0.18%
nanobox 1 0.18%
cloudfoundry 1 0.18%

What is your organization's size?

/galleries/state-of-beam-2017/orgsize.png

Can we say that Erlang works on organizations of any size?

11-50 109 26.20%
2-10 93 22.36%
Just me 75 18.03%
500+ 65 15.62%
101-500 45 10.82%
51-100 29 6.97%

Which operating system(s) you use for development?

/galleries/state-of-beam-2017/osdev.png

Almost same amount of Windows and FreeBSD, is it because Windows support is bad? or is this a reflection of the usual developer OS choice in any programming language?

Linux 307 47.01%
MacOS 253 38.74%
Windows 38 5.82%
FreeBSD 34 5.21%
Illumos 8 1.23%
OpenBSD 7 1.07%
Solaris 3 0.46%
NetBSD 1 0.15%
GRiSP 1 0.15%
ChromeOS 1 0.15%

Which operating system(s) you use for deployment?

/galleries/state-of-beam-2017/osdeploy.png
Linux 378 75.15%
FreeBSD 43 8.55%
MacOS 25 4.97%
Windows 22 4.37%
I don't deploy in other servers 11 2.19%
Solaris 9 1.79%
Illumos 8 1.59%
OpenBSD 3 0.60%
RTEMS 1 0.20%
GRiSP 1 0.20%
OSv 1 0.20%
NetBSD 1 0.20%

Where do you deploy your applications?

/galleries/state-of-beam-2017/wheredeploy.png

I don't think this question provides useful information, maybe I should add options?

Public Cloud 188 27.85%
Use on local machine(s) 162 24.00%
Traditional Infrastructure 157 23.26%
Private Cloud (or hybrid) 156 23.11%
Distillery 1 0.15%
VMs on ESXi 1 0.15%
embedded systems 1 0.15%
Rented physical server 1 0.15%
Vagrant vms 1 0.15%
Embedded appliances 1 0.15%
Heroku 1 0.15%
VPS 1 0.15%
hyper.sh 1 0.15%
Containers (Docker) 1 0.15%
Edeliver 1 0.15%
GitHub 1 0.15%

Which events have you attended in the last year?

/galleries/state-of-beam-2017/events.png

Local Meetups at the top is a nice one, we can work to promote more of these.

Local Meetup 124 46.97%
Erlang Factory 39 14.77%
Erlang User Conference 38 14.39%
Erlang Factory Light 20 7.58%
ElixirConf 12 4.55%
ElixirConfEU 9 3.41%
None 6 2.27%
Lonestar Elixir 3 1.14%
Code Mesh 2 0.76%
Lambda Days 1 0.38%
ElixirConfEU + ElixirLDN 1 0.38%
ElixirConf USA 2017 1 0.38%
Elixir London 1 0.38%
ElixirConf 2017 1 0.38%
Elixir meetup in Leeds UK 1 0.38%
ElixirLive Conference in Warsaw 1 0.38%
J on the Beach 1 0.38%
Peer gatherings in region 1 0.38%
Empex 1 0.38%
Elixir Camp 1 0.38%

Do you use HiPE?

No 301 74.32%
Yes 104 25.68%

Do you use dialyzer?

Yes 280 66.99%
No 138 33.01%

How important have each of these aspects of Erlang been to you and your projects?

Remember that charts and tables are sorted by most to less answers to compare correctly in the following set of questions.

Community

/galleries/state-of-beam-2017/ocommunity.png
Very Important 157 37.74%
Fairly Important 112 26.92%
Important 79 18.99%
Slightly Important 52 12.50%
No Opinion 8 1.92%
Not Important at All 8 1.92%

Concurrency facilities

/galleries/state-of-beam-2017/oconcurrency.png
Very Important 306 73.73%
Fairly Important 58 13.98%
Important 36 8.67%
No Opinion 7 1.69%
Slightly Important 7 1.69%
Not Important at All 1 0.24%

Ease of development

/galleries/state-of-beam-2017/oeasedev.png
Very Important 205 49.52%
Fairly Important 98 23.67%
Important 72 17.39%
Slightly Important 27 6.52%
No Opinion 10 2.42%
Not Important at All 2 0.48%

Functional Programming

/galleries/state-of-beam-2017/ofp.png
Very Important 207 49.88%
Fairly Important 105 25.30%
Important 53 12.77%
Slightly Important 33 7.95%
No Opinion 9 2.17%
Not Important at All 8 1.93%

Immutability

/galleries/state-of-beam-2017/oimmutability.png
Very Important 222 53.62%
Fairly Important 90 21.74%
Important 60 14.49%
Slightly Important 30 7.25%
No Opinion 8 1.93%
Not Important at All 4 0.97%

Runtime performance

/galleries/state-of-beam-2017/operf.png
Very Important 148 35.75%
Fairly Important 122 29.47%
Important 95 22.95%
Slightly Important 36 8.70%
Not Important at All 7 1.69%
No Opinion 6 1.45%

The REPL

/galleries/state-of-beam-2017/orepl.png
Very Important 145 35.02%
Fairly Important 106 25.60%
Important 74 17.87%
Slightly Important 61 14.73%
No Opinion 19 4.59%
Not Important at All 9 2.17%

Tracing

/galleries/state-of-beam-2017/otracing.png
Slightly Important 96 23.02%
Very Important 95 22.78%
Fairly Important 90 21.58%
Important 82 19.66%
Not Important at All 29 6.95%
No Opinion 25 6.00%

What has been most frustrating or has prevented you from using Erlang more than you do now?

App deployment

/galleries/state-of-beam-2017/fappdev.png
Not Frustrating at All 120 30.08%
Slightly Frustrating 93 23.31%
Frustrating 54 13.53%
Fairly Frustrating 41 10.28%
Quite the contrary: I love this feature 38 9.52%
No Opinion 29 7.27%
Very Frustrating 24 6.02%

Error messages

/galleries/state-of-beam-2017/ferrormsgs.png
Slightly Frustrating 119 29.82%
Not Frustrating at All 89 22.31%
Frustrating 48 12.03%
Fairly Frustrating 43 10.78%
Quite the contrary: I love this feature 39 9.77%
Very Frustrating 38 9.52%
No Opinion 23 5.76%

Finding libraries

/galleries/state-of-beam-2017/flibs.png
Slightly Frustrating 137 34.08%
Not Frustrating at All 121 30.10%
Frustrating 64 15.92%
Fairly Frustrating 31 7.71%
Quite the contrary: I love this feature 21 5.22%
Very Frustrating 15 3.73%
No Opinion 13 3.23%

Hard to Learn it

/galleries/state-of-beam-2017/fhardlearn.png
Not Frustrating at All 204 51.13%
Slightly Frustrating 77 19.30%
Quite the contrary: I love this feature 48 12.03%
Frustrating 29 7.27%
No Opinion 21 5.26%
Fairly Frustrating 14 3.51%
Very Frustrating 6 1.50%

Hiring and staffing

/galleries/state-of-beam-2017/fhiring.png
No Opinion 124 31.47%
Slightly Frustrating 78 19.80%
Not Frustrating at All 71 18.02%
Fairly Frustrating 43 10.91%
Frustrating 41 10.41%
Very Frustrating 25 6.35%
Quite the contrary: I love this feature 12 3.05%

Installation process

/galleries/state-of-beam-2017/finstallation.png
Not Frustrating at All 218 55.05%
Slightly Frustrating 67 16.92%
Quite the contrary: I love this feature 54 13.64%
Frustrating 23 5.81%
Fairly Frustrating 16 4.04%
No Opinion 14 3.54%
Very Frustrating 4 1.01%

Long term viability

/galleries/state-of-beam-2017/fviability.png
Not Frustrating at All 194 48.87%
Quite the contrary: I love this feature 74 18.64%
Slightly Frustrating 46 11.59%
No Opinion 41 10.33%
Frustrating 28 7.05%
Fairly Frustrating 9 2.27%
Very Frustrating 5 1.26%

Need more docs/tutorials

/galleries/state-of-beam-2017/fdocs.png
Not Frustrating at All 127 32.32%
Slightly Frustrating 124 31.55%
Frustrating 44 11.20%
Fairly Frustrating 37 9.41%
Quite the contrary: I love this feature 22 5.60%
No Opinion 22 5.60%
Very Frustrating 17 4.33%

Need more text editor support/IDEs

/galleries/state-of-beam-2017/fides.png
Not Frustrating at All 168 42.00%
Slightly Frustrating 93 23.25%
Frustrating 39 9.75%
Quite the contrary: I love this feature 32 8.00%
Fairly Frustrating 28 7.00%
Very Frustrating 22 5.50%
No Opinion 18 4.50%

Need more tools

/galleries/state-of-beam-2017/ftools.png
Slightly Frustrating 128 32.16%
Not Frustrating at All 99 24.87%
Frustrating 58 14.57%
Fairly Frustrating 40 10.05%
Very Frustrating 34 8.54%
No Opinion 26 6.53%
Quite the contrary: I love this feature 13 3.27%

No static typing

/galleries/state-of-beam-2017/ftyping.png
Not Frustrating at All 113 28.18%
Slightly Frustrating 105 26.18%
Quite the contrary: I love this feature 63 15.71%
Frustrating 40 9.98%
Fairly Frustrating 34 8.48%
Very Frustrating 25 6.23%
No Opinion 21 5.24%

Release schedule

/galleries/state-of-beam-2017/freleasesched.png
Not Frustrating at All 258 64.99%
Quite the contrary: I love this feature 57 14.36%
No Opinion 43 10.83%
Slightly Frustrating 26 6.55%
Frustrating 9 2.27%
Very Frustrating 2 0.50%
Fairly Frustrating 2 0.50%

Runtime performance

/galleries/state-of-beam-2017/fperformance.png
Not Frustrating at All 185 46.25%
Slightly Frustrating 72 18.00%
Quite the contrary: I love this feature 57 14.25%
Frustrating 32 8.00%
No Opinion 25 6.25%
Fairly Frustrating 17 4.25%
Very Frustrating 12 3.00%

Unpleasant community

/galleries/state-of-beam-2017/fcommunity.png
Not Frustrating at All 224 56.14%
Quite the contrary: I love this feature 79 19.80%
No Opinion 45 11.28%
Slightly Frustrating 26 6.52%
Frustrating 14 3.51%
Very Frustrating 7 1.75%
Fairly Frustrating 4 1.00%

Version incompatibility

/galleries/state-of-beam-2017/fversioncompat.png
Not Frustrating at All 212 53.13%
Slightly Frustrating 84 21.05%
No Opinion 40 10.03%
Quite the contrary: I love this feature 29 7.27%
Frustrating 19 4.76%
Fairly Frustrating 11 2.76%
Very Frustrating 4 1.00%

Any feature you would like to see added to the language?

This was an open ended question, I'm summarizing similar answers here in groups

Static Typing 20
Performance 7
Pipe operator 7
JIT 6
Currying 6
Better GUI lib 5
Better macros 4
Docs in shell 4
Better language interop 4
JSON in stdlib 3
Compile to single binary 3
Namespaces 3
Rebind variables 2
Numeric performance 2
Elixir protocols 2
Language server protocol 2
Non full mesh disterl 2
Consensus implementations in stdlib 2
More than 2 version of same module 2
Atom GC 2

Other answers with one vote:

  • Backward compatibility
  • BEAM on browsers
  • Better binary syntax
  • Better container support
  • Better datetime support
  • Better documentation
  • Better errors
  • Better global registry
  • Better if expression
  • Better map support in mnesia
  • Better ML integration
  • Better module system
  • Better proc_lib
  • Better profiler
  • Better site
  • Better string module
  • Better unicode support
  • Bigger standard library
  • Bring back parameterized modules
  • Cleanup standard library
  • Code change watcher and loader
  • Consistent error return
  • CRDTs
  • Curses version of observer
  • Database drivers/support
  • Early return statement
  • Encrypted inter node communication
  • Erlang leveldb/rocksdb (better DETS)
  • First class records (not as tuples)
  • Function composition
  • IPv6
  • Laziness
  • LLVM based Hipe
  • Map comprehensions
  • Monads
  • More behaviors
  • More Lispy
  • More robust on_load
  • Multi-poll sets
  • Native compilation
  • New logo
  • Numerical/GPU support
  • Orleans
  • Package manager
  • Rational numbers
  • Remove stuff
  • Short circuit folding a list
  • Single file distribution
  • String performance
  • Top-like tool
  • Type checking as you type
  • Type inference
  • WebRTC
  • With expression like Elixir

Any advise on how we can make Erlang more welcoming and easy to use?

This was an open ended question, I'm summarizing similar answers here in groups

Better guides 20
Better documentation 18
Better error messages 13
Better tooling 9
Central/better landing page 4
Better REPL 3
Translated documentation 2
Better libraries 2
Friendlier community 2
Better learning curve 2
Learn from Elixir community 3
IDE support 3
Marketing 2
Searchable docs 2
Throw away legacy 2
Simpler release process 2

Other answers with one vote:

  • A killer app
  • Better tracing tools
  • Better Windows experience
  • Embrace BEAM languages
  • Erlang forum
  • Introductory workshops
  • More conferences
  • More welcoming mailing list
  • Nicer syntax
  • Performance
  • Templates

Would you like to share any frustrating experience?

This was an open ended question, I'm summarizing similar answers here in groups

Bad tooling 6
Lack of libraries, immaturity, not maintained 5
Lack of guides 5
Unwelcome community 4
Lack of strong/static typing 4
Syntax 4
No examples on documentation/in general 3
Bad documentation 3
Mnesia 3
Bad debugging experience 3
Ignoring other languages/communities/feedback 3
Niche language 2
Bad shell 2
No jobs 2
Learning curve 2
Difficulty contributing to the BEAM and OTP 2
Confusing errors 2
Performance 2
Package management 2

Other answers with one vote:

  • Atoms not garbage collected
  • Elitism
  • Flat namespace
  • Hard to hire
  • Lack of features in standard library
  • Lack of language features
  • Not a clear overview of the ecosystem
  • People complaining about syntax
  • String vs binary
  • Upgrades break code

Comentarios

Comments powered by Disqus