Cool to hear about your journey. Writing software is a social endeavor, not a technical one. The ability to master a language quickly is an asset in itself. I think Go can be ugly, but it is beatiful in its simplicity. Haskell and many other functional languages are beautiful to me, but impractical to ask other people master. What’s for sure: The computer doesn’t care what language you use.
Nice article. I guess I was waiting to hear the result though - did you end up using Haskell/Purescript? From the sounds of it maybe not?
It’s a conundrum I’ve wrestled with recently. Where I currently work we have a few components I believe would suit Haskell particularly well, and as a relatively green fanboy of the language, I would relish the chance to get some real production use out of it.
Not only that but I’ve discussed it with my immediate superior and he would be open to persuasion. However, as a pragmatic lead developer, I haven’t been brave enough to fully push for it. I know I am nowhere near expert-level and would struggle to teach a full team on it. We could learn together (good smart team of senior developers) but there’s an obvious trade off in productivity for some unknown period of time, and it would require a reasonable amount of enthusiasm from everyone to dive in.
My current plan is to continue working through @bitemyapp ’s book (http://haskellbook.com/) to see if that eases some of the learning pain, and find a suitable chunk to bite off and suggest for work.
I guess I don’t have much of a point to make here, just that this resonated with me.
The goal with the book is to get people to a place where they can do practical projects (not the only goal, but a big one).
My recommendation is to start making toy projects after the book and try to get some breathing room at work where you’re allowed to get stuck on an prototype. Mistake I see people make is to do something high stakes just as they’re getting comfortable. Most common mistake is not asking for help, so please do ask for help! If you’re comfortable with IRC, #haskell and #haskell-beginners have friendly souls, otherwise, my email is on my Github. I may not have time to address your problem in detail but I should be able to get you pointed in the right direction.
Hope you’re enjoying the book :)
Thanks for the advice - I only hope I can find that breathing room ;)
I will certainly reach out on IRC or to you when I hit any stumbling blocks. I’m really enjoying the book currently, just wish I had more time to dedicate to getting through it. Having messed around with Haskell for a while, some of the challenge is making myself work through everything, even the parts I think I know - just to make sure I don’t miss some key intuition or lesson to be extracted. Great work though, and thank you for the book.
did you end up using Haskell/Purescript?
I’m not going to stop learning Haskell because it is hard. I’m definitely thinking about where Haskell might fit in our infrastructure: we have tons of Python and some Clojure. I seem to think that Haskell is quite well-suited for small services (ie the opposite of Rails or Django).
So the answer is yes, we’re open to the idea of Haskell but maybe not just yet.
I’m glad to see that this post has resonated with so many people.
Go has a huge advantage that’s not being mentioned and that has nothing to do with the quality of the language: corporate backing. Granted, it has backing by a company that doesn’t have a strong record in PL (although it does systems engineering very well) and that fails utterly at anything aesthetic (hence its being synonymous with poor product management) but it still is a huge company, and that alone starts to generate a community.
I don’t think that it takes 4 years to learn Haskell if you have the right resources. I could teach it in a week or two (I’ve taught a beginner Haskell class). This wouldn’t make someone an expert (I don’t even think that I’m an expert in Haskell, because it’s a powerful language with a lot of cool stuff in it) but it’d be enough to get productive.
Haskell has considerable backing from Microsoft research. Many languages “made it” even without that.
If it isn’t clear, I’m a huge fan of Haskell, both in general and over Go. However, “official” adoption is important to some people, who unfortunately are often the ones who pick tech stacks in big companies.
While teaching haskell could take only a week, the problem is more about learning functionnal programming, that (and really understanding haskell) is where most of the students will be stumped (well, the most part depends on how deep they are into oop, though understanding oop interfaces did help me understand typeclasses)
Of course if they’ve already learned about the functionnal paradigm, the process might be much faster.
You can get people to a somewhat-cargo-culty-but-good-enough-for-gov’t-work understanding of Haskell in ~two weeks of pairing without prior depth in FP, but you need a pre-established project and somebody who’s competent at pairing and teaching. Not ideal, though, which is partly why I’m working on the book. It’s not an approach I’d advocate - sets people up for misunderstanding, burnout, and project failure. You need at least one person on the project that actually understands the language.