2019 State of Haskell Survey results

by Taylor Fausak on

The third annual State of Haskell Survey closed a couple days ago. This post will analyze the results, graph them, and compare them to previous years (2018, 2017). I will not attempt to summarize the answers to free-response questions. I encourage any interested parties to download the raw results, do their own analysis, and share their results.

You can download the anonymized responses in CSV or JSON formats. Both are licensed under the ODbL 1.0 license.


What is your email address?

Email addresses were collected but aren’t included in the results. This year I decided to make email addresses required as a way to counteract the bogus submissions I got last year. As far as I can tell all of this year’s submissions were legitimate. However I received fewer submissions this year compared to previous years. This year I received 1,211 submissions. Last year (2018) I received 1,361. The year before (2017) I received 1,335.

Haskell usage

Do you use Haskell?

Single select.

89%
1075
Yes
8%
92
No, but I used to
3%
35
No, I never have

As expected, most people filling out the survey are Haskell users. This is consistent with previous years.

If you stopped using Haskell, how long did you use it before you stopped?

Single select.

1%
14
Less than 1 day
1%
18
1 day to 1 week
2%
25
1 week to 1 month
4%
46
1 month to 1 year
7%
80
More than 1 year

Most people who stopped using Haskell used it for more than a year. In both previous surveys most people had used Haskell for less than a year. What changed? Why are people using Haskell for longer before stopping? It’s hard to say based only on the survey data.

If you do not use Haskell, why not?

Multiple select.

10%
117
My company doesn't use Haskell
4%
47
Haskell's documentation is not good enough
4%
48
Haskell lacks critical libraries
3%
41
Haskell lacks critical tools
3%
39
Haskell is too hard to learn
2%
22
Haskell's performance is not good enough
2%
23
Haskell does not support the platforms I need
1%
14
Haskell lacks critical features
5%
55
Other

Haskell the language comes across looking pretty good here. Most of the complaints are about the ecosystem, including documentation, packages, and tools. This is consistent with previous years, where documentation is a frequent complaint. Notably many people that do use Haskell aren’t thrilled with the documentation either.

How long have you been using Haskell?

Single select.

1%
15
Less than 1 day
1%
13
1 day to 1 week
2%
27
1 week to 1 month
14%
167
1 month to 1 year
14%
174
1 year to 2 years
15%
185
2 years to 3 years
12%
140
3 years to 4 years
9%
103
4 years to 5 years
8%
91
5 years to 6 years
4%
44
6 years to 7 years
19%
227
More than 7 years

Similar to last year there’s a peak around the two year mark. Also there’s a large number of people that have used Haskell for a long time. I thought that having seven discrete year buckets would be plenty, but it looks like I’ll need even more for next year’s survey!

How frequently do you use Haskell?

Single select.

40%
482
Daily
32%
383
Weekly
16%
189
Monthly
3%
39
Yearly
8%
93
Rarely

Most people that use Haskell use it daily. This is consistent with previous years. To mean that suggests that it’s a good choice for a wide variety of tasks, otherwise people may only sometimes reach for it. That matches my own personal experience as well.

How would you rate your proficiency in Haskell?

Single select.

14%
169
Beginner
41%
495
Intermediate
30%
361
Advanced
11%
137
Expert
3%
31
Master

Haskell has a high skill ceiling, and most users consider themselves intermediate users. It seems like there’s always something more to know, but you don’t need to know much in order to get things done. This matches previous years.

I think a common complaint from the Haskell community is that there’s a lot of content for beginners and experts, but not much in between. That’s especially frustrating since so much of the community is in that intermediate level of proficiency.

Where do you use Haskell?

Multiple select.

85%
1026
Home
54%
653
Work
11%
139
School

This is remarkably consistent with previous years. Plenty of people use Haskell at home, but it’s not breaking into the workplace. It’s hard to analyze this question more on its own. Other questions in the survey, like the next two, give more insight.

Do you use Haskell at work?

Single select.

30%
363
Yes, most of the time
22%
261
Yes, some of the time
1%
17
No, but my company does
41%
492
No, but I'd like to
3%
34
No, and I don't want to

More people use Haskell at work than don’t, which is great. This is similar to previous years, but this year I asked about wanting to use Haskell if you’re not already. Most people that aren’t using Haskell at work want to be. So what’s stopping them? The next question sheds some light on that.

If you do not use Haskell at work, why not?

Multiple select.

33%
398
My company doesn't use Haskell
9%
105
It's too hard to hire Haskell developers
8%
91
Haskell lacks critical libraries
6%
77
Haskell is too hard to learn
6%
72
Haskell lacks critical tools
5%
62
Haskell's documentation is not good enough
3%
40
Haskell does not support the platforms I need
2%
29
Haskell's performance is not good enough
2%
20
Haskell lacks critical features
8%
95
Other

Most people don’t use Haskell at work simply because it’s not one of the blessed languages. And it’s not one of the blessed languages because it’s hard to hire Haskell developers. Seems like a bit of a catch-22. Regardless this is similar to previous years, and also similar to the “If you do not use Haskell, why not?” question. Haskell’s documentation, package ecosystem, and tooling all need to level up in order to be viable to use at work.

Which programming languages other than Haskell are you fluent in?

Multiple select.

52%
630
Python
50%
601
JavaScript
45%
539
C
44%
532
Java
29%
348
Shell
28%
345
C++
19%
235
TypeScript
19%
229
C#
18%
212
Elm
17%
209
Rust
16%
192
Scala
15%
176
Ruby
12%
140
Go
11%
139
PHP
10%
120
PureScript
8%
100
Assembly
7%
90
Clojure
7%
84
Perl
7%
82
Ocaml
6%
73
Matlab
6%
68
F#
6%
68
Kotlin
5%
64
R
5%
63
Lua
5%
57
Erlang
5%
55
Objective-C
4%
54
Swift
2%
29
VB.NET
2%
20
Julia
2%
20
VBA
2%
19
Groovy
1%
8
Hack
12%
149
Other

Once again the clear front runners are Python, JavaScript, C, Java, Shell, and C++. I’m not sure what conclusions can be drawn from this, other than those are popular languages and they remain popular even with Haskell users. Perhaps these results suggest that the Haskell community could see what those other language communities are doing well and try to copy them. Also we could try to produce content that shows how to take something from, say, Python and translate it into Haskell.

Which types of software do you develop with Haskell?

Multiple select.

63%
758
Command-line programs (CLI)
47%
572
API services (returning non-HTML)
38%
463
Libraries or frameworks
37%
448
Data processing
35%
425
Automation or scripts
33%
400
Web services (returning HTML)
20%
248
Agents or daemons
10%
123
Desktop programs (GUI)
8%
99
Other

CLI programs and API services are even more popular this year than last, but the overall distribution is pretty similar. For people trying to use Haskell at work, introducing a CLI or API program is probably the way to go. Their popularity in the Haskell community means that they’re likely to have the best packages available and good documentation. Usually there are a wide range of approaches too, like optparse-applicative versus optparse-generic, or scotty versus servant-server.

Which industries do you use Haskell in?

Multiple select.

27%
329
Web
16%
196
Banking or finance
16%
190
Education
9%
113
Commerce or retail
5%
60
Gaming
5%
57
Healthcare or medical
3%
36
Mobile
3%
37
Embedded
3%
33
Government
19%
227
Other

Web continues to dominate, with finance and education more or less tied in second. There’s a long tail of things grouped into “Other”. The most popular are cryptocurrencies, academia/research/science, and security. I will be sure to split out those industries next year.

Projects

How many Haskell projects do you contribute to?

Single select.

30%
358
0
17%
210
1
16%
188
2
11%
136
3
4%
54
4
5%
62
5
8%
91
6 to 10
2%
28
11 to 20
3%
41
More than 20

Many people do not contribute to any Haskell projects. Almost half of people contribute to between one and three projects. This is similar to last year.

What is the total size of all the Haskell projects you contribute to?

Single select.

26%
311
Less than 1,000 lines of code
26%
312
Between 1,000 and 9,999 lines of code
22%
265
Between 10,000 and 99,999 lines of code
11%
133
More than 100,000 lines of code

The “Less than 1,000 lines of code” bucket saw an increase compared to previous years. Not many people are working on very large projects. Taken with the previous question, it seems like most people are working on a few small projects. This is perhaps a consequence of most people not using Haskell at work, since personal projects take time to maintain and typically don’t grow that large.

Which platforms do you develop Haskell on?

Multiple select.

74%
901
Linux
40%
479
MacOS
16%
192
Windows
3%
36
BSD
1%
8
Other

This distribution looks basically identical to previous years. My takeaway from this is that Haskell developer tools would do well to focus on Linux first, before adding support for MacOS and Windows.

Which platforms do you target?

Multiple select.

88%
1060
Linux
34%
415
MacOS
26%
317
Windows
5%
63
BSD
3%
42
Android
3%
36
iOS
3%
33
Other

This also looks exactly like it did in previous years. Linux is far and away the most popular deployment target. Again my takeaway is for runtime tools like debuggers or profilers to focus on Linux first before supporting MacOS and Windows.

Compilers

Which Haskell compilers do you use?

Multiple select.

98%
1181
GHC
8%
97
GHCJS
1%
13
Eta
2%
24
Other

Unsurprisingly GHC is far and away the most popular Haskell compiler. GHCJS is holding steady. Eta is less popular than last year.

Which installation methods do you use for your Haskell compiler?

Multiple select.

67%
807
Stack
28%
344
Nix
16%
199
Operating system package
13%
154
Haskell Platform
9%
114
ghcup
9%
115
Official binaries
7%
80
Source
2%
26
Minimal installer
3%
36
Other

Both Nix and ghcup are more popular than previous years. Everything else stayed more or less the same.

Has upgrading your Haskell compiler broken your code in the last year?

Single select.

66%
805
No
29%
349
Yes

This bounced back from last year with 54% “No”, but it still hasn’t returned to 2017’s peak of 84% “No”. It’s disappointing that nearly one-third of Haskell users had their code broken by a compiler upgrade in the past year. The next question goes into more detail.

How has upgrading your Haskell compiler broken your code in the last year?

Multiple select.

19%
233
Expected changes, such as the MonadFail proposal
19%
230
Incompatible dependencies
9%
103
New warnings
4%
49
Compiler bugs
4%
43
Unexpected changes
2%
25
Other

This is similar to last year, except that the “New warnings” choice almost doubled. Some new warnings were introduced this year that effectively fired on all code, like -Wmissing-deriving-strategies, so that probably had something to do with it. The “Expected changes” and “Incompatible dependencies” choices are intertwined because it takes time for dependencies to upgrade in response to expected changes. This year saw the move to the MonadFail type class for the fail method, which ended up breaking a lot of code that needed to be fixed. Personally, while I’m in favor of moving fail out of the Monad type class, it had a very real cost in terms of time spent patching old dependencies.

Which versions of GHC do you use?

Multiple select.

8%
96
HEAD
35%
425
8.8.x
67%
810
8.6.x
24%
285
8.4.x
10%
126
8.2.x
6%
70
8.0.x
4%
47
7.x

Although the version numbers obviously change, the distribution remains remarkably consistent. The three most recent major versions (8.8, 8.6, 8.4) cover the vast majority of users. I’ve said this before and I’ll say it again: Don’t spend too much time maintaining support for older versions of GHC. Especially if it lets you simplify your package description by removing conditionals or simplify your code by removing CPP.

Which language extensions would you like to be enabled by default?

Multiple select.

48%
578
OverloadedStrings
40%
489
LambdaCase
34%
414
DeriveGeneric
29%
356
DeriveFunctor
29%
355
GADTs
28%
338
BangPatterns
26%
312
FlexibleInstances
25%
302
FlexibleContexts
25%
302
ScopedTypeVariables
25%
298
RankNTypes
24%
293
DeriveFoldable
23%
273
GeneralizedNewtypeDeriving
22%
269
TypeApplications
21%
251
TypeFamilies
21%
250
DeriveTraversable
20%
245
DataKinds
19%
235
TupleSections
19%
227
MultiParamTypeClasses
18%
213
DerivingVia
18%
212
TypeOperators
17%
207
KindSignatures
15%
178
DerivingStrategies
15%
176
DeriveDataTypeable
14%
172
MultiWayIf
14%
168
ViewPatterns
14%
164
StandaloneDeriving
13%
163
ConstraintKinds
13%
161
DeriveAnyClass
13%
160
RecordWildCards
13%
157
EmptyCase
12%
144
ApplicativeDo
12%
141
FunctionalDependencies
11%
139
ExplicitForAll
11%
135
InstanceSigs
11%
128
GADTSyntax
10%
125
PatternSynonyms
10%
122
NamedFieldPuns
10%
120
NumericUnderscores
212%
2563
Other

This is everyone’s favorite question. As you can see, there’s a long tail of extensions that people would like to be enabled by default. I only included things above that got at least 10% of the vote. OverloadedStrings is always the most popular, but it actually got more popular this year. LambdaCase continues to hang out in second place, followed by some extensions related to deriving and GADTs. My read of this is that people want some quality of life improvements without having to manually enable them, either in their Cabal file or in every source file.

How important do you feel it would be to have a new version of the Haskell language standard?

Single select.

12%
148
Extremely important
23%
277
Very important
36%
442
Moderately important
13%
156
Slightly important
8%
95
Not at all important

This is consistent with last year. People want a new version of the Haskell language standard (perhaps to enable some of those extensions?) but it’s not a showstopper.

Tooling

Which build tools do you use for Haskell?

Multiple select.

74%
894
Stack
51%
619
Cabal
30%
360
Nix
9%
110
Shake
8%
102
Make
5%
56
ghc-pkg
4%
47
Bazel
2%
22
Other

Nix gained some ground, but otherwise this looks about the same as previous years. Stack continues to be the most popular build tool for Haskell.

Which editors do you use for Haskell?

Multiple select.

41%
493
Vi
32%
391
Emacs
30%
367
Visual Studio Code
5%
63
Atom
5%
60
Sublime Text
5%
59
IntelliJ IDEA
11%
136
Other

I feel like there are two main “camps” here: The terminal-based editor users and the graphical ones. Vi and Emacs remain as popular as ever. However VSCode continues to get more popular year over year. Notably Atom continues to drop in popularity, so perhaps Atom users are abandoning it for VSCode. If things keep going at this rate, VSCode is going to overtake Vi/Emacs next year. Popular “Other” choices include various Vi-family editors like Neovim, various Emacs-family editors like Spacemacs, and Kakoune.

Which version control systems do you use for Haskell?

Multiple select.

95%
1152
Git
3%
34
Mercurial
3%
33
Darcs
1%
12
Pijul
1%
9
Subversion
0%
5
Other

Exactly the same as previous years. Everyone uses Git. Hardly anybody uses anything else.

Where do you get Haskell packages from?

Multiple select.

68%
818
Hackage
65%
782
Stackage
26%
310
Nix
21%
254
Source
2%
24
Other

This is similar to previous years, except that Nix is more popular than it was before. Seems like Nix is gaining ground in a lot of different places.

Which tools do you use to test Haskell code?

Multiple select.

55%
663
QuickCheck
44%
533
Hspec
32%
389
HUnit
24%
289
Tasty
17%
203
Hedgehog
5%
60
SmallCheck
4%
44
Haskell Test Framework
2%
30
Other

This is more or less the same as last year, except that both HUnit and Hedgehog are more popular. I’m still surprised that property-based testing with QuickCheck is more popular than typical unit testing libraries like Hspec and HUnit. I’m happy about it, though! Property-based tests are wonderful, in my opinion.

Which tools do you use to benchmark Haskell code?

Multiple select.

34%
411
Criterion
4%
53
Bench
4%
46
Gauge
2%
28
Other

This is the same as last year. Criterion is the most popular tool for benchmarking Haskell code.

Infrastructure

Which tools do you use to deploy Haskell applications?

Multiple select.

40%
487
Static binaries
34%
408
Docker images
18%
219
Nix expressions
16%
190
Dynamic binaries
3%
36
Other

This looks pretty much the same as last year. I’m a little confused about the popularity of static binaries, since producing static Haskell executables with libraries like glibc and libpq is challening. Perhaps people are deploying mostly static binaries. Regardless, Nix is more popular this year than last, and Docker remains a popular alternative to binaries.

Where do you deploy Haskell applications?

Multiple select.

43%
524
Self or company owned servers
26%
311
Amazon Web Services
8%
92
Google Cloud
7%
80
Digital Ocean
4%
53
Heroku
3%
40
Microsoft Azure
6%
67
Other

This is about the same as last year. Both Google’s and Microsoft’s clouds are little more popular. That being said, the most popular options by a long shot are self-owned infrastructure or AWS.

Community

Where do you interact with the Haskell community?

Multiple select.

56%
680
Reddit
55%
667
GitHub
32%
383
Twitter
25%
299
Stack Overflow
23%
275
Slack
22%
264
IRC
22%
261
Meetups
21%
250
Conferences (commercial)
20%
242
Mailing lists
15%
185
Conferences (academic)
8%
97
Discord
7%
89
Lobsters
5%
57
Telegram
4%
51
Gitter
3%
31
Mastodon
2%
30
Discourse
2%
21
Matrix/Riot
3%
36
Other

Yet another one that’s basically the same as the previous years. This is the first year that Slack overtook IRC though.

Which of the following Haskell topics would you like to see more written about?

Multiple select.

57%
687
Best practices
44%
530
Design patterns
42%
504
Application architectures
34%
417
Library walkthroughs
34%
413
Performance analysis
34%
409
Tooling choices
32%
384
Case studies
31%
377
Production infrastructure
28%
343
Debugging how-tos
25%
307
Web development
24%
285
Project maintenance
22%
267
Algorithm implementations
21%
251
Project setup
21%
249
GUIs
19%
230
Beginner fundamentals
19%
226
Machine learning
16%
189
Game development
14%
164
Mobile development
10%
126
Comparisons to other languages
3%
31
Other

The top six choices are exactly the same as last year. Haskell users would like to see more written about best practices, design patterns, application architectures, library walkthroughs, performance analysis, and tooling choices. I think this year has seen improvement in these intermediate-level topics, thanks in no small part to Type Classes, but clearly there’s room for more. For those of you that are using Haskell at work, I’ll bet the community would appreciate you writing about some of the choices you’ve made along the way.

Feelings

Up until this point I have been keeping the order of the questions the same as they were in the survey. For this section I will instead sort them from best to worst. Since each question has the same answer choices, a score can be given to each question by assigning a number value to each choice and averaging them. “Strongly agree” is worth 5 points, “Agree” 4, “Neutral” 3, “Disagree” 2, and “Strongly disagree” 1.

I would prefer to use Haskell for my next new project.

Single select. Average: 4.45

58%
702
Strongly agree
27%
330
Agree
7%
87
Neutral
3%
32
Disagree
1%
10
Strongly disagree

Similar to last year, most people would prefer to use Haskell for their next project.

I would recommend using Haskell to others.

Single select. Average: 4.32

47%
575
Strongly agree
36%
434
Agree
9%
106
Neutral
3%
36
Disagree
1%
9
Strongly disagree

Also similar to last year, most people would recommend Haskell to others.

Once my Haskell program compiles, it generally does what I intended.

Single select. Average: 4.19

34%
409
Strongly agree
48%
586
Agree
11%
139
Neutral
1%
16
Disagree
1%
7
Strongly disagree

This is a bit of a meme about Haskell. Compared to last year people actually agree with this more. So perhaps there’s some truth to this meme.

I am satisfied with Haskell's compilers, such as GHC.

Single select. Average: 4.18

34%
413
Strongly agree
49%
593
Agree
10%
117
Neutral
2%
30
Disagree
1%
9
Strongly disagree

Just like last year, people like their Haskell compiler, which is overwhelming GHC.

I am satisfied with Haskell as a language.

Single select. Average: 4.18

35%
419
Strongly agree
50%
609
Agree
7%
89
Neutral
4%
45
Disagree
1%
11
Strongly disagree

This is more or less the same as the past two years. People like Haskell as a language.

I think that software written in Haskell is easy to maintain.

Single select. Average: 4.17

37%
447
Strongly agree
41%
494
Agree
15%
179
Neutral
2%
22
Disagree
1%
9
Strongly disagree

This is similar to last year, but not as many people feel strongly about it. For me personally this is the most compelling reason to use Haskell, but I can see how the changes in GHC 8.8 (namely MonadFail and deriving strategies) could make it a harder sell in the short term due to churn.

Haskell's performance meets my needs.

Single select. Average: 4.05

29%
354
Strongly agree
47%
572
Agree
14%
164
Neutral
4%
54
Disagree
1%
9
Strongly disagree

This has improved a little bit since last year. Haskell is generally fast enough to meet people’s needs.

I feel welcome in the Haskell community.

Single select. Average: 4.02

31%
374
Strongly agree
43%
516
Agree
19%
225
Neutral
3%
36
Disagree
1%
16
Strongly disagree

This is basically the same as last year. The Haskell community is a place where most everyone feels welcome.

I am satisfied with Haskell's package repositories, such as Hackage.

Single select. Average: 3.85

20%
247
Strongly agree
50%
602
Agree
18%
219
Neutral
6%
71
Disagree
2%
19
Strongly disagree

Similar to the past two years, people generally like Haskell’s package repositories, but they don’t feel too strongly about it.

I think Haskell libraries are high quality.

Single select. Average: 3.82

19%
226
Strongly agree
47%
572
Agree
24%
285
Neutral
5%
59
Disagree
1%
10
Strongly disagree

At this point we start getting into the questions where more people feel neutral than strongly agree, even though overall the sentiment is still positive. The answers to this question have stayed remarkably consistent year after year. Haskell libraries are high quality, but they’re not blowing people away with how great they are.

I think that Haskell libraries perform well.

Single select. Average: 3.74

11%
139
Strongly agree
51%
620
Agree
28%
345
Neutral
2%
30
Disagree
1%
9
Strongly disagree

This looks about the same as last year. Haskell libraries perform well, but not as well as Haskell itself. To mean that means there’s some room for improvement, but without more specific data it’s hard to come up with an actionable takeaway.

Haskell is working well for my team.

Single select. Average: 3.71

22%
270
Strongly agree
21%
254
Agree
34%
414
Neutral
4%
44
Disagree
2%
19
Strongly disagree

I can find Haskell libraries for the things that I need.

Single select. Average: 3.58

10%
123
Strongly agree
49%
590
Agree
25%
299
Neutral
10%
127
Disagree
2%
20
Strongly disagree

This is a little worse than the past two years. That makes sense to me, since the lack of critical libraries is one of the main reasons why people aren’t using Haskell at work.

I am satisfied with Haskell's build tools, such as Cabal.

Single select. Average: 3.49

12%
147
Strongly agree
42%
513
Agree
25%
307
Neutral
12%
145
Disagree
4%
49
Strongly disagree

This has improved a little over the previous years. It could be that people are switching over to Nix and enjoying that. Or it could be that people are enjoying the recent improvements to cabal-install. Or maybe people are simply getting more comfortable with their existing workflows.

I think that Haskell libraries work well together.

Single select. Average: 3.44

7%
87
Strongly agree
41%
492
Agree
34%
416
Neutral
10%
121
Disagree
2%
22
Strongly disagree

This hasn’t changed much compared to previous years. I’d be curious to drill down into this one to see how Haskell libraries could work better together. Is it a symptom of libraries that define data types also having to define type class instances? Or is it related to libraries in the same domain not sharing a core set of data types? I don’t have enough information to say.

I think that Haskell libraries provide a stable API.

Single select. Average: 3.44

6%
67
Strongly agree
42%
506
Agree
37%
444
Neutral
8%
98
Disagree
2%
21
Strongly disagree

This is the same as the past two years. Personally, I feel like most libraries are very stable, but there have been some high-profile instability in the past year, like network version 3.

I have a good understanding of Haskell best practices.

Single select. Average: 3.20

8%
94
Strongly agree
31%
381
Agree
34%
412
Neutral
18%
220
Disagree
5%
56
Strongly disagree

Here’s where a significant number of people start disagreeing. For this question, the results look similar to last year. Some people moved from “Disagree” to “Neutral”, so maybe we’re making some progress on this front. Regardless, most Haskell users don’t feel like they have a good understanding of best practices.

I think that Haskell libraries are easy to use.

Single select. Average: 3.11

3%
41
Strongly agree
28%
344
Agree
42%
507
Neutral
17%
208
Disagree
4%
47
Strongly disagree

This looks the same as previous years. If I had to guess, I’d say that the lack of good documentation is what makes Haskell libraries hard to use. Or at least better documentation could make libraries easier to use.

Haskell is critical to my company's success.

Single select. Average: 3.08

15%
177
Strongly agree
13%
154
Agree
31%
375
Neutral
11%
131
Disagree
12%
150
Strongly disagree

This distribution is similar to last year. I’m a little confused by the results though. When I wrote the question, I had assumed that strongly disagreeing with this would mean that Haskell is actively harmful to your company’s success. I think that’s not how people interpreted this question. Next year I will try to make this clearer.

As a hiring manager, I can easily find qualified Haskell candidates.

Single select. Average: 2.91

4%
43
Strongly agree
8%
93
Agree
42%
509
Neutral
8%
95
Disagree
7%
80
Strongly disagree

This is actually looking better than last year. I think many people answered “Neutral” because they aren’t a hiring manager, which kind of skews the results. Regardless, things are looking up! It’s slightly easier this year to hire Haskell developers than last year.

I think Haskell libraries are well documented.

Single select. Average: 2.86

3%
39
Strongly agree
23%
280
Agree
36%
432
Neutral
24%
292
Disagree
9%
115
Strongly disagree

Here’s where we get into the questions where more people disagree than agree. Broadly speaking this one looks the same as the last two years, but there has been a slight improvement. This is frustrating to see because Haskell has a reputation for not having great documentation, but not much improvement is being made in the area. I wonder if there’s a way for us as a community to encourage people to write documentation?

I can easily reason about the performance of my Haskell code.

Single select. Average: 2.75

3%
41
Strongly agree
18%
217
Agree
34%
408
Neutral
30%
369
Disagree
9%
109
Strongly disagree

Another evergreen Haskell problem with not much movement over the years. Haskell’s laziness by default means that any performance reasoning you’ve got from other languages probably doesn’t apply, since those languages are most likely strict. However I think it’s important to note that in general people are happy with the performance of their Haskell programs, even if they may not easily be able to reason about it.

I can easily compare competing Haskell libraries to select the best one.

Single select. Average: 2.69

2%
30
Strongly agree
19%
232
Agree
32%
390
Neutral
30%
360
Disagree
12%
143
Strongly disagree

This has improved a little, but it’s still a sore spot. It’s hard to select between competing Haskell libraries, if you’re even aware of the alternatives in the first place. I’m encouraged by some new libraries explicitly comparing themselves to their competitors, but that doesn’t seem like something that every library is going to do.

As a candidate, I can easily find Haskell jobs.

Single select. Average: 2.48

3%
33
Strongly agree
11%
130
Agree
30%
366
Neutral
25%
298
Disagree
18%
219
Strongly disagree

And finally here we have the prompt that Haskell users feel the worst about: Being able to find a job using Haskell. I would love to be able to break this down even further. My guess is that this is primarily influenced by two things: A general lack of Haskell jobs, and the Haskell jobs that are available requiring a high level of expertise. There aren’t many entry-level Haskell jobs available.

Demographics

Which country do you live in?

Single select.

26%
316
United States
10%
126
United Kingdom
7%
88
Germany
4%
54
France
4%
48
Canada
4%
45
Australia
4%
44
Russia
3%
40
Netherlands
2%
28
Poland
2%
27
Sweden
2%
26
Japan
2%
20
Switzerland
2%
20
Italy
2%
19
India
2%
19
Brazil
1%
16
Norway
1%
15
Finland
1%
14
Ukraine
1%
14
Spain
1%
14
Austria
1%
11
Belgium
1%
10
Denmark
1%
10
China
1%
9
Turkey
1%
9
Singapore
1%
9
New Zealand
1%
9
Ireland
1%
9
Czech Republic
1%
8
Romania
1%
8
Argentina
1%
7
Greece
0%
6
Israel
0%
6
Bulgaria
0%
5
South Africa
0%
4
South Korea
0%
4
Portugal
0%
4
Croatia
0%
4
Colombia
0%
4
Chile
0%
3
Mexico
0%
3
Ecuador
0%
2
Vietnam
0%
2
Philippines
0%
2
Paraguay
0%
2
Nigeria
0%
2
Malaysia
0%
2
Estonia
0%
2
Belarus
0%
1
Zimbabwe
0%
1
Yemen
0%
1
Uruguay
0%
1
Uganda
0%
1
Thailand
0%
1
Slovakia
0%
1
Saudi Arabia
0%
1
Puerto Rico
0%
1
Pakistan
0%
1
Other
0%
1
North Korea
0%
1
Morocco
0%
1
Luxembourg
0%
1
Lithuania
0%
1
Latvia
0%
1
Kenya
0%
1
Iran
0%
1
Hungary
0%
1
Haiti
0%
1
Dominican Republic
0%
1
Costa Rica
0%
1
Cambodia

How old are you?

Single select.

0%
6
Under 18 years old
16%
195
18 to 24 years old
46%
552
25 to 34 years old
24%
292
35 to 44 years old
7%
85
45 to 54 years old
2%
26
55 to 64 years old
0%
4
Over 65 years old

What is your gender?

Single select.

91%
1100
Male
3%
32
Female
2%
28
Non-binary

Do you identify as transgender?

Single select.

91%
1106
No
2%
28
Yes

Are you a student?

Single select.

81%
986
No
11%
131
Yes, full time
4%
53
Yes, part time

What is the highest level of education you have completed?

Single select.

1%
11
Less than high school diploma
7%
87
High school diploma
11%
134
Some college
2%
20
Associate degree
35%
424
Bachelor's degree
26%
312
Master's degree
2%
23
Professional degree
13%
155
Doctoral degree

What is your employment status?

Single select.

72%
867
Employed full time
7%
87
Employed part time
8%
94
Self employed
6%
70
Not employed, but looking for work
3%
39
Not employed, and not looking for work
1%
7
Retired

How large is the company you work for?

Single select.

13%
163
Fewer than 10 employees
32%
390
10 to 99 employees
16%
196
100 to 999 employees
23%
275
More than 1,000 employees
6%
78
Other

How many years have you been coding?

Single select.

8%
91
0 to 4 years
25%
307
5 to 9 years
22%
268
10 to 14 years
15%
184
15 to 19 years
11%
133
20 to 24 years
7%
80
25 to 29 years
8%
102
30 or more years

How many years have you been coding professionally?

Single select.

32%
383
0 to 4 years
29%
346
5 to 9 years
14%
175
10 to 14 years
9%
111
15 to 19 years
6%
75
20 to 24 years
3%
31
25 to 29 years
3%
33
30 or more years

Do you code as a hobby?

Single select.

92%
1110
Yes
5%
65
No

Have you contributed to any open source projects?

Single select.

79%
959
Yes
18%
216
No

Meta

Did you take any previous surveys?

Multiple select.

44%
538
2018
24%
285
2017

How did you hear about this survey?

Single select.

31%
376
Reddit
20%
248
Twitter
17%
203
Haskell Weekly
7%
79
Lobsters
7%
90
Mailing lists
6%
77
Slack
2%
28
In person
1%
11
Telegram
0%
4
Discourse
0%
4
Mastodon
0%
3
Discord
0%
3
GitHub
0%
3
IRC
0%
2
Matrix/Riot
3%
36
Other

Free response

If you wanted to convince someone to use Haskell, what would you say?

Optional. Free responses were collected but not analyzed.

If you could change one thing about Haskell, what would it be?

Optional. Free responses were collected but not analyzed.