Hacker News new | ask | show | jobs
by boothead 3654 days ago
This is actually the other way round. Given:

1. People who learn Haskell put in a lot of effort for their own learning benefit - they're not usually learning Haskell to get a job.

2. Once you learn Haskell you really kind of want a Haskell job to put all this nice stuff into practice.

3. There aren't many Haskell jobs about (in part due to a perception that it's hard to hire Haskell developers).

As a company in the lucky position of hiring for a Haskell role you have a pool of people who have self selected to be above average in determination and smarts, but limited options in employment in their new tech of choice.

source Built a Haskell team at a startup, now work on a Haskell team in finance. Hiring has NEVER been a problem.

6 comments

> 2. Once you learn Haskell you really kind of want a Haskell job to put all this nice stuff into practice.

Personally, not really.

I enjoy dabbling with Haskell on my open source projects but doing so has made it abundantly clear why I would never want to use it on a production system, especially one I'm responsible for. Laziness making performance intractable, bad tooling (see the stack trace observation above), difficulties hiring Haskell programmers and the fact that while they can be good coders, they are usually very weak on the engineering side, etc...

Both Haskell and Scala are on my list of languages that I love to experiment with on my free time but that I think are not ready for mission critical stuff.

> you have a pool of people who have self selected to be above average in determination and smarts

I hear this claim a lot from Haskell programmers but this has zero evidence.

It's just a human thing to believe that your choices of technology make you better than people who made different choices.

> Both Haskell and Scala are on my list of languages that I love to experiment with on my free time but that I think are not ready for mission critical stuff

I find this curious, since both languages have been successfully used for mission critical stuff, and in particular Scala is deployed for mission-critical enterprise applications. At my day job, for example, but this is starting to look even more common, judging by the recruitment emails I get.

I am curious what makes Scala in your opinion enterprise unready? It is the same JVM in the end and learning curve for a Java programmer is not that high.
I've learned a good number of languages, and Scala has been one of the most contrived, in my experience. Even for a Java developer.
Agreed - we're a Haskell-based startup in London and have been utterly impressed at the developers we've met - not just in terms of their programming ability but also as engineers who are able to contribute as a team and work with us to build product according to specs/deadlines.
Are you hiring remote folks?
"Putting all this nice stuff into practice" is the kicker. I'd really like to do FP work, but I'm not willing to leave my current employer to do it. I think there's basically a skunk works deal of Haskell at Facebook, and F# for n programmers where n is basically unknown externally... and that's it. Am I missing someone that's a) in Silicon Valley b) mature enough that the benefits are there (such as always being paid on time, good health insurance etc etc)
Verizon Labs is scala, and (mostly) on the extreme functional side (heavy Scalaz). Scala/FP experience not required, but a willingness to learn is. Ping me if you want to chat more.
Is remote a possibility?
It isn't just a skunk works, they have a production system written in Haskell:

https://code.facebook.com/posts/745068642270222/fighting-spa...

In SV (or there abouts) I know of:

https://www.frontrowed.com/

https://www.wagonhq.com/

https://github.com/alphaHeavy

I'm sure there are others too.

> I think there's basically a skunk works deal of Haskell at Facebook

Their anti-spam group definitely uses it

> As a company in the lucky position of hiring for a Haskell role you have a pool of people who have self selected to be above average in determination and smarts

[citation needed]

There's really no evidence that people choosing Haskell are any smarter or more determined than anybody else.

I'm mainly pointing this out because the Haskell community's "We're smarter than everybody" attitude is a big pet peeve of mine.

I agree with your critique about the community attitude, so I sympathize with your position. However, speaking as a non-Haskell learner with a Haskell writing friend, I don't think it's fair to dismiss the notion entirely.

Haskell is pure functional programming, and it's structure actively discourages a lot of the more common practices in iterative languages. I watched my friend struggle with a very simple web project for weeks while he was learning the language. At the end of it all though, when it finally came together and worked for the first time, he was confident about its behavior in a way I'm not sure I ever could be with the code I write regularly. (I'm a game programmer, so I write a lot of C++ and dabble in Python and Lua.)

I think there's something to be said for the journey that Haskell necessarily takes you on. I don't think the upper skill ceiling for good Haskell developers is any higher than other languages, but the barrier for entry certainly seems to be.

> I agree with your critique about the community attitude

Please link to concrete examples of this. I'm genuinely interested in calling people out on such rudeness. The Haskell community has traditionally been modest and very welcoming and I'd like to keep it that way.

I've heard this before too, and I think a big part of it comes from the fact that people writing on Haskell aren't afraid to use mathematical terminology, and that comes off a snooty to most.
Haskell is non-standard and significantly different from everything else. Even if you ignore subjective qualities of the language, it takes some amount of initiative and self-selection to pick Haskell up at all, while lots of people are funneled into languages like Java, JavaScript, C#, Python by default. For example, relatively few universities (and presumably no bootcamps!) teach it at all, while it's hard to avoid programs that strongly feature Java and Python.

More generally, it makes sense for the sort of people who make non-mainstream choices to be qualitatively different from many who do go with the mainstream.

You've never worked with..uh... cheaper developers who've been on a course and need everything explained 4 times and have no common sense and sniff a lot but who claim to be great Java/c#/JavaScript developers? Happens all the time. I'm guessing it's harder to bullshit the sort of person who handles hiring Haskell developers.

Plus, someone who's studying Haskell probably is smarter on average than the average developer (and no, I'm not a Haskell developer although it interests me)

I understand your pet peeve, really I do, but if you look at the contrapositive statement I think you will find it hard to argue:

People who are just looking to get into software engineering for the money are unlikely to learn Haskell.

They will almost certainly learn Java, PHP, Ruby, Node or maybe even Go, but not Haskell. And looking around SV these days, there is a huge number of people around that are only in it for the money.

Not that that is a panacea... my instinct is you might end up with a very strong technical team, but one that might be more likely to miss the forest for the trees when it comes to building a successful business.

There are many attempts to justify the practical use of Haskell. However why does the Haskell community not have just proven the superiority of Haskell by an impressing showcase of working equivalents of Eclipse, Open Office, full-blown browsers, 3D games, and things like that?

AFAIK there is _nothing_ comparable in the Haskell world!

I know things like Leksah and FP-Complete's online editor but these things are far from being comparable to power IDEs like Eclipse. Haskell, as it is today, is a nice language for study purposes and academic use but it is barely used in the industry. Haskell is by far not so practical as the Haskell community wants it to be.

People have no right to complain without suggesting solutions. So do I. My suggestion: The Haskell community should develop languages based on Haskell which are much more practical, and which use all the nice power features of Haskell - the purity of functional programming for instance. Haskell is too cool to be wasted for academic use. It could be a very nice backend for really practical languages. The first promising attempts are there - IDRIS for instance.

It kind of seems like you're grinding an axe that has nothing to do with my comment. But FWIW, I agree, but I also respect that Haskell is not designed to be a "successful" industry language. I'd love better tooling for it, but I also don't think it's a do-or-die kind of situation. Haskell has a fairly stable critical mass and a slow and steady upwards trajectory.
> They will almost certainly learn Java, PHP, Ruby, Node or maybe even Go, but not Haskell. And looking around SV these days, there is a huge number of people around that are only in it for the money.

I think you're confusing orthogonal issues. Only writing code because it pays the bills really says nothing about how smart or motivated a person is. Is there a rule somewhere that dumb people can't enjoy programming and learn Haskell? On the other hand I know a few very smart people who only write code because it pays their bills.

I'm not confusing anything, I just disagree with you.

It's not about smart vs dumb, it's about intrinsic versus extrinsic motivation. Being smart is an advantage, but it is meaningless without a massive amount of practice. There's nothing about programming that a 100 IQ person can't become competent at it.

Programming is first and foremost, an exercise in frustration. It is exacting and unforgiving in a way that few human activities are. It's somewhat unnatural. In order to excel at it I believe you need to feel an intrinsic thrill when solving a problem that surpasses all the frustration leading up that point, and you need to seek this out over and over and over.

Note that this says nothing about whether you only work for money, or even what brought you to the field. However, if you do not feel this thrill, then you will naturally gravitate towards a job where you can execute rote incantations again and again without having to face new problems. I'm sure there are people who love programming and persist in it despite being terrible at it, but I guarantee you they are far outnumbered by the hordes of wannabe tech millionaires flooding into the Bay Area as we speak, completely oblivious to how much they will actually hate and subsequently suck at programming—and those people ain't learning Haskell.

> Programming is first and foremost, an exercise in frustration. It is exacting and unforgiving in a way that few human activities are. It's somewhat unnatural. In order to excel at it I believe you need to feel an intrinsic thrill when solving a problem that surpasses all the frustration leading up that point, and you need to seek this out over and over and over.

This is more than two tweets long. How is it supposed to become the viral quote it deserves to be?

> Only writing code because it pays the bills really says nothing about how smart or motivated a person is.

No, but actually bothering to learn something that isn't what is being shoveled through most major outlets is at least somewhat correlated with motivation.

After further thought, it seems like having a reputation as difficult to hire for and a reputation for attracting smart people would be two very good reasons for people "only in it for money" to learn Haskell.
Not sure why you were downvoted here, I agree with you on this. The only thing is that there aren't a lot of Haskell jobs out there, and that is a far stronger signal to people looking to jump into the software industry than the nuanced opinions of industry veterans in forums like HN.
That is part of why these kinds of signals aren't stable over time.
> Is there a rule somewhere that dumb people can't enjoy programming and learn Haskell?

No, there's no such rule. Can you possibly imagine that there might be any factors at play that affect the observed intelligence of Haskell programmers besides "a rule"?

> Haskell community's "We're smarter than everybody" attitude

Please link to concrete examples of this. I'm genuinely interested in calling people out on such rudeness. The Haskell community has traditionally been modest and very welcoming and I'd like to keep it that way.

The comment I replied to is an example of this.
Huh? "self selected to be above average in determination and smarts" is a far cry from "We're smarter than everybody else".
The person I replied to is a Haskell developer, talking about Haskell developers. A member of the community, talking about how smart people in the community are .
Yes, he believes that the average smartness across Haskell developers is greater than the average smartness across all developers (as do I). This is a fairly weak claim. He did not make the claim "we're smarter than everybody else", which is a very strong claim. That's your strawman.
Well, "self selected to be above average in determination and smarts" has to at least mean "we average smarter than everyone else", doesn't it?
"Smarter than average" and "smarter than everyone else" are not synonyms.
I think the point is that learning Haskell takes time and effort outside of standardized courses, so people who learn it are, as a percent of the population that knows the language, more determined than those who use more mainstream languages.

As a simple example, even dropouts probably know Java.

That argument doesn't work because learning any programming language well takes time and effort.
"more determined" -- you've obviously never dealt with Haskell tooling. :-)
> Built a Haskell team at a startup, now work on a Haskell team in finance. Hiring has NEVER been a problem.

Mind sharing names?

Standard Chartered is one.

https://twitter.com/donsbot -- author of Real World Haskell

See https://wiki.haskell.org/Haskell_in_industry for more.

Several other financial names including Bank of America Merril Lynch, Barclays Capital, Capital IQ, Credit Suisse, Tsuru Capital are listed.

They even have their internal Haskell compiler which IIUC gets fed a dialect in order to have strict evaluation and a couple other non-standard properties. One nice thing the ecosystem got from their internal team is the official Shake implementation, which supersedes the various 3rd-party implementations and actually works really well. It even can interpret Ninja files, so it can be used in place of ninja when building things like Cmake-based projects or, say, Chromium. Not that there much of a reason to use Shake when you use Ninja, but you can and some of the reporting features might be exclusive to Shake. Usually you write a Shakefile.hs (instead of Makefile) and run it with shake.
When you say hiring is never a problem? Does that mean you're hiring remote as well?