title
2020 State of Haskell Survey results
The fourth annual State of Haskell Survey closed last week.
This post will graph the responses, analyze them, and compare them to previous years.
You may be interested in similar posts from [2019][], [2018][], and [2017][].
The number of survey responses has stayed remarkably consistent through the years.
This year I received 1,348 responses.
Last year it was 1,211.
In 2018: 1,361.
And the first year got 1,335.
To everyone who filled out the survey: Thank you!
Unfortunately this year there was a [bug][] in the code that processed submissions.
For questions that allowed multiple answers, only one of the answer choices was recorded.
For example if you selected both GHC and GHCJS as compilers that you use, only one of them would be present in your submission.
Once I noticed the bug I quickly fixed it, but anything submitted within the first 24 hours was affected by this bug.
In order to avoid confusion, I have separated the results from these potentially wrong submissions.
I deeply regret the bug and will make sure that it doesn't happen next year.
You can download the responses as a [JSON][] or [CSV][] file.
Both are licensed under the [ODbL][].
[2019]: {% post_url 2019-11-16-haskell-survey-results %}
[2018]: {% post_url 2018-11-18-2018-state-of-haskell-survey-results %}
[2017]: {% post_url 2017-11-15-2017-state-of-haskell-survey-results %}
[bug]: https://github.com/haskellweekly/haskellweekly/commit/3ca54320d236e74662599ddd4a9d200cd19001ec
[JSON]: /static/pages/2020-11-22-haskell-survey-results.json.zip
[CSV]: /static/pages/2020-11-22-haskell-survey-results.csv.zip
[ODbL]: https://opendatacommons.org/licenses/odbl/
<style>
.row {
position: relative;
}
.bar {
height: 100%;
left: 0;
max-width: 100%;
position: absolute;
top: 0;
}
.b1 {
background-color: #9e9ac8;
}
.b2 {
background-color: #cbc9e2;
}
.b3 {
background-color: #67a9cf;
}
.b4 {
background-color: #ef8a62;
}
.percent, .count, .choice {
display: inline-block;
position: relative;
}
.percent, .count {
text-align: right;
width: 3em;
}
.choice {
padding-left: 1em;
}
</style>
Haskell usage
What is your email address?
Do you use Haskell?
If you stopped using Haskell, how long did you use it before you stopped?
If you do not use Haskell, why not?
How long have you been using Haskell?
How frequently do you use Haskell?
How would you rate your proficiency in Haskell?
Where do you use Haskell?
Do you use Haskell at work?
If you do not use Haskell at work, why not?
Which programming languages other than Haskell are you fluent in?
Which types of software do you develop with Haskell?
Which industries do you use Haskell in?
Projects
How many Haskell projects do you contribute to?
What is the total size of all the Haskell projects you contribute to?
Which platforms do you develop Haskell on?
Which platforms do you target?
Compilers
Which Haskell compilers do you use?
Which installation methods do you use for your Haskell compiler?
Has upgrading your Haskell compiler broken your code in the last year?
How has upgrading your Haskell compiler broken your code in the last year?
Which versions of GHC do you use?
Which language extensions would you like to be enabled by default?
How important do you feel it would be to have a new version of the Haskell language standard?
Tooling
Which build tools do you use for Haskell?
Which editors do you use for Haskell?
Which version control systems do you use for Haskell?
Where do you get Haskell packages from?
Which tools do you use to test Haskell code?
Which tools do you use to benchmark Haskell code?
Infrastructure
Which tools do you use to deploy Haskell applications?
Where do you deploy Haskell applications?
Community
Where do you interact with the Haskell community?
Which of the following Haskell topics would you like to see more written about?
Feelings
I feel welcome in the Haskell community.
I am satisfied with Haskell as a language.
I am satisfied with Haskell's compilers, such as GHC.
I am satisfied with Haskell's build tools, such as Cabal.
I am satisfied with Haskell's package repositories, such as Hackage.
I can find Haskell libraries for the things that I need.
I think Haskell libraries are high quality.
I have a good understanding of Haskell best practices.
I think Haskell libraries are well documented.
I can easily compare competing Haskell libraries to select the best one.
I think that Haskell libraries are easy to use.
I think that Haskell libraries provide a stable API.
I think that Haskell libraries work well together.
I think that software written in Haskell is easy to maintain.
Once my Haskell program compiles, it generally does what I intended.
I think that Haskell libraries perform well.
Haskell's performance meets my needs.
I can easily reason about the performance of my Haskell code.
I would recommend using Haskell to others.
I would prefer to use Haskell for my next new project.
Haskell is working well for my team.
Haskell is critical to my company's success.
As a candidate, I can easily find Haskell jobs.
As a hiring manager, I can easily find qualified Haskell candidates.
Demographics
Which country do you live in?
How old are you?
What is your gender?
Do you identify as transgender?
Are you a student?
What is the highest level of education you have completed?
What is your employment status?
How large is the company you work for?
How many years have you been coding?
How many years have you been coding professionally?
Do you code as a hobby?
Have you contributed to any open source projects?
Meta
Did you take any previous surveys?
How did you hear about this survey?
Free response
If you wanted to convince someone to use Haskell, what would you say?
If you could change one thing about Haskell, what would it be?
What is your email address?
Providing an email address was optional this year.
Optional. Single select.
11%
152
No, but I used to
If you stopped using Haskell, how long did you use it before you stopped?
Optional. Single select.
If you do not use Haskell, why not?
Optional. Multi select. Allowed 'other'.
5%
+0%
12
+0
Haskell does not support the platforms I need
8%
+5%
20
+12
Haskell is too hard to learn
3%
+0%
7
+0
Haskell lacks critical features
8%
+1%
20
+3
Haskell lacks critical libraries
8%
+2%
21
+5
Haskell lacks critical tools
9%
+5%
22
+13
Haskell's documentation is not good enough
2%
+4%
5
+9
Haskell's performance is not good enough
25%
+28%
62
+71
My company doesn't use Haskell
How long have you been using Haskell?
Optional. Single select.
13%
169
1 month to 1 year
14%
183
1 year to 2 years
12%
155
2 years to 3 years
12%
152
3 years to 4 years
10%
125
4 years to 5 years
4%
52
9 years to 10 years
9%
114
10 years to 15 years
3%
41
15 years to 20 years
How frequently do you use Haskell?
Optional. Single select.
How would you rate your proficiency in Haskell?
Optional. Single select.
Where do you use Haskell?
Optional. Multi select. Did not allow 'other'.
21%
+24%
273
+322
Industry
Do you use Haskell at work?
Optional. Single select.
29%
372
Yes, most of the time
22%
274
Yes, some of the time
2%
21
No, but my company does
42%
536
No, but I'd like to
5%
66
No, and I don't want to
If you do not use Haskell at work, why not?
Optional. Multi select. Allowed 'other'.
2%
+0%
13
+0
Haskell does not support the platforms I need
7%
+1%
43
+7
Haskell is too hard to learn
2%
+0%
12
+2
Haskell lacks critical features
7%
+1%
45
+9
Haskell lacks critical libraries
6%
+1%
36
+6
Haskell lacks critical tools
4%
+1%
27
+7
Haskell's documentation is not good enough
3%
+1%
17
+8
Haskell's performance is not good enough
8%
+3%
49
+20
It's too hard to hire Haskell developers
31%
+38%
193
+233
My company doesn't use Haskell
Which programming languages other than Haskell are you fluent in?
Optional. Multi select. Allowed 'other'.
21%
+1%
265
+14
JavaScript
9%
+12%
120
+150
TypeScript
Which types of software do you develop with Haskell?
Optional. Multi select. Allowed 'other'.
9%
+0%
115
+0
Agents or daemons
23%
+2%
279
+28
API services (returning non-HTML)
14%
+1%
166
+11
Automation or scripts
29%
+9%
351
+115
Command-line programs (CLI)
17%
+6%
206
+75
Data processing
4%
+1%
53
+18
Desktop programs (GUI)
15%
+14%
180
+166
Libraries or frameworks
13%
+17%
153
+207
Web services (returning HTML)
Which industries do you use Haskell in?
Optional. Multi select. Allowed 'other'.
7%
+4%
65
+40
Banking or finance
5%
+3%
51
+28
Commerce or retail
4%
+3%
34
+25
Cryptocurrency
3%
+1%
28
+12
Healthcare or medical
How many Haskell projects do you contribute to?
Optional. Single select.
What is the total size of all the Haskell projects you contribute to?
Optional. Single select.
23%
211
Less than 1,000 lines of code
31%
292
Between 1,000 and 9,999 lines of code
29%
270
Between 10,000 and 99,999 lines of code
17%
154
More than 100,000 lines of code
Which platforms do you develop Haskell on?
Optional. Multi select. Allowed 'other'.
Which platforms do you target?
Optional. Multi select. Allowed 'other'.
12%
+17%
148
+206
Windows
Which Haskell compilers do you use?
Optional. Multi select. Allowed 'other'.
Which installation methods do you use for your Haskell compiler?
Optional. Multi select. Allowed 'other'.
3%
+1%
43
+19
Official binaries
0%
+0%
5
+3
Minimal installer
4%
+1%
51
+18
Haskell Platform
6%
+5%
83
+58
Operating system package
Has upgrading your Haskell compiler broken your code in the last year?
Optional. Single select.
How has upgrading your Haskell compiler broken your code in the last year?
Optional. Multi select. Allowed 'other'.
6%
+2%
21
+8
Compiler bugs
21%
+13%
80
+50
Expected changes, such as the MonadFail proposal
26%
+19%
96
+71
Incompatible dependencies
9%
+11%
34
+41
New warnings
4%
+6%
15
+24
Unexpected changes
Which versions of GHC do you use?
Optional. Multi select. Allowed 'other'.
Which language extensions would you like to be enabled by default?
Optional. Multi select. Did not allow 'other'.
+62%
-4%
+616
-39
LambdaCase
+61%
-7%
+600
-69
OverloadedStrings
+52%
-4%
+517
-35
DeriveGeneric
+49%
-4%
+481
-38
DeriveFunctor
+47%
-4%
+469
-43
BangPatterns
+45%
-4%
+446
-36
ScopedTypeVariables
+43%
-4%
+427
-39
DeriveFoldable
+41%
-4%
+406
-42
DerivingVia
+40%
-5%
+397
-51
FlexibleInstances
+40%
-4%
+396
-43
TypeApplications
+40%
-5%
+394
-53
FlexibleContexts
+39%
-4%
+385
-39
DeriveTraversable
+38%
-4%
+379
-43
RankNTypes
+38%
-4%
+373
-44
GeneralizedNewtypeDeriving
+37%
-4%
+365
-41
DerivingStrategies
+37%
-4%
+363
-41
MultiParamTypeClasses
+37%
-4%
+362
-44
TupleSections
+35%
-7%
+346
-71
DataKinds
+33%
-4%
+325
-40
KindSignatures
+32%
-6%
+320
-57
TypeFamilies
+30%
-4%
+298
-37
StandaloneDeriving
+30%
-6%
+293
-58
MultiWayIf
+29%
-5%
+285
-46
DeriveDataTypeable
+28%
-5%
+278
-53
ConstraintKinds
+28%
-5%
+276
-47
TypeOperators
+28%
-6%
+273
-60
ViewPatterns
+26%
-4%
+257
-41
InstanceSigs
+26%
-5%
+252
-47
DeriveLift
+25%
-4%
+244
-37
NumericUnderscores
+24%
-6%
+242
-57
NamedFieldPuns
+24%
-5%
+240
-49
EmptyCase
+24%
-6%
+240
-57
GADTSyntax
+24%
-6%
+239
-64
ExplicitForAll
+23%
-5%
+228
-52
BinaryLiterals
+23%
-6%
+226
-62
FunctionalDependencies
+23%
-10%
+223
-97
DeriveAnyClass
+22%
-9%
+213
-84
RecordWildCards
+21%
-6%
+211
-55
DefaultSignatures
+21%
-6%
+203
-61
ExistentialQuantification
+20%
-5%
+194
-47
PatternSynonyms
+19%
-13%
+191
-124
ApplicativeDo
+16%
-10%
+159
-100
BlockArguments
+16%
-6%
+155
-63
PolyKinds
+16%
-10%
+154
-97
DuplicateRecordFields
+15%
-7%
+153
-72
Rank2Types
+14%
-12%
+141
-114
OverloadedLists
+12%
-6%
+117
-61
HexFloatLiterals
+12%
-7%
+116
-69
TypeFamilyDependencies
+11%
-3%
+110
-31
StandaloneKindSignatures
+11%
-9%
+105
-93
OverloadedLabels
+10%
-7%
+103
-67
NamedWildCards
+10%
-13%
+101
-129
NoImplicitPrelude
+10%
-7%
+98
-73
TypeSynonymInstances
+10%
-10%
+98
-97
UnicodeSyntax
+10%
-8%
+96
-81
PartialTypeSignatures
+10%
-7%
+94
-70
QuantifiedConstraints
+9%
-5%
+92
-53
NegativeLiterals
+9%
-9%
+84
-88
DisambiguateRecordFields
+8%
-10%
+82
-99
QuasiQuotes
+8%
-6%
+79
-59
RoleAnnotations
+8%
-8%
+79
-75
TypeInType
+8%
-8%
+78
-75
PackageImports
+8%
-14%
+78
-137
TemplateHaskell
+7%
-9%
+69
-93
RecursiveDo
+7%
-9%
+65
-86
NoStarIsType
+6%
-11%
+63
-105
MonadComprehensions
+6%
-7%
+62
-65
LiberalTypeSynonyms
+6%
-8%
+62
-83
UnboxedTuples
+6%
-4%
+60
-42
ImportQualifiedPost
+6%
-9%
+60
-84
UnboxedSums
+6%
-10%
+60
-96
MagicHash
+6%
-8%
+59
-77
NoMonomorphismRestriction
+6%
-6%
+56
-60
NumDecimals
+6%
-8%
+56
-77
ConstrainedClassMethods
+6%
-20%
+56
-195
AllowAmbiguousTypes
+5%
-13%
+52
-133
StrictData
+5%
-7%
+50
-69
ExplicitNamespaces
+5%
-9%
+48
-84
ParallelListComp
+5%
-10%
+47
-99
ForeignFunctionInterface
+4%
-6%
+44
-64
NullaryTypeClasses
+4%
-8%
+35
-80
PostfixOperators
+4%
-15%
+35
-144
UndecidableInstances
+3%
-4%
+34
-41
UnliftedNewtypes
+3%
-8%
+28
-78
MonoLocalBinds
+3%
-11%
+28
-113
CApiFFI
+3%
-12%
+28
-115
DatatypeContexts
+3%
-13%
+28
-125
TemplateHaskellQuotes
+3%
-15%
+28
-144
OverlappingInstances
+2%
-13%
+20
-129
ImpredicativeTypes
+2%
-15%
+18
-147
ImplicitParams
+2%
-9%
+16
-87
ExtendedDefaultRules
+2%
-13%
+16
-126
RebindableSyntax
+1%
-9%
+14
-90
InterruptibleFFI
+1%
-9%
+14
-92
NoMonadFailDesugaring
+1%
-9%
+13
-85
StaticPointers
+1%
-10%
+13
-95
TransformListComp
+1%
-13%
+13
-133
NPlusKPatterns
+1%
-14%
+8
-134
UndecidableSuperClasses
+1%
-9%
+7
-87
NoTraditionalRecordSyntax
+1%
-18%
+7
-176
IncoherentInstances
+1%
-11%
+5
-109
Trustworthy
+0%
-11%
+4
-107
NoEmptyDataDecls
+0%
-11%
+3
-108
NoPatternGuards
How important do you feel it would be to have a new version of the Haskell language standard?
Optional. Single select.
15%
179
Extremely important
37%
441
Moderately important
14%
171
Slightly important
9%
107
Not at all important
Which build tools do you use for Haskell?
Optional. Multi select. Allowed 'other'.
Which editors do you use for Haskell?
Optional. Multi select. Allowed 'other'.
16%
+13%
210
+168
Emacs family
3%
+1%
40
+9
IntelliJ IDEA
1%
+1%
17
+9
Sublime Text
16%
+17%
208
+224
Vi family
19%
+22%
245
+284
Visual Studio Code
Which version control systems do you use for Haskell?
Optional. Multi select. Allowed 'other'.
Where do you get Haskell packages from?
Optional. Multi select. Allowed 'other'.
28%
+34%
346
+425
Stackage
Which tools do you use to test Haskell code?
Optional. Multi select. Allowed 'other'.
2%
+0%
25
+3
Haskell Test Framework
30%
+29%
301
+289
QuickCheck
Which tools do you use to benchmark Haskell code?
Optional. Multi select. Allowed 'other'.
37%
+47%
181
+230
Criterion
Which tools do you use to deploy Haskell applications?
Optional. Multi select. Allowed 'other'.
21%
+10%
203
+90
Docker images
8%
+6%
79
+54
Dynamic binaries
14%
+11%
132
+101
Nix expressions
24%
+28%
230
+263
Static binaries
Where do you deploy Haskell applications?
Optional. Multi select. Allowed 'other'.
17%
+8%
147
+72
Amazon Web Services
4%
+3%
36
+25
Digital Ocean
4%
+3%
38
+26
Google Cloud
2%
+1%
16
+5
Microsoft Azure
26%
+34%
224
+285
Self or company owned servers
Community
Where do you interact with the Haskell community?
Optional. Multi select. Allowed 'other'.
8%
+0%
94
+0
Conferences (academic)
10%
+0%
122
+1
Conferences (commercial)
9%
+1%
108
+15
Mailing lists
11%
+7%
132
+85
Stack Overflow
14%
+20%
161
+233
Twitter
Which of the following Haskell topics would you like to see more written about?
Optional. Multi select. Allowed 'other'.
12%
+0%
141
+0
Algorithm implementations
22%
+0%
252
+2
Application architectures
9%
+0%
103
+3
Beginner fundamentals
29%
+1%
335
+6
Best practices
15%
+0%
167
+5
Case studies
5%
+0%
55
+4
Comparisons to other languages
14%
+0%
157
+4
Debugging how-tos
22%
+1%
253
+15
Design patterns
7%
+1%
82
+6
Game development
17%
+3%
190
+31
Library walkthroughs
7%
+1%
81
+14
Machine learning
5%
+2%
62
+19
Mobile development
17%
+7%
190
+79
Performance analysis
15%
+4%
173
+49
Production infrastructure
13%
+4%
146
+40
Project maintenance
11%
+3%
130
+36
Project setup
18%
+12%
201
+135
Tooling choices
12%
+14%
137
+159
Web development
I feel welcome in the Haskell community.
Optional. Single select.
I am satisfied with Haskell as a language.
Optional. Single select.
I am satisfied with Haskell's compilers, such as GHC.
Optional. Single select.
I am satisfied with Haskell's build tools, such as Cabal.
Optional. Single select.
I am satisfied with Haskell's package repositories, such as Hackage.
Optional. Single select.
I can find Haskell libraries for the things that I need.
Optional. Single select.
I think Haskell libraries are high quality.
Optional. Single select.
I have a good understanding of Haskell best practices.
Optional. Single select.
I think Haskell libraries are well documented.
Optional. Single select.
10%
127
Strongly disagree
I can easily compare competing Haskell libraries to select the best one.
Optional. Single select.
11%
140
Strongly disagree
I think that Haskell libraries are easy to use.
Optional. Single select.
I think that Haskell libraries provide a stable API.
Optional. Single select.
I think that Haskell libraries work well together.
Optional. Single select.
I think that software written in Haskell is easy to maintain.
Optional. Single select.
Once my Haskell program compiles, it generally does what I intended.
Optional. Single select.
I think that Haskell libraries perform well.
Optional. Single select.
Haskell's performance meets my needs.
Optional. Single select.
I can easily reason about the performance of my Haskell code.
Optional. Single select.
12%
145
Strongly disagree
I would recommend using Haskell to others.
Optional. Single select.
I would prefer to use Haskell for my next new project.
Optional. Single select.
Haskell is working well for my team.
Optional. Single select.
Haskell is critical to my company's success.
Optional. Single select.
15%
121
Strongly disagree
As a candidate, I can easily find Haskell jobs.
Optional. Single select.
26%
250
Strongly disagree
As a hiring manager, I can easily find qualified Haskell candidates.
Optional. Single select.
Which country do you live in?
Optional. Single select.
0%
0
Ashmore and Cartier Islands
0%
0
Bosnia and Herzegovina
0%
0
British Indian Ocean Territory
0%
0
British Virgin Islands
0%
0
Central African Republic
0%
0
Cocos (Keeling) Islands
0%
0
Democratic Republic of the Congo
0%
0
Republic of the Congo
0%
0
Falkland Islands (Islas Malvinas)
0%
0
French Southern and Antarctic Lands
0%
0
Heard Island and McDonald Islands
0%
0
Holy See (Vatican City)
0%
0
Federated States of Micronesia
0%
0
Netherlands Antilles
0%
0
Northern Mariana Islands
0%
0
Saint Kitts and Nevis
0%
0
Saint Pierre and Miquelon
0%
0
Saint Vincent and the Grenadines
0%
0
Sao Tome and Principe
0%
2
Serbia and Montenegro
0%
0
South Georgia and the South Sandwich Islands
0%
0
Turks and Caicos Islands
0%
0
United Arab Emirates
Optional. Single select.
18%
225
18 to 24 years old
44%
569
25 to 34 years old
26%
328
35 to 44 years old
8%
105
45 to 54 years old
Optional. Single select.
Do you identify as transgender?
Optional. Single select.
Optional. Single select.
What is the highest level of education you have completed?
Optional. Single select.
1%
18
Less than high school diploma
8%
108
High school diploma
35%
451
Bachelor's degree
2%
27
Professional degree
What is your employment status?
Optional. Single select.
70%
887
Employed full time
9%
109
Employed part time
6%
82
Not employed, but looking for work
6%
74
Not employed, and not looking for work
How large is the company you work for?
Optional. Single select.
13%
151
Fewer than 10 employees
32%
383
10 to 99 employees
19%
220
100 to 999 employees
25%
300
More than 1,000 employees
How many years have you been coding?
Optional. Single select.
How many years have you been coding professionally?
Optional. Single select.
Optional. Single select.
Have you contributed to any open source projects?
Optional. Single select.
Did you take any previous surveys?
Optional. Multi select. Did not allow 'other'.
How did you hear about this survey?
Optional. Single select.
If you wanted to convince someone to use Haskell, what would you say?
Optional. Free response answers were collected but not analyzed.
If you could change one thing about Haskell, what would it be?
Optional. Free response answers were collected but not analyzed.