Any good articles/literature on evangelizing Haskell to a semi-technical audience? I'm trying to show my coworkers that there is more than Python and JSON.
I'm interested in the answer to this query, as well.
Meanwhile, here's a relevant case study from a former employer of mine:
Three years ago, I quit my job to bet everything on the proposition that Haskell could excel not just for specialized, high-assurance software, but for the kinds of software that millions of engineers work on every day. [...] Strong types and pure values decreased bug counts and made code much more readable. https://www.youtube.com/watch?v=riJuXDIUMA0
In this article I try to explain why Haskell keeps being such an important language by presenting some of its most important and distinguishing features and detailing them with working code example...
For pythonistas coworkers, looking at FP in general may be important too. I find that talk quite useful: The Power of Composition - Scott Wlaschin https://youtu.be/vDe-4o8Uwl8?t=97
imo there is a lot of room for _inspiration_ on the hs front --- if for nothing other than getting j random hacker questioning what he knows about programming
that being said, i'm sorta starting to think that learning hs is an information hazard; it's going to make all other languages seem inadequate, until you start feeling like hs is inadequate and are forever searching for the best abstraction
I think there are significant network effects that have been in play for decades that are hard to overcome. Computers are taught to children as machines that execute instructions and they are given the operational semantics and pedagogy: variable, statement, branch, loop.
What gets me is how people exaggerate common problems endemic to all programming languages as particularly unique to Haskell. I think people end up in tribes and switching to a new language is expensive so people rarely do it.
However the rare occasion where I've managed to convince someone to stick with Haskell and learn it has been a mix of convenient lies (this is like what you know from language X...) and then dispelling them quickly as we run into pragmatic limitations.
Since the audience are Python users, I think the most clear improvement they'll appreciate is what you get with static types + a really good type checker (specifically in Haskell)
Being friendly, enthusiastic, and supportive can go a long way. And getting people to just write programs is huge. I noticed when teaching the last group at work that _analysis paralysis_ is a big deal, something I experienced myself, "what is the correct way to do this" can easily lead to dead ends as they explore the Internet and get overwhelmed.
Then you get people who say, "I tried learning Haskell once..." And they go on thinking Java or C++ is easier. But people forget that it takes just as long to master C++ and even the experts struggle with move semantics in constructors and the legacy of it's C heritage infecting so much of the ecosystem.
Thank you all for sharing your views on the subject. I am also a member of a Python and YAML development team and I struggle to communicate the benefits of using Haskell. One thing I noticed is that a pragmatic developer is often looking for safety in numbers. I understand that not everyone is passionate enough to spend the energy required to go outside of their skill set and learn new things.
For example, what is the best answer to the what popular project is written in Haskell? question.
James mentioned that mastering C++ may take longer than learning Haskell, but what about Python? (It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency.)
Then there is the story about how null pointer is a billion dollar mistake. But again, it's not clear that using another language would really help.
It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency
I've worked on python projects that have 99%+ code coverage but making any sort of large structural change to the codebase still caused me anxiety because of how fragile everything was. With Haskell, large structural changes feel mostly mechanical and are mostly just following the compiler errors/warnings.
It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency
I've worked on python projects that have 99%+ code coverage but making any sort of large structural change to the codebase still caused me anxiety because of how fragile everything was. With Haskell, large structural changes feel mostly mechanical and are mostly just following the compiler errors/warnings.
Any good articles/literature on evangelizing Haskell to a semi-technical audience? I'm trying to show my coworkers that there is more than Python and JSON.
I'm interested in the answer to this query, as well.
Meanwhile, here's a relevant case study from a former employer of mine:
this could also be helpful - https://github.com/thma/WhyHaskellMatters
Perhaps this is also helpful - https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#state-of-the-haskell-ecosystem
For pythonistas coworkers, looking at FP in general may be important too. I find that talk quite useful: The Power of Composition - Scott Wlaschin
YouTube - The Power of Composition - Scott Wlaschin
tristanC said:
This looks quite good! Thanks!!
Also this https://tech.fpcomplete.com/haskell/promote
i think laziness and purity are the most important things that haskell brings to the table
adopting purity in how you write other languages is probably going to get a lot more traction than hs ever will
and compositionality is pretty great too!
i like this video: YouTube - Haskell Amuse-Bouche
it starts with a disclaimer "this is going to look like moon code, so don't try to understand, just appreciate how little work i'm doing"
imo there is a lot of room for _inspiration_ on the hs front --- if for nothing other than getting j random hacker questioning what he knows about programming
that being said, i'm sorta starting to think that learning hs is an information hazard; it's going to make all other languages seem inadequate, until you start feeling like hs is inadequate and are forever searching for the best abstraction
I think there are significant network effects that have been in play for decades that are hard to overcome. Computers are taught to children as machines that execute instructions and they are given the operational semantics and pedagogy: variable, statement, branch, loop.
What gets me is how people exaggerate common problems endemic to all programming languages as particularly unique to Haskell. I think people end up in tribes and switching to a new language is expensive so people rarely do it.
However the rare occasion where I've managed to convince someone to stick with Haskell and learn it has been a mix of convenient lies (this is like what you know from language X...) and then dispelling them quickly as we run into pragmatic limitations.
Even I wasn't convinced by laziness and composition at first but now I realize how essential they are.
Since the audience are Python users, I think the most clear improvement they'll appreciate is what you get with static types + a really good type checker (specifically in Haskell)
https://chrisdornan.com/posts/2020-03-30-matters.html
The same author has another point about the benefits of learning Haskell:
https://chrisdornan.com/posts/2020-04-16-structures-for-free.html
This talk is not Haskell specific but this is where I would start if I were to evangelize Haskell to others:
YouTube - "Propositions as Types" by Philip Wadler
Being friendly, enthusiastic, and supportive can go a long way. And getting people to just write programs is huge. I noticed when teaching the last group at work that _analysis paralysis_ is a big deal, something I experienced myself, "what is the correct way to do this" can easily lead to dead ends as they explore the Internet and get overwhelmed.
Then you get people who say, "I tried learning Haskell once..." And they go on thinking Java or C++ is easier. But people forget that it takes just as long to master C++ and even the experts struggle with move semantics in constructors and the legacy of it's C heritage infecting so much of the ecosystem.
So I take the focus away from correctness and purity and demonstrate why it makes understanding easier.
If anyone is interested in discussing this topic, I'm planning a video/voice chat session to discuss Growing the Haskell Community at https://funprog.zulipchat.com/#narrow/stream/234801-VideoChat/topic/Growing.20the.20Haskell.20Community
in #VideoChat
Thank you all for sharing your views on the subject. I am also a member of a Python and YAML development team and I struggle to communicate the benefits of using Haskell. One thing I noticed is that a pragmatic developer is often looking for safety in numbers. I understand that not everyone is passionate enough to spend the energy required to go outside of their skill set and learn new things.
For example, what is the best answer to the
what popular project is written in Haskell?
question.James mentioned that mastering C++ may take longer than learning Haskell, but what about Python? (It seems like given enough unittest coverage, Python may yield better results in terms of immediate pragmatic efficiency.)
Then there is the story about how null pointer is a billion dollar mistake. But again, it's not clear that using another language would really help.
I've worked on python projects that have 99%+ code coverage but making any sort of large structural change to the codebase still caused me anxiety because of how fragile everything was. With Haskell, large structural changes feel mostly mechanical and are mostly just following the compiler errors/warnings.
Pandoc might be the most popular opensource Haskell application:
https://github.com/search?q=language%3AHaskell+stars%3A%3E%3D1300&type=Repositories
https://github.com/erkmos/haskell-companies
Pavan Rikhi said:
Oops, don't get me wrong, I noticed that indeed, but I find it hard to show and tell, especially quantitatively. I forgot to mention this article about this particular topic: https://williamyaoh.com/posts/2019-11-30-how-does-haskell-make-life-easier.html