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.
Executive Summary
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
- Cryptocurrency
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
Get
started with Haskell
Learn more about our Haskell engineering assistance
and consulting
Subscribe to our blog via email
Email subscriptions come from our Atom feed and are handled by Blogtrottr. You will only receive notifications of blog posts, and can unsubscribe any time.
Do you like this blog post and need help with Next Generation Software Engineering, Platform Engineering or Blockchain & Smart Contracts? Contact us.