10 ms·
Four months with Haskell
- Thaxll 10y ago"Hiring Haskell developers is not hard", it's already hard to get good Java developer can't imagine for Haskell...
- ebiester 10y agoThere are a good subset of developers wanting to work full time in any functional language, and most of them have walked through haskell at some point.
- diggan 10y agoI guess it goes with the saying that "Hiring (Haskell) developers is not hard, hiring good (Haskell) developers is hard"
- tluyben2 10y agoIn my (limited) experience it is easier to spot bad developers in (perceived hard) niche languages so I would assume a smaller % in that already small group tries to bluff their way in. Learning Haskell, Prolog or something like Coq usually starts on an academic level and if one wants to pursue a carrier it needs to turn into a quite time consuming 'hobby' first if you do not roll into something from uni. In my experience people who are bad are not looking for a career in it while they would be in more mainstream languages (... were Stackoverflow can get you quite far anyway).
- RussianCow 10y agoOn the other hand, though, any developer that knows Haskell is much more likely to be a good developer. So even if the overall pool is smaller, the percentage of that pool that is qualified is probably much higher.
- dragonwriter 10y agoProbably easier for Haskell: for Java (and most other broadly-recognized-as-industrially-popular languages) a lot of the problem of hiring good developers is separating the people that are self-motivated, will dig into to new challenges, and do something more than cargo cult coding from the herd. With Haskell, well, that's probably a lot less of a problem, for now.
- boothead 10y agoThis 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.
- akavi 10y ago> Built a Haskell team at a startup, now work on a Haskell team in finance. Hiring has NEVER been a problem. Mind sharing names?
- 0xmohit 10y agoStandard Chartered is one. https://twitter.com/donsbot https://twitter.com/donsbot -- author of Real World Haskell See https://wiki.haskell.org/Haskell_in_industry 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.
- cm3 10y agoThey 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.
- oconnore 10y ago> it's already hard to get good Java developer try{ Well, obviously, you're making them write Java. }catch(CheekyJokeException e){ // todo }
- hexane360 10y agoSub WriteGoodJava On Error Resume Next While True 'todo: write something End While End Sub
- 0xmohit 10y ago> it's already hard to get good Java developer Yes, after looking at code that reads int i = (STDIN); when one intends to read a variable from standard input, I couldn't agree more.
- justinsaccount 10y agoMaybe they were a perl developer where $i = <STDIN>; works
- Roboprog 10y agoHaving been doing Java on and off since 1996, I would protest that java.io.* is a freaking zoo that I still don't have memorized. For all C's faults, I still miss the simplicity of "FILE (star)", created by either "fopen()" or "popen()" Not that I would have wrote that... :-)
- js8 10y agoI actually prefer Haskell, because it is pretty simple, you have datatypes and functions and that's it.. In Java, things are more complicated, with all the different design patterns and classes and other contraptions. I think you have to be smarter to program in Java than to program in Haskell.
- jonnybgood 10y ago> you have datatypes and functions and that's it For a "Hello World", maybe. Developing a non-trivial Haskell app or library will require the equivalent amount of knowledge (if not more) as developing a Java app or library.
- progman 10y agoReally? Fine. Then please show me a list of Haskell equivalents of Eclipse, NetBeans, Open Office, e-commerce software, and other big software which was written in Java. Thank you.
- JadeNB 10y ago> Really? Fine. Then please show me a list of Haskell equivalents of Eclipse, NetBeans, Open Office, e-commerce software, and other big software which was written in Java. Thank you. What in the world about js8's post, which said (https://news.ycombinator.com/item?id=11895156 https://news.ycombinator.com/item?id=11895156): > I actually prefer Haskell, because it is pretty simple, you have datatypes and functions and that's it.. In Java, things are more complicated, with all the different design patterns and classes and other contraptions. I think you have to be smarter to program in Java than to program in Haskell. did you take to be a claim that Haskell offers equivalents of the vast Java ecosystem, or even any claim about the relative merits of the products of the languages (rather than the ease of using them to program)?
- progman 10y agoIf people claim that Haskell is "pretty simple" and Java is "more complicated" then why in the world is there almost no evidence for that? Why are things like Eclipse and Netbeans availabe for many years why Haskell is still blaming itself by fighting the very basic cabal hell? I know sandboxes and Nix and all those tools which circumvent the cabal hell. But consider how the Java world would respond if Java 9 would require sandboxes or Nix to manage every software project :-) I like Haskell, and I consider Haskell far superior (and more complicated) than Java. I also know Java pretty well. Java is far from being "more complicated" than Haskell. There is a reason why there are way more Java developers than Haskell developers. In my experience Haskell is powerful and elegant but not very practical. Practical are other languages (Rust, C++, Java, Nim, OCaml, ...). That' why Eclipse, Open Office, MS Office, operating systems, mars land projects and other big software is written in everything but Haskell. https://www.quora.com/Functional-Programming-Which-of-Haskell-and-OCaml-is-more-practical/answer/Jon-Harrop-2?srid=OsrX&share=1 https://www.quora.com/Functional-Programming-Which-of-Haskel...
- kirubakaran 10y agoHere is an interesting answer: https://www.quora.com/How-long-does-it-take-to-learn-Haskell/answer/Justin-Leitgeb-1 https://www.quora.com/How-long-does-it-take-to-learn-Haskell...
- dllthomas 10y agoLooking, a year back, for some to take over a Haskell project, I received a good deal of interest from very qualified Haskellers, despite promising substantially under market rate with no prospect of later windfall (work was on a non-profit). If you are able to pay people what they are worth, I can't imagine how easy you'd have it.
- quantumhobbit 10y agoStop hiring "Java developers" or "Erlang developers" or "Blub3.0 developers". Just hire developers who are smart enough to learn whatever language you are using. Maybe you hire a "developer with experience in functional languages such as Haskell" if you are in a rush. But if you find yourself in a place where you need to hire very specific skills with no time to train, then you have already lost.
- jwatte 10y agoBy the way, I have some openings for Blub3.0 developers, if you're interested! Two years experience minimum required.
- douche 10y agoIt's a language you just created last Tuesday, isn't it?
- deleted 10y ago[deleted]
- jimbokun 10y ago"Just hire developers who are smart enough to learn whatever language you are using." Knowing a less-commonly-used language like Haskell could be a fairly good indicator for this quality.
- quantumhobbit 10y agoVery true. I think this is the source of pg's python paradox from back when python was much less popular than it is today.
- agumonkey 10y agoJust curious, how would you describe a bad Java developer, a good one, and how can one test this ?
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- p4wnc6 10y agoI fall in a weird bucket: very advanced understanding of some other languages and good work experience, education, etc., but even though I love Haskell and practice it all the time, I think I am just somewhere on the boundary between beginner and intermediate, and even with focused daily effort I would remain on that boundary for a long time before there is a phase transition to solid intermediate. Because of this, the only kinds of FP shops that would hire me want to hire me at a junior or low-paying level, but my market value in lots of other skill areas (machine learning, Python, database stuff, etc.) is much higher, so I'm not willing to take a salary anywhere close to what they think fits the position. As a result, even though I would love to get industry experience with functional programming, there is a market wage energy barrier preventing me from considering it. I was burned once early in my career with malarkey about how you should accept a lower salary for some alleged other benefit (like cool functional programming, or working with a team of awesome people, or getting in on the ground floor on something, etc.) -- I won't make that mistake again. So I basically had to learn to divorce myself from real world Haskell practically just as soon as I learned how much I really love it. Plus, and this should not be discounted, the professional tooling with Haskell is still extremely immature with lots of esoteric corners duct taped together in unsatisfying ways. It's getting better, but if you work with Haskell for real there are likely to be as many, if not many more, extremely frustrating painpoints of the language tooling as with any other language, enough to amortize away all the warm fuzzy happiness you'd get from the status effects of being able to say you do pure functional programming for a job.
- SatvikBeri 10y agoI was in a similar boat. I found that it's relatively easy to get machine learning jobs at market pay in Scala, due to Spark etc. taking off, and functional Scala is about 80% as good as Haskell (whereas e.g. Python is about 20%). For example, the company I'm working at, Euclid Analytics, uses Scala as our primary language.
- p4wnc6 10y agoMy experience has been two-pronged with Scala. About half of companies using Scala are only doing so because it is a trendy way to trick people into continuing to maintain god-awful legacy Java (basically same for Clojure too) -- and in these places they code Scala like it is Java, e.g. use mutability everywhere, poor code style, no emphasis on functional patterns. The other half seem like legit and interesting jobs, but they tend not to believe that self-taught Haskell experience, or on-the-job machine learning experience with say Python (even with pyspark) is translatable to Scala, and they heavily emphasize seeking people who are specifically experienced in exactly their tech stack already and immersed in the culture of it. Either way it creates barriers that make it seem like my quality of life wouldn't be very good switching to Scala. But if I found a company that valued what I already can do with Python and my statistics experience, and was happy partially training me / helping me while I teach myself idiomatic Scala, that would be great. It just seems impossible to find that, even though some companies pay lip service to that idea.
- slezakattack 10y agoI programmed Haskell professionally for about a year and a half. My last company has been trying to hire Haskell engineers for over 2 years and we've only managed to hire at least 2. "Hiring Haskell developers is not hard", is extremely subjective and naive to say the least. Obviously, YMMV, but the front-end devs that the last company was hiring was running laps around the Haskell team. Honestly, finding a Haskell engineer is not always a winner either. I've found that the ones we hired are very smart but not very decent engineers (i.e. defining requirements, shipping a product on time, understand tradeoffs, etc.). There were quite a few things about Haskell that I truly love and miss, such as the type system, but the tradeoffs just weren't worth it to me and I honestly don't think it's mature enough to be considered "enterprise ready". Aside from the learning curve, there were several bugs in one of the Haskell libraries that caused frequent outages (until we were able to pinpoint what was wrong), lazy evaluation caused excessive memory bloat when used incorrectly, and my all-time favorite: needing to switch on profiling in order to get stack traces (this is suppose to change in future GHC versions) which defeated the whole purpose of "haskell is fast". I don't know, perhaps we were using Haskell wrong. From a business perspective, it just wasn't making that much sense given how difficult it was to hire, getting engineers excited to learn it, and having the features needed to monitor a production system.
- jwatte 10y agoYou will be happy to know that we now removed profiling from production builds, age our Haskell is now 12x faster than the PHP instead of "only" 6x faster :-) I agree that any new technology introduced into an enterprise requires significant investment in training, which can be hard to justify for a startup chasing product market fit.
- CyberDildonics 10y agoIsn't Haskell 20 years old though?
- tome 10y ago26 according to https://en.wikipedia.org/wiki/Haskell_%28programming_language%29 https://en.wikipedia.org/wiki/Haskell_%28programming_languag... And this seems like a non-sequitur. A technology can be new to a company without being new in itself.
- sdx23 10y agoNice article. Although at some points I disagree with the author. The part on errors is mostly "some guys use error but don't mention it". Partial functions are not nice, that's true. In some cases tools like hlint may help. Actually I'm wondering there's no tool / hackage functionality around, that flags modules / (pure) functions that are partial. For documentation: Starting with Haskell I felt the same, some more examples and more documentation would be nice. But in the meantime I've come to like the concise documentation most often used. When searching for a certain function I don't want to read screenpages of text, but find that function fast. If, however, I need more detail or want to be really sure what the function does I need to read the source anyway. However, true is that some libraries lack _any_ documentation and it seems you should be grateful to have the typesignatures. Also, I think more libraries should have examples/ directories so one can get at quick glance how the library is designed to be used. Perhaps even have hackage emphasize the existence of these examples more.
- AnTaoiseach 10y agoThis makes no sense whatsoever. Purely subjective speculation at best.
- tome 10y agoDid you also say that about PG's article 12 years ago? http://paulgraham.com/pypar.html http://paulgraham.com/pypar.html
- AnTaoiseach 10y agoPaul Graham is overrated. I believe almost every developer goes through a phase where they are enamoured by his writings, and thanfully, they grow through them when they get into the real world. Perhaps your time will come soon too.
- tome 10y agoThat seems unnecessarily personal. I am honestly curious whether you think PG's opinions on Python 12 years ago also "make no sense whatsoever" and are "Purely subjective speculation at best". Speculation about my professional growth is irrelevant.
- CyberDildonics 10y ago> Did you say the same thing about Paul Graham's writings? > That seem unnecessarily personal
- tome 10y agoSorry, what do you mean?
- CyberDildonics 10y agoI'm saying don't play both sides of the coin, an ad hominem attack and then acting like someone else is a bully.
- mikerichards 10y agoI'm not a Haskell programmer, but I wish more languages had Newtypes. Most of the time I'm too lazy (or consider it too much boilerplate) to wrap strings in classes. But on more than one occasion I've spent too much time tracking down a bug because I passed the wrong string to the wrong argument in a method.
- louthy 10y agoI implemented a newtype [1] system in C#. It's (obviously) not as robust as Haskell (relies on some runtime checks), and isn't as efficient (reflection and boxing for value types). But if type-safety is what you want, it's definitely an improvement over passing integers, strings, or other basic types around. [1] Implementation - https://github.com/louthy/language-ext/blob/master/LanguageExt.Core/NewType.cs https://github.com/louthy/language-ext/blob/master/LanguageE... [2] Unit tests / examples - https://github.com/louthy/language-ext/blob/master/LanguageExt.Tests/NewTypeTests.cs https://github.com/louthy/language-ext/blob/master/LanguageE... [3] The request that led to the feature - https://github.com/louthy/language-ext/issues/95 https://github.com/louthy/language-ext/issues/95
- harry8 10y agoHere is the part where I want to update my data point about how many applications I can run for doing something other than writing code where the program was written in Haskell. This data point is useful because hackers gotta hack. If there's still not much here then I'm forced to assume that haskell still has problems that aren't being talked about. Off the top of my head I've got: pandoc - translates from one document format to another ion - a window manager git-annex - store stuff in git without it being in git. If we can get to 50 useful "apt-get install"-able programs Haskell will be worth looking closely at again. This is not trolling, this is useful data. We know FP is fun, cool, funky and all that. It's a different discussion as to what problems remain (if any) and how to solve them (if needed). I just want to see where we're up to in mid 2016.
- hudon 10y agodarcs and xmonad come to mind
- Ericson2314 10y agoI totally agree with the downsides. Ban synchronous exceptions now! Thank goodness everything else is library/ecosystem, rather than language, problems. I think those are easier to fix :).