How is Haskell Working for You? (Survey Response)
The Commercial Haskell SIG recently sent out a survey through Haskellers.com. They plan on releasing the survey results to the public, but I found the questions interesting enough that I wanted to post my own response to it. Whether you agree or disagree with my responses, I think a conversation around the questions is highly relevant both to those just building an interest in Haskell as well as for those who have been practicing since Before Time Began.
For the curious, read on!
[Slight editing of survey responses was done for better readability. These responses are also highly subjective, of course – they are the personal thoughts of the author of this blog. :)]
Caution! If you received the survey and haven’t yet responded to it, please don’t read this post until you do so! I’d hate to see my writing skew their results.
About my work
1. My current occupation is primarily:
developer
x manager
student
faculty
other
[The survey didn’t include a comment field on this part; this position is a new one for me. Up until very recently, I’ve primarily been a “developer”.]
2. My specific title or level:
Manager of Software Development
3. My skill level at using Haskell to accomplish my work:
none
beginner
learning
x competent
expert
[Highly subjective! I always laugh at these sorts of questions… They tell you more about the responder’s personality than their actual skill set.]
4. I’ve worked with Haskell for about ____ year(s)
0
0.5
1
2
3
x 4
5+
[This was a bit awkward to answer. I’m self-taught with Haskell, so differentiating where “work” begins with it is difficult. I chose a number that somehow reflects my study of the language, without making it look like I’ve been a heavy user forever. More accurately, I began studying Haskell about 5-6 years ago.]
5. I work at an organization that employs ____ people
0-1
2-10
11-25
26-50
x 51-100
101-300
301-1000
Over 1000
6. The industry I’m in:
finance / banking
education
scientific research
computer games
web development / online service
x software vendor / software development
other computer or IT
7. Name of organization: (optional, won’t be published):
[Omitted from this post]
8. My organization currently uses Haskell in its work:
yes
x no
Comments
Haskell is my primary development language for projects outside of work. I’ve published an Android app backed by Haskell that has achieved 10k+ downloads so far.
9. At my workplace, I would be allowed to use Haskell in an upcoming project I wanted to (please explain further below)
The company primarily wants to be able to hire people with “off the shelf” skill sets to work on existing projects.
10. I would recommend Haskell for a project at my workplace (please explain further below)
Strongly disagree
Disagree
Neutral
Agree
x Strongly Agree
Not applicable
Comments
I’ve led many training sessions demonstrating Haskell concepts and how to apply them. These have influenced project development in many areas, but we are still unlikely to be able to adopt it for large projects.
11. I play a major role in deciding which languages and tools we ultimately use to build our work projects.
Strongly disagree
Disagree
Neutral
x Agree
Strongly Agree
Not applicable
Comments
I hold an influential position, but making headway on new language usage is a less tractable problem that I continue to tackle.
12. More Haskell success stories would make a big difference in our Haskell adoption (if yes, please elaborate: what are the success stories that would really help?)
Strongly disagree
Disagree
Neutral
Agree
x Strongly Agree
Not applicable
Comments
I blogged about a Haskell success story for my Android app that received some attention and support from the Reddit community. It was a small use case, but it’s clear to me that the community is looking for more stories like this.
13. Other information would make a big difference in our Haskell adoption (if yes, describe what kind would help you)
Strongly disagree
Disagree
Neutral
x Agree
Strongly agree
Not applicable
Comments
Better expectations need to be set for newcomers from other programming languages. The Haskell development environment is not the same as most other languages – nor, in my experience, does it need to be. GHC + GHCi + Hoogle are an incredibly effective, lightweight development platform all by themselves. I actually dread using heavyweight IDEs these days, but most newcomers think Haskell “lacks tooling support” because the environment is so different.
14. IDE and/or editor support (describe your specific needs in comments). Improvements in this would be…
No impact
x Slight help
Helpful
Important
Crucial
Don’t know
Comments
More integration with Hoogle would be the most helpful with most of my work, but having it open in another window is very little burden.
15. Compatibility with your existing tool set. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Although Haskell has good FFI capabilities, integration with non-Haskell libraries still leaves something to be desired. We tend to focus too much on developing Haskell versions of existing libraries, rather than building hooks into those libraries for easier integration to existing development.
16. Application templates, frameworks, design patterns, reusable samples, etc. Improvements in this would be…
No impact
x Slight help
Helpful
Important
Crucial
Don’t know
Comments
More examples of design patterns and especially reusable samples would have a high impact on the community. I think we need to be careful with templates/frameworks, however – these have had a tendency so far to drift in directions where they don’t easily “play nicely” with other libraries or standard tooling.
17. Server-side web application support. Improvements in this would be…
No impact
Slight help
Helpful
Important
x Crucial
Don’t know
Comments
If for no other reason, this is crucial to keep up with developments in other language communities. But, I think we’re already on the right path with Yesod/Snap/Scotty development here. We just need to continue growth of these frameworks.
18. Front-end web application support. Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
For front-end web apps, I think the most helpful thing would be more code samples. I think Haskell makes a fantastic backend, but I don’t see much reason to try to reinvent AngularJS or Polymer – these are very effective front-ends already. I’d like to see more examples of integration with these. [The point I was trying to make here is that front-end is not a primary strength of Haskell – better to integrate with technology that is, to leverage both technologies’ capabilities. I could have been more clear in my response here.]
19. Thorough support for math or data analysis (as you might see in Matlab, R, or NumPy). Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
This is an area where Haskell really shines. We’ve got a number of great libraries already, but again, we are largely lacking code samples.
20. Thorough support for machine learning. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Same comments as for #19. These are both areas where I experiment on in my spare time. I think we have the right capabilities and libraries, we just need more exposure.
21. Installation. Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
The community already has wide discussions around this…
Stackage and LTS are great, but I think we need to see better consolidation around installation approaches, primarily for guiding newcomers. I think the confusion around these different environments is scaring off some people from adopting Haskell.
22. Package management (cabal, getting/installing packages, etc.). Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
Related to #21, I’d like to see more consolidation of package management. Also, I’d like to see the new security work get fully implemented and faster compile times with GHC (although I understand from the AOSA book and the Simons’ comments that this is a difficult problem to tackle – see “Crime Doesn’t Pay”).
23. Deployment features. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Docker goes a long way towards helping deploy Haskell applications, but Haskell is still relatively “heavy-weight” compared to some other environments for quickly deploying code. Especially starting fresh, it’s quite a heavy process to get an app “up and running”.
24. Debugging and Profiling. Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
We’ve got a number of good tools for this already, but again they’re not made very obvious to newcomers. I think more code samples is, again, the answer here.
25. Ease of writing high-performance programs. Improvements in this would be…
No impact
x Slight help
Helpful
Important
Crucial
Don’t know
Comments
I think Haskell already does a great job with this. But, it never hurts to continue improving!
26. Windows support. Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
I understand that some people struggle with Haskell development on Windows, but I seem to have little trouble getting my code working. In fact, I try to aim towards always getting my projects cross-compiling on Windows and Linux – so far, fairly effectively. An updated version of the Haskell Platform with some of the lessons learned from Stackage/LTS might be helpful, though.
27. Java Virtual Machine (JVM) support. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
I think this would be important, largely from an integration perspective. The more code we can work with, the more adoption Haskell will get.
28. .NET (Microsoft dot Net) support. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Same as #27 – more integration is always good!
29. Interoperability with other systems or languages (explain what kind). Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Same comments as #27/28. I’d like to see more integration in general. Specifically, I’d like to see Haskell compilation directly on Android, although I’m aware the special JVM/ARM platforms do cause problems there.
30. Perception among your colleagues/coworkers that Haskell is a good tool ready for practical use. Improvements in this would be…
No impact
Slight help
Helpful
Important
x Crucial
Don’t know
Comments
I’ve fought to promote Haskell at my day job without being “that guy”, but it’s a difficult task at times. We certainly need better, more obvious, examples of the advantages of using Haskell to point to. Established developers, especially, tend to be reluctant to learn something completely different without obvious benefits. Facebook’s work with haxl and Sigma are fantastic examples to be spreading around!
31. Scalability to large problems or large datasets (Spark, Hadoop, distributed, HPC, etc.). Improvements in this would be…
No impact
Slight help
x Helpful
Important
Crucial
Don’t know
Comments
Again, I think this is primarily a perception problem. Haskell shines with this kind of work, we just need more obvious examples.
32. Documentation and other learning resources. Improvements in this would be…
No impact
Slight help
Helpful
x Important
Crucial
Don’t know
Comments
Library developers tend to under-document their work. This is partly the typical struggle of development vs. communication, but better library docs are essential for more adoption. This includes both “obvious” descriptions of the functions/types and so forth, but also embedded examples. Any library should be accessible to both experts and newcomers. MSDN and Google’s Android documentation both do great jobs at this.
33. Availability of skilled personnel with Haskell knowledge (people my organization could hire). Improvements in this would be…
No impact
Slight help
Helpful
Important
x Crucial
Don’t know
Comments
This would greatly help with the perception problem as well. More skilled developers espousing the advantages of Haskell will lead to more adoption. Also, it could highlight the perception we seem to have internally to the community that just understanding Haskell already is an indicator of better talent. I think this holds quite a bit of truth, largely from the kinds of thinking we’re exposed to in the course of learning it (we should, however, be careful to avoid this perception as being perceived as snobbery).
34. Availability of consulting, training, or other professional assistance (services my organization could hire). Improvements in this would be…
No impact
x Slight help
Helpful
Important
Crucial
Don’t know
Comments
Nothing really comes to mind here.
35. My organization would soon use a lot more Haskell in our work, if realistic improvements are made to it. (Put your top priorities for improvement in comments if you haven’t already explained).
Not Applicable
Strongly Disagree
x Disagree
Neutral
Agree
Strongly Agree
Comments
As in earlier comments, the problem of adopting Haskell at my office is largely based on the limited pool of available developers versed in it, rather than language capabilities.
[Remaining survey questions left blank]