The results are in!!
The powerful Haskell community includes researchers who advance the language, and users who apply the language to solve real-world problems. Recently 1100 people took the time to respond to FP Complete's Haskell User Survey. Here are the key results. See the full report by clicking here.
Haskell is thriving in a wide range of real-world uses, and growing rapidly. Nearly all survey respondents wish to continue or increase their level of Haskell use. Satisfaction is very high (13 to 1, or better) with Haskell’s security, quality, reliability, maintainability, and advanced capabilities.
Where 30 months ago there was huge demand for better package management tools, this former roadblock has been cleared. Satisfaction is high (at least 6 times as many satisfied users, vs dissatisfied) with Haskell’s tools, cost-effectiveness, rapid development, performance, compatibility, and deployability -- and with the supportive Haskell community.
Users now want to adopt more Haskell in their work, so understandably they desire more training resources, Haskell expert staff, professional services, and IDE support. They emphatically believe Haskell’s reputation has not yet caught up with its reality.
The Biggest Surprises
These thousand-plus respondents form a picture of a Haskell community that’s much more diverse and project-focused than Haskell’s historic “scientists only” reputation.
Haskell has taken root in diverse industries. Teams use Haskell in many fields and solve many kinds of problems. Survey respondents report building serious work projects in financial analysis, cloud middleware, network security, transportation logistics, healthcare, life sciences, robotics, data repositories, language design, high-performance computing, Web services, OCR, text analysis and natural language processing, system management, e-commerce, high-frequency trading, cryptocurrency, astronomy, online advertising, insurance, hardware engineering, software engineering tools, Internet of Things (IOT), education, XML and JSON and other data parsing and data format conversion, and of course computer science research.
Haskell is used to build major products. While many users select Haskell just for key problems in mixed-language teams, or just the server side of things, many others report building end-to-end solutions fully in Haskell, including back end, front end, microservices, data management, everything.
Engineers are gettin’ it done. In 2015 users complained that Haskell tooling was frustrating and it wasn’t clear how to get productive, but this has improved hugely. Most applied users (80%) use the tool Stack which is new since that time, and others use the tool Cabal which has improved too. With these open-source solutions in hand, the language itself has proven to be much easier than people had worried.
Haskell delivers the quality, features, and performance for production work. The survey focused intently on these issues, and users say in detail that they can build serious IT solutions in Haskell, and that it has the features they want. See the detailed “top strengths” below.
Haskell’s reputation, communication, and education need to catch up to reality. Severely trailing users’ high satisfaction with the language, they are frustrated by a lack of materials to easily explain their enthusiasm to colleagues and management. Haskell’s historic reputation as elite or hard to learn is a real problem for users, who believe better outreach material will increase adoption.
Intermediate users and teams need more attention from the community. While ratings for the Haskell community’s inclusiveness remain stellar (19 times as many users feel included/welcomed vs. the opposite), applied and non-advanced users express a strong desire to be embraced and helped along, with more encouragement and examples and mentoring, in less advanced terms they can easily follow.
Top Strengths of Haskell
Which aspects of Haskell best satisfy users? These statements earned the highest ratio of positive (4 or 5, agree or strongly agree) to negative (2 or 1, disagree or strongly disagree). To help understand the ratings I’ve also included a few of the thousands of comments users gave.
118:1 (avg=4.37) Software developed using Haskell is ...high in quality (low in bugs or defects).
- Really impressive. Bugs were trivial.
- It is probably the most production-capable language I've used.
50:1 (avg=4.21) … advanced, innovative.
- I use Haskell mostly for compilers and other symbolic processing, which I feel it fits naturally at. Along with prototyping, and evaluators, and so on.
- We have everything implemented in Haskell build system, backend services and microservices, even web frontend
- We've implemented a medical data consumption system for a client, most of the data processing was made in Haskell, also, a real time catalog was implemented in the past with great success.
- Machine learning
- Phylogenetic analysis software
47:1 (avg=3.88) … secure.
- Picus is a successful cyber security product built with Haskell primarily.
22:1 (avg=3.95) … reliable, handles faults well.
- Haskell doesn't prevent you from writing terrible code, it just helps more than regular languages.
- I really would consider using Haskell if I work on a very critical system with quite a lot of developers involved.
16:1 (avg=4.04) … maintainable over time.
- The primary benefits for me are maintainability and type-driven design. Refactors are easy and safe.
- The main win for us is maintainability. We're able to refactor ruthlessly because we know things won't go pear-shaped.
- Refactorable, too. Agile projects easier to do with a language that has a low barrier to entry (and even encourages!) refactoring.
13:1 (avg=3.94) Using Haskell, I can readily deliver projects that support the kinds of algorithms, computations, analysis, and other processing I care about.
- I use haskell for most of my web scraping, data processing, and some analysis. I also use haskell for building static web applications
- Internal support tools for research and development e.g. schema diagram generator for MS SQL Server databases
- Our software product is written primarily in Haskell (~80%, ~300,000 loc)
- Rapid development of a prototype interpreter/compiler suite.
- Our Haskell data modelling and data processing engine has been shipped for several years.
- cryptocurrency development tools; database library
- Authentication service, OCR, text analysis
- Front end, back end, reporting solution for insurance
- We have everything implemented in Haskell build system, backend services and microservices, even web frontend
- One robot is moving right now and painted on a graph using Qt.
- Cardano is a product now in production
- Implementation of railway signalling system.
- Genome analysis tools
- We developed a Haskell SDK for using AWS S3 object storage
- Our core optimization and simulation logic is all written in Haskell and currently deployed at a test set of stores and distribution centers
9:1 (avg=3.80) The Haskell language has the features we need for successful projects.
- Haskell is by far the best language I have used and I've been writing software since 1974.
- The elegance and expressiveness please the developer.
10:1 (avg=3.69) ... cost-effective.
- The power to weight ratio for Haskell is amazing and with a small team I think we were able to handle a lot with more confidence. That said getting experience takes a while and, I guess like with most things, it really helps if you can work with someone more experienced.
7:1 (avg=3.63) ... deployable onto the machines where it will run.
- I develop across Windows, FreeBSD and nix and Haskell just works in those environments.
- building deployable artifacts on one OS and deploying it on another; not so simple
7:1 (avg=3.53) I can easily incorporate new features or versions without breaking my existing work.
- As I learned I improved the code. Quality did not degrade and I could rely on my functional tests all though the process.
6:1 (avg=3.62) The available Haskell tools make me more productive.
- Haskell by itself would allow for rapid development, but when starting greenfield projects, there can be a lack of knowledge concerning best practices to use, advantages/ disadvantages of libraries etc. Once the right choices regarding this issues are made, Haskell is enormously beneficial.
- Haskell needs a lot more vertical integrated tools.
- The Haskell build tools are fantastic (Stack esp.)
- stack and cabal have made huge improvements to software
- stack made a big difference. I can go back to old projects, or code in old blog posts and get them to work quickly.
6:1 (avg=3.55) ... high performing (fast).
- Our whole API gateway is written in Haskell, which handles millions of requests constantly. We could not be more satisfied with it.
- Haskell has some great tools for writing fast code where necessary. However, reasoning about performance in Haskell is harder
- [We built] a solution for high-frequency trading
- Serving ads quickly in multiple geographic regions with a lot of concurrency logic and relatively low latency, doing some analytics with complicated structured event data
- All backend web services are implemented in Haskell
- I like compiled languages for ease of deployment and speed
DOWNLOAD THE FULL REPORT
The Haskell Community Can Be Very Supportive
The Haskell community itself earns high ratings, though newcomers and intermediate users sometimes feel intimidated or desire more materials suited to their level:
19:1 (avg=3.78) I feel included and welcome in the Haskell community
- Seems like everyone embraces the teaching and learning spirit
- The coolest most forward thinking nerds ever
- I do, but I'm a cis white male
17:1 (avg=3.73) The Haskell community treats people the way we should be treated.
- The haskell community generally sticks to technical issues, and I am happy with it.
- There's a tendency to perpetuate the myth that Haskell can only be used by experts or mathematicians, when in fact the invariants provided by advanced languages accrue to the non-experts and beginners.
15:1 (avg=3.82) I have a positive overall experience when seeking help from the Haskell community.
- I've learned so much from the community, everyone is so intelligent and helpful.
- Even those that ought to be the busiest and most distracted by their own focus managed to find the time to answer questions often with amazing clarity and detail.
- Some tend to be very practical and understand the needs of someone coming from non-functional (or functional but not pure) backgrounds and answer appropriately. Others tend to be more academic which can be off-putting, especially for such a demographic
8:1 (avg=3.70) There are clear opportunities to participate and give back to the Haskell community if I want to.
- Opportunities, yes. Clear ones, not sure. Contributing to GHC itself seems hard, but honestly haven't looked into it. I certainly file issues on other Haskell libraries and attempt to help like that.
- It's difficult to determine what "central" projects the community should focus on and how to help with those.
7:1 (avg=3.59) I easily get sufficient help and advice from the Haskell community.
- One strength of the community is how friendly and smart they are.
- Online tutorials, technical blogs are quite common and of really good quality. There are a lot of nice resources for beginners but less "practical" intermediate content. A good Haskell book targeting intermediate Haskellers will be welcomed.
- Haskell community is smart and passionate, and really helpful. A huge plus!!
There is a minority of users who feel the community can be elitist or sexist. I believe our community needs to get an A+ in this topic, and I will make a special blog post about these comments received. Let’s see how we can do better.
The Need for Services, Publicity, and Training
These 3 topics all showed up on the 2015 survey, so we asked about them again in various ways. Now that technical things are going so well, these remain as the trouble spots for users. Interestingly, none are really technical issues.
Here’s the ratio of disagreeing (rating = 1 or 2) vs. agreeing (rating = 4 or 5), along with the the average rating, where 3 = neutral. I’ve included representative comments from the very many provided.
3:1 (avg=2.46) My organization and I have the professional services, support, mentoring, or training needed for efficient Haskell adoption.
- missing the "lower end" staff training stuff
- We do it all on a really adhoc basis, without formal resources other than stuff like haskellbook and typeclassopedia
- Consulting, code reviews and overall support might be necessary in the future
- We don’t and I don't know how we would go about it
3:1 (avg=2.42) It is easy to convince my management, and any other approvers I care about, that using Haskell merits their approval and support.
- Sadly, Haskell is still perceived as having a steep learning curve
- My management doesn't care which tools or languages I use, they do care about having the job done, and I like it this way.
- The difficulty lies in selling the necessary upskilling of engineers not familiar with Haskell (or FP in general).
- This wasn't the case a year ago. In recent months, some of the approvers are swayed by the languages features and elegance.
- I am the management! We've even convinced clients!
- This is heavily reliant on my personal gravitas, such as it is.
- Haskell's long age has given it a reputation that no longer holds true. Fortunately, there is a tremendous amount of new evidence to help demonstrate the benefits of Haskell.
2.5:1 (avg=2.53) I believe my organization can easily locate and hire, and/or train in-house, all of the skilled staff needed to adopt Haskell.
- Training smart engineers in Haskell has been a doddle. We had most of the team productive within a day or two.
- We haven’t tried.
- There is really not enough Haskellers in my area.
- We've been able to find people when we are hiring, but it usually takes a while. We do have a pretty specific house style of Haskell that's easy to teach given some basic familiarity.
- We don't have the staff to do it inhouse, and Haskell is not on that many resumes.
- I'm figuring this out again, if one accepts remote developers it is easy.
- Code often suffers from poor, and nonstandard documentation it will claim to do something, but short of reimplementing it is impossible to understand why or how.
1.7:1 (avg=2.70) My colleagues and I have sufficient access to Haskell experts or mentors who can help us find the best ways to get things done.
- No one at my workplace knows Haskell better than me. And I am myself a beginner
- We don't have access to experts or mentors but we are all engineers who understand it.
- Great community online, know almost no one offline
- We just don't have access to these professionals
- I've had to mostly forge my own path
- I have gone to many conferences (academic and industrial) to make personal connections with experts
- No FP experts in my organisation
- Haskell by itself would allow for rapid development, but when starting greenfield projects, there can be a lack of knowledge concerning best practices to use, advantages/disadvantages of libraries etc. Once the right choices regarding this issues are made, Haskell is enormously beneficial.
1.6:1 (avg=2.74) I believe I could easily onboard new engineers on my team to my Haskell projects.
- People are actually curious to learn new things at the core, but everyone feels pressure to get things done so few would want to take the risk vs staying with the thing they already know
- Haskell propaganda has an odor of Academia, and not enough corporate bravado, to convince people that there are serious business interests backing the ecosystem
- Sometimes the engineers refuse to learn new tools, and I cannot do anything
- There is no agreed upon collection of snippets that would illustrate to the novice how to accomplish common tasks
- where do you find these people?
- I feel confident in my ability to teach Haskell to new people. However I also think that Haskell is a lot to take (FP, purity, laziness) in all at once.
- Onboarding is rough. the standard prelude should actually include the major packages that developers should use telling people to override to use data.text instead of string is wholly inadequate. Improve the out-of-box experience.
- I am not in a position to convince my superiors of switching to new language/paradigm. Too many unknowns for management to justify it before investors.
- due to library documentation quality, availability of examples to work with, i'm still at the point where haskell development is not what i would call "rapid".
1.6:1 (avg=2.77) Haskell’s reputation helps efforts to get it adopted.
- It's reputation as a powerful tool for superbrains can be a liability
- on one hand reputed to be hard to learn. on the other known for being extremely solid. cuts both ways
- Haskell has a very good academic reputation, but people are generally not convinced that it can be used for real world usage.
- Most of the people think it is black magic and stay away from it
- Yes and no. No, because some people are terrified by unknown.
- It's theoretically intimidating and there's a well known dearth of quality "tutorials", such as you would get in any of the widely used languages.
(I would add anecdotally that the financial technology industry seems to be the exception -- I’ve met so many FinTech people whose impression of Haskell is outstanding, even if they haven’t tried it yet.) It seems we have our work cut out for us -- actual Haskell users are so satisfied, but constantly encounter non-users who believe it would be hard to learn.
Clearly users want better resources to train their colleagues on Haskell, and to teach their management about the benefits that users are already seeing. And clearly there is a need for senior Haskellers to provide commercial-quality services that help get teams up to speed. (This is consistent with our anecdotal experience at FP Complete serving numerous companies that use Haskell -- they value such services, and typically want to reuse known best practices -- if someone will share them.)
Where is Haskell Used Most?
Commercial use of Haskell has increased dramatically and diversified hugely since our previous survey in 2015.
At FP Complete we regularly serve Haskell users in a wide range of industries, but the biggest are financial technology (FinTech), healthcare/life sciences, security-focused Internet services, and transport/aerospace. These and many more were represented in the survey results.
Haskell-at-work users who answered the survey were also led by a large contingent from FinTech, as well as academia (Haskell being a favorite with researchers); then quite a few from network security, e-commerce, and networking in general. We see transport/logistics, diverse fields of manufacturing, and data processing infrastructure such as data mining and document management and cloud storage.
Most surprisingly, we also see Haskell users in truly diverse industries not historically considered Haskell zealots, including gaming, electronics design, and physical sciences HPC (supercomputing/cluster computing). In the past two years Haskell has really broken out of its imaginary “box” and is being used in a wide range of fields. We even see quite a few independent IT consulting/contracting firms using Haskell to create solutions for other companies -- Haskell isn’t just for in-house use anymore.
The biggest lesson for me? Haskell is affecting the world at large. While Haskell continues to be an outstanding research platform -- and may the Haskell community keep up this momentum for a long time to come -- it is now firmly established as a commercial tool for use in a wide range of industries. Given that the top strengths from the survey were “quality, advanced, secure, reliable, maintainable,” with a side dish of “cost effective, productive, high-performance,” this increased popularity makes sense.
The second biggest lesson for me? Haskell is seeing particular success in financial technology. FinTech is one of the most demanding industries for powerful IT, so this validation is gratifying.
Suggestions for Community Action
We can and should celebrate the huge strides Haskell has made in applied adoption. After many years of academic-style development (which continues), a whole lot of applied Haskell users are now deep into successful production with this language and toolset.
We are now a community of fairly advanced to very advanced and successful software developers and computer scientists. We can see how well our technology is working for friends and strangers alike. The challenge before us is to make this powerhouse technology more accessible to the more numerous masses of beginning and intermediate adopters.
In addition to the well-understood areas for standard tool development (IDE support, compiler speed, performance profiling, etc.), and the newer DevOps areas that have gained such importance in recent years (continuous integration, continuous deployment, cloud support, cross-platform integration, etc.), we now face non-technical work items that require some community focus:
- Improved learning paths for developers switching to Haskell (or even just trying Haskell out) from other language backgrounds.
- Community support and pro services for teams that have made the jump into Haskell and now need to ensure projects success -- not about theoretical discussions, but about “how do I solve my practical problem right now, with speed and quality, and impress the boss and colleagues.”
- Continued publication of success stories to help Haskellers overcome the language’s outdated reputation as suitable for only the most senior experts
- Improvements to community moderation to ensure that newbies asking the same old question for the hundredth time, or the weirdest question for the first time, are treated in the welcoming style that makes us all proud to be Haskellers
Suggestions for User Action
If you’ve been looking at Haskell for a while, the enormous success of the language during the past 2.5 years suggests that it may be time to move forward. The variety of users reporting success with Haskell in a wide range of applications and industries tells us that the tools have firmly matured to production quality.
If you’ve had successes with Haskell (perhaps you’re even one of the survey respondents), consider writing up your experience report in some detail so that other would-be Haskellers can learn from you. If you don’t have a good place to post it, I’ll help you find one. (Our own blog isn’t full yet!) Especially consider publishing on sites (or linking from sites) that focus or your industry, not only sharing with current Haskellers but also with your colleagues in FinTech, in genetic research, in molecular dynamics, in network security, in cloud DevOps, in data modeling, in transportation logistics, or whatever field you’re working in. People need to hear about Haskell, and it’s ready to be talked about.
If you need more active help moving forward with Haskell, don’t hesitate to be vocal online about your needs. If you need *really* active hands-on help, you are of course always welcome to contact FP Complete since we do that for a living.
If you’re one of the very many educators using Haskell, consider accelerating your teaching of Haskell and Functional Programming in general to your undergraduates. Industry is clearly ready to move past the era of only-imperative programming, and we need qualified grads.
If you’re an advanced engineer looking to contribute to hardcore Haskell tools or packages, and don’t know where to turn, please show up on the various Haskell online forums and ask “how can I help with x.” If you don’t know whom else to ask, you are welcome to ask me and I’ll refer you to someone helpful. If you’re a lead-level organizer of projects, so much the better.
What Else did FP Complete Learn?
We learned again that Haskell users are generous with their time; it is no small thing for a thousand software experts to complete detailed a 50-question survey, and hundreds made extra time to provide thousands of informative comments. Thank you, Haskellers!
We learned that our thousands of hours contributing to open-source components have not been wasted, and noted with special pleasure that 80% of commercial Haskell users are using Stack, an open-source tool initiated and lead-maintained by engineers from FP Complete. It was heartwarming to read the many comments of thanks and support directed at FP Complete regarding numerous projects we’ve done for the community.
As the world’s leading provider of Haskell tools and services, FP Complete is committed to contributing more than its fair share to the community. These encouraging survey results just reinforce our commitment. We paid for the survey ourselves and did the design, distribution, and data analysis, and are happy to share the results with the community.
More blog posts are forthcoming, with analysis of more specific topics in the survey results, and more great quotes from the thousands of lines of comments your fellow Haskellers kindly wrote.
Based on the survey results we will continue and even enhance our commitments to Stack and to Haskell training, technical staffing, and professional services.
For Further Reading
The old 2015 Haskell User Survey -- see how far we’ve come - Click Here