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.