12 ms·
We don’t like to talk about this: but modulo all the usual turf wars around libraries and attribution and where the braces go: serious Haskell people skew smart
by benreesman 5y ago
We don’t like to talk about this: but modulo all the usual turf wars around libraries and attribution and where the braces go: serious Haskell people skew smart and capable.
This comes with downsides around dicking around with trying to jam every part of the computation into the type system (not unlike C++ template meta programming).
But net/net, when a GHC contributor rolls up his or her sleeves, they on average have a bigger range than people who argue about ReactJS vs Ember.
Source: worked on one of the biggest production Haskell code bases on Earth, was involved in early design discussions on both React and Ember, and wrote big pieces of an ECMA-262 compiler/VM.
Haskell people skew smarter than most other languages.
Sorry for saying it out loud.
- auslegung 5y agoAgreed. I don’t have anything near your experience, but I have done Haskell in production for two years, and other things for longer. And yet I always say I’m not smart enough to use a language like JavaScript, I need a dumb language like Haskell :-)
- alfiedotwtf 5y ago> This comes with downsides around dicking around with trying to jam every part of the computation into the type system (not unlike C++ template meta programming). I'm not sure why you say this is dicking around as the payoffs for moving things higher up are usually orders of magnitude better
- uncletaco 5y agoNah this rings true. There's a reason Haskell's killer app is a mobile astrology reader.
- smikhanov 5y ago> worked on one of the biggest production > Haskell code bases on Earth Which one was that?
- he_is_legend 5y agoAs he also mentioned he was involved in early React, so maybe Facebook? They are known to use it for spam filtering, amongst other things.
- benreesman 5y agoSigma/Haxl.
- aardvark179 5y ago“But net/net, when a GHC contributor rolls up his or her sleeves, they on average have a bigger range than people who argue about ReactJS vs Ember.” I think that’s going to be true for most people who have both the skill to contribute to anything like GHC and the drive to do so, I’m not convinced it’s specific to Haskell no matter how much you’d like that to be true.
- dgb23 5y agoThey didn't say it was specific to Haskell, the wording was "than most other languages". My intuition is that they are right. More powerful and fitting tools with a higher learning curve attract different kinds of people than stuff that is tailored for the mainstream. There are also pragmatists who are extremely smart and capable and choose to deepen their expertise in Java (for example). But at _first glance_ it says more about a person if they are proficient in a specialized language than a mainstream one.
- benreesman 5y agoMaybe what I’m saying is that I give better odds for the typical senior Haskell hacker to get a useful diff into GHC than I do for the typical senior JS developer to get a useful diff into v8.
- kasey_junk 5y agoI actually think this is what is holding back the Haskell community from broader adoption. The senior Haskell hackers are much more interested in building compilers and runtimes and the like so the things that most developers really benefit from are missing. The IDE support, dependency management, performance monitoring and application frameworks are all just plain worse in the Haskell ecosystem than others. Smarter maybe holding the language back because it doesn’t correlate with shipping useful application software as well as other traits such as being customer oriented or empathetic to other workflows.
- benreesman 5y agoReason #9143346356 why I’m so grateful for VSCode even though I’d never use it: haskell-language-server —-lsp is pretty good. It’s kinda sad it can’t precise go to definition on libraries, but otherwise it’s really sweet.
- unicornmama 5y agoHaskel. For when you have an IQ of 187 but act like it’s 293. Haskel. Perfect code for a perfect world.
- benreesman 5y agoI might put those numbers at like 125 and 140, but your point is taken that there’s a fine line between reality and elitism, and I possibly strayed across it. There is in fact a difference between chasing the latest fad in serving HTTP requests and trying to do serious computation, but it’s also so much masturbation if nothing useful is getting built. I was leaning a little heavily into one side of the argument because the other side doesn’t seem to lack for advocates.
- gorjusborg 5y agoIt's understandable being anti-intellectual when spelling the thing you're deriding is out of reach.
- quickthrower2 5y agoI think the spelling was on purpose
- Communitivity 5y agoIt is Haskell, not Haskel. While it is possible to have an intelligence higher that an IQ score of 200 would indicate, the highest IQ score you can get is 200. The value of Hacker News is proportional to the time and thought contributors put into their contributions, including comments. Please take more time and thought before you comment, or refrain.
- riwsky 5y agofor the viewers at home, an IQ of 187 is a one-in-300-million intelligence. If you, or someone you know, has an IQ of 187, please reach out. I'll let you write whatever language you want, once I spin up a consultancy to rent out your monstrous services.
- tome 5y ago> Haskell people skew smarter than most other languages. As someone who is working on broadening Haskell adoption I'm trying to stop this being true! I'd like programmers of a wide variety of intelligence levels to be able to find a comfortable home in Haskell.
- benreesman 5y agoThis is a similar challenge to e.g. C++. Can it be done with SFINAE? Yeah, probably. Does Servant need pseudo-dependent types and does Wren need lenses? Maybe we could both make and respond to an HTTP request without getting into some pretty heavy shit?
- quickthrower2 5y agoI think there is a tension between the power of the type system which anyone in userland can use, and wanting to make things easy for the everyday programmer. What might help is a complete standard library framework akin to what C# provides out of the box that everyone agrees to use unless there is good reason not to. Also allow imperative syntax.
- carlmr 5y ago>This comes with downsides around dicking around with trying to jam every part of the computation into the type system (not unlike C++ template meta programming). Those people dicking around with C++ templates make the whole project slower to compile and more difficult to understand though. I don't really know anybody that can easily read the finished template magic that you need to achieve anything meaningful in C++. Something which I think is not so much the case with using a good type system fully.
- caslon 5y agoThat's true of any medium-small language, though. I'd argue it isn't true for the smallest of languages, because there's a genre of small languages that are made largely to trap nontechnical people into bad decisions, but it's true for all of the medium-small languages. Languages that are niche enough to require passion to find and get running average a much better quality programmer, because why wouldn't they? Tesla drivers are, on average, better drivers, because fewer teenagers drive expensive cars. Conlangs have the highest intelligence per speaker, on average, because they require intention to learn. Subscription MMORPGs have the smartest players, because a $15/mo subscription filters out most children. Nearly two decades ago, the guy who made this forum wrote a post about this exact phenomenon with Python, before Python was actually relevant in the industry or had a million resources to learn. Filters work. You aren't saying something controversial; you're just saying a more limited version of something that everyone already knows because you have tunnel vision. Filter the worst half out, and shockingly, the average looks better. This is a novel idea and you are a genius for coming up with it.
- lordnacho 5y agoDoesn't Haskell have a bit of an aura that languages of similar size don't? Kinda like how people think you're smart/educated if you study Latin, rather than Old Norse?
- rightbyte 5y agoOld Norse seems way more linguist-hipster than latin? However, reading about Haskell makes me feel like sitting in front of a bad university math book throwing hard to pronounce words and proofs at me, when I just want to pass the exam.
- caslon 5y agoHaskell has a reputation because a subset of the community chooses to push a reputation. This is how it works with almost every language. It actually, to an extent, works to its disadvantage. If a metric becomes a target, it stops being a useful metric, and some of the worst programmers I know have made their way over to Haskell to take advantage of this reputation in the last five years. The closest "real" languages in TIOBE are ML (a few positions under Haskell) and Scheme (a few above), and both have a pretty similar reputation.
- cpach 5y agoIn my book this doesn’t seem controversial. (As for me, I haven’t written one line of Haskell. Might never do.) Another thing I believe: Most (but probably not all) projects are better off not using Haskell.
- benreesman 5y agoTotally agree that most software is probably better off without Haskell. Most software is better off without C++, or Haskell, or Julia, or Nix for that matter. But when every edge matters: one would be foolish not to reach for the sharpest knife that one can handle properly.
- cpach 5y agoIndeed!
- _hcuq 5y ago“Haskell people skew smarter”. Well that’s me out. I’ll stick to JavaScript and C#.
- benreesman 5y agoAh that’s not at all what I hoped for with my post. JS is at its core a Lisp/Smalltalk hybrid, and if you write serious JS you know what “currying” is, whether you call it that or not. LINQ maps onto a lot of the same math that gets used in Haskell. I hope I haven’t done some elitist gatekeeping bullshit that discourages people from trying new things. I’d I did: don’t listen to me, keep trying new things!
- barrenko 5y agoLearn some Haskel or Ocaml, and Javascript / C# will seem way more complicated all of a sudden.
- CTmystery 5y ago> I hope I haven’t done some elitist gatekeeping bullshit that discourages people from trying new things. Sorry for "saying it out loud", but that's exactly what you did. This sort of post obviously irks many people. I think the reason is that pros have seen many many dimensions of what "being smarter" means. You can't claim that there is a correlation until you specify on what dimension of 'being smart' you're attempting to correlate against. Further, it perpetuates this super annoying egotistical myth for a collection of folks: they think that they themselves are much better programmers than everyone around them. When they write crappy code that can't be maintained, it's the team's fault. The team is obviously not up to their level of genius. Etc. Edit: removed an unnecessary bit for something hopefully more constructive.
- CTmystery 5y agoHere's a comment in another part of the thread, I see now what the phrase "skewing smarter" means to you: https://news.ycombinator.com/item?id=30258409 https://news.ycombinator.com/item?id=30258409 I no longer have a horse in the race. I wonder why categorical claims really get the blood moving :)
- ineedasername 5y agoI think serious $language people for any $language skew smart and capable. I'm not sure that the top 10% in any language (by whatever metric you choose to measure overall quality) are going to be significant more or less smart and capable than in any other language. Disclaimer: I have minimal exposure to Haskell or Haskell programmers, so this opinion is predicated upon my experience with programmers of many other languages, not Haskell in particular, so I could be completely wrong.
- benreesman 5y agoYeah I have no particular axe to grind on Haskell’s behalf. I’m a Lisp guy who has to write C++ all day like everyone else. Lazy is a ridiculous default, the combinatorial explosion created by GHC extensions makes C compiler quirks look like a gentle massage in comparison, and building Haskell is a friggin migraine on wheels. But for whatever reason, those folks are on average in my experience, serious as a heart attack.
- ineedasername 5y agoI'll take your word for it then, since I have seen similar opinions expressed before, but when you say "serious" what particular qualities are you thinking about?
- benreesman 5y agoSee a problem, realize it’s a graph, realize it’s traveling salesman, reduce it to 3SAT, and start grinding it out in MiniSAT before I can type “jupyter lab”.
- eru 5y agoThat's not particularly Haskell specific. What's more Haskell specific is recognizing many problems can be solved easier when seen through the lens of parsers, interpreters and/or compilers. Haskell's and the whole ML family of languages are great at writing parsers etc. In fact they were originally invented for implementing other languages.
- Tehchops 5y agoBut how are they able to get anything done when they're spending all their time telling everyone how smart they are? ;-)
- captaincaveman 5y ago>Haskell people skew smarter than most other languages. But are they more productive, get shit that we care about done, or do they go down monadic rabbit holes? By all means Haskell away in your pet projects, but having a company invest into a team to deliver things customers want, I'd like to see some evidence this makes sense outside specific niche areas (Cardarno possibly being a good example where it makes sense).
- benreesman 5y agoThere is a lot of “I wish this was Agfa so I could really flex” jerk-off stuff in Haskell. But I’ve seen way more useful software fall down the show off well in C++ than in Haskell. I think it was Thompson or Ritchie who said: “debugging code is twice as hard as writing it, so be half as fancy when writing as you could be.”
- captaincaveman 5y agoThat quote is something I had in mind when I wrote that message :) And your spot on with the C++ reference, but there its more the case the language was adopted in industry then it expanded into intellectual twiddling, Haskell has that as its starting point. Don't get me wrong I like programming in Haskell, C++ and others, I enjoy going beyond what I need to get the job done and amusing myself in doing things 'clever' ways. But no longer being paid to write the code and having different concerns to manage, its hard to qualify Haskell as a good choice.
- captaincaveman 5y agoHaving said all that, I probably would be biased towards someone that has Haskell on their CV (doesn't need to be commercial) as it would indicate intellectual curiosity (and probably some capability) in their profession!
- eru 5y ago> I think it was Thompson or Ritchie who said: “debugging code is twice as hard as writing it, so be half as fancy when writing as you could be.” I never agreed with the conclusion. Clearly the observation implies that you should use all your brain power to write your code in such a way that it is easy to read, understand and debug. That often means using eg the right abstraction for the job. Not the dumbest one.
- Kalium 5y agoI worked in a Haskell shop for a while. What I found was perhaps not precisely that they skewed smarter, but they definitely skewed more experienced. There were quite a few engineers who had been at it for two or more decades and very few whose first language was modern JavaScript. They were all very happy to be working in Haskell, so the morale benefit was substantial. This did not, perhaps, always result in better code. It did at times result in an excessive faith in the power of types to solve all problems easily and neatly. This sometimes got awkward, such as when the team had to learn what XSS was and how to prevent it.
- benreesman 5y agoFWIW that ties out closely with my anecdotal experience.
- marcosdumay 5y ago> This did not, perhaps, always result in better code. Personally, I make no effort to write good code when I'm programming in Haskell. It was in fact a hard to get paradigm change, because I am a careful developer that makes quite an effort to avoid future problems when programming. But Haskell code can change at any time, so the optimal path is to go from the proof of concept into the fully featured software redesigning as you go.
- rr808 5y agoOne issue is if smart people are more trouble than they're worth. I've seen too many 'smart people' drop in and do a bunch of fancy stuff that no one understands before leaving again because they're 'smarter' than everyone else. I'm still not sure if they were smart or just thought they were.
- vp8989 5y agoEffectiveness at work from what I have observed is mostly about pragmatism and willpower to do what needs to be done in that context. You need some baseline amount of mental horsepower but in most pursuits it's not that high. Really smart people can be some combination of idealistic, lazy or simply in a context that diminishes their willpower. Therefore their smarts don't really "manifest" in that particular context. I've worked with lots of people who I thought were bozos because they sucked at their programming job but they were clearly smart about other things.
- dimitrios1 5y agoThis has been my exclusive experience with all the "smart" FP developers who just couldn't help themselves into dropping FP libraries or concepts all over our node.js serverless backend every chance they could. One even quit because he couldn't use purescript on the frontend. Had to show another the door because he was so disgruntled that we were coding in a paradigm so beneath his intelligence that his toxicity and moping permeated across the entire team. Like dude do you realize what we are doing here... If they were that smart I don't think they would have ended up here next to me programming CRUD backends for a mobile app.
- AceJohnny2 5y agoSounds like a type of Bikeshedding: providing contribution (that's more noise than value) just to prove you're contributing. https://en.wikipedia.org/wiki/Law_of_triviality https://en.wikipedia.org/wiki/Law_of_triviality
- cogman10 5y agoA smart dev is someone that learns new paradigms and concepts and the applies them only where they make things easier to understand/maintain. It's not enough to learn about higher kinded types, you've got to know when forcing them into a place is a bad idea. I've seen a bunch of devs that can't help but write unmaintainable code because they learn a new programming concept and decide to shoehorn it in everywhere. This happens even with basic concepts like generics. The same thing happens to devs that aren't curious. If they never learn newer programming concepts then every problem looks like a nail and inheritance is the hammer. Those systems equally become unmaintainable because clearer programming paradigms would make the code more readable and maintainable.
- Kototama 5y ago> But net/net, when a GHC contributor rolls up his or her sleeves, they on average have a bigger range than people who argue about ReactJS vs Ember. In my experience when exposed to dynamically typed languages, they will argue endlessly on "how bad they are". Also proponents of strongly type systems are often incapable of recognizing the drawbacks of such systems. See for example https://github.com/fsharp/fslang-suggestions/issues/243#issuecomment-916079347 https://github.com/fsharp/fslang-suggestions/issues/243#issu... for a critique that is never expressed by Haskellers.
- benreesman 5y agoGetting a bit precious about typing is IMHO a weakness of the Haskell community/mindset. It’s not my favorite language, I’m a Lisp guy, but I stand by my assertion that a random sample from the Haskell population is a better bet on a hard problem than a random sample from the GraphQL population.
- Kototama 5y agoIt seems fair. I have an hypothesis beyond the fact that it's a niche so self-motivated people are pre-selected: what somebody needs to learn Haskell are in good part applicable to computer science and programming languages whereas for JavaScript you need to learn the quirks and the specificity of the ecosystem first. The second experience does not translate very well to solving hard problems.
- quickthrower2 5y agoSure thats like saying a random sample of 18 gear manual semi drivers are better drivers than an average suburban suburu dad driver, and … that makes sense!
- eru 5y agoI've worked with Haskell, OCaml and Erlang professionally. The other half of my career was spent mostly with some variants of C and Python. (I haven't contributed to GHC, though.) I can get work done in dynamically typed languages without arguing all the time. And from the point of view of eg Agda, Haskell itself is rather dynamically typed. It's all a continuum. Of course, some languages are still better than others. And even the same language can get better or worse over time. For example, modern Python is much more palatable than Python used to be in the bad old days.
- gilbetron 5y agoDo you put Mensa on your resume? While I think there's probably some low-range filtering going on with Haskell, I think that only shows that Haskell isn't that fit for writing much production software, since, for all the "smart people" very little has been done with Haskell. What I think Haskell does attract are people that like to develop overwrought, abstract, and ornate systems. Another reason it hasn't proven to be terribly useful for production software. I do like the experimental space languages like Haskell play in, and think there is strong net benefit to our field as a whole, by finding ideas that work when brought into that field. So I like people out there mucking around with different programming idioms/domains/approaches. If I see significant Haskell or Lisp experience on a resume, I tend to be wary.
- benreesman 5y agoCome on man, Mensa? I’ve never taken an IQ test and the only pedigree I have is the school (UCSD) that I flunked out of. I didn’t say that I’m personally a smarty-pants Haskell hacker. I said that those people skew smart and capable. How come @dang is always there like the Batman spotlight when I stray into ad hominem but I always get smashed with this stuff?
- gilbetron 5y agoI'm bemused that you think Mensa is such an ad hominem :)
- mischov 5y ago“Do you put Mensa on your resume?” is clearly a personal attack in this context. At least own up to your words.
- 0des 5y ago
- benreesman 5y ago
- krsrhe 5y ago
- DrBazza 5y agoI'd tend to agree. Every time I do any functional programming (which is rare), it leaves me with a 'better way to do this' feeling and a different view on things when I go back to writing a regular OOP language. On the other hand, I've worked with a lot of C++ programmers, that tend to be a bit smarter than the Java/C# programmers I've worked with. But, and it's a big but, some C++ programmers I've worked with really do have the Dunning Kruger effect. They write what they think is "smart code", but it's really horrifically complex code, that others have mentioned here as too complex for the next guy to easily debug. "If I had more time I'd have written less". (disclaimer, I clearly suffer from DK based on what I've just written...)
- yowlingcat 5y ago> Haskell people skew smarter than most other languages. > Sorry for saying it out loud. You can write good code in any language and likewise with bad code. What does it say about a speaker who makes such surface level and broad sweeping statements about a user based on the tool rather than the user's experience? At least to me, it smells of unrigorous thinking. It's an unprincipled stereotype that conflates cause and effect.
- jcelerier 5y ago> This comes with downsides around dicking around with trying to jam every part of the computation into the type system (not unlike C++ template meta programming) doing this my whole career has completely, 100% percent been an upside. This removes literally entire classes of bugs. Every time I've moved some check from run-time to compile-time I ended up finding so many cases that were subtly broken and that the compiler will now catch perfectly, until the end of time. I don't understand how it is sane to accept bugs that are automatically preventable.
- benreesman 5y agoYeah I mean there’s definitely a guns and butter curve here: hoisting stuff into templates and using either old-school traits or concepts gets you more compile-time checking (though I’d argue you’re still going to get more from a good static analyzer, which clang-tidy-13 is). But at some point build times matter. At some point L1i spills matter. At some point TLB spills matter. I don’t think it’s a knob we should always crank to 11.
- sidlls 5y agoI’d like an actual citation for this assertion. Anecdotally, and counter to yours: I’ve generally found that people who focus on a language for the intelligence attributes it supposedly implies of users are often simply deep experts in that language and it’s application mistaking that expertise for general intelligence.
- benreesman 5y agoThat’s a fair critique. Not anticipating the interest that this comment would produce I didn’t do some basic hygiene. I should have said: “In my anecdotal experience: X.” I said “X.” I screwed that up.
- ska 5y ago> Haskell people skew smarter than most other languages. In my experience this has nothing to do specifically with Haskell, but more a somewhat-time-varying collection of niche languages. e.g. Haskell roughly equivalent to lisp programmers roughly equivalent to [a few others], but not equally likely to find them 1998/2008/2018 or whatever. There is a flip side though, which is that a subset of them are not actually good team members. Depending on your project and team scale and role for them this can either not really matter or be deadly.
- CyberRabbi 5y agoSmart enough to write Haskell. Not smart enough to realize it’s not pragmatic in most cases. Or smart enough to figure out how to get a job writing Haskell without publicly begging for one online.
- tripa 5y agoHe's smart enough to get one. He's also smart enough to know he'll get a better one by giving his quest visibility.
- CyberRabbi 5y ago> He's also smart enough to know he'll get a better one by giving his quest visibility. The popularity of a blog post on HN rarely translates into any material gains. At best only serves to boost one’s ego for a day. The next day everything remains the same. Such is the life of someone who seeks validation over the internet.
- benreesman 5y agoParent has a minimum of one serious interview if they want it.