[HN Gopher] I would like a job writing Haskell
       ___________________________________________________________________
        
       I would like a job writing Haskell
        
       Author : Rerarom
       Score  : 394 points
       Date   : 2022-02-08 08:11 UTC (14 hours ago)
        
 (HTM) web link (blog.plover.com)
 (TXT) w3m dump (blog.plover.com)
        
       | dtornabene wrote:
       | Pretty wild to read so many comments about "programmers and their
       | one true language write terrible code anyway/or are weird" when
       | the person being commented on wrote one of the best perl books
       | there is (and one of the best programming books period) and made
       | a point of saying "I've never written it professionally". The
       | entire blog post is about him attempting to make a transition!
       | Those aren't the "one true language" people.
        
       | tiko_energy wrote:
       | tiko.energy is hiring Haskell developers for roles in Zurich
       | (Switzerland) and Milan (Italy). https://tinyurl.com/3v45m4kd
       | (this goes to LinkedIn).
       | 
       | We probably would not consider someone as far away as
       | Philadelphia on a permanent basis however, as we expect to
       | operate at least a hybrid model in the future.
        
       | makerofthings wrote:
       | I would love a job writing Haskell but any of the jobs I've seen
       | would involve a 6 figure pay cut. Haskell is such a joy to work
       | with.
        
         | deepsun wrote:
         | That's sad, but fair. You pay for the joy. In other words,
         | demand is weaker than supply, compared to other jobs, like
         | COBOL.
        
       | pknerd wrote:
       | It'd be interesting to see whether this guy got the job due to
       | this HN post or not.
        
       | hs211216 wrote:
       | I'm in a similar situation to Mark. I left my previous company at
       | the end of 2021. I needed to take a break so I decided to take
       | some time to learn Haskell better and study open source Haskell
       | projects before starting my next job search.
       | 
       | For what it's worth here's a list of Haskell hiring-related
       | things I've come across.
       | https://gist.github.com/hs211216/7e734535eadc869df26562b33db...
        
       | jbreckmckye wrote:
       | I had a job writing Haskell. Then when COVID rolled in we were
       | all put on furlough as the startup had iffy funding. Now I work
       | at a larger company slinging JavaScript.
       | 
       | Am I happier? Well, I'd say the technology I work on is a lot
       | less interesting. But I wouldn't trade in stability and benefits
       | for another early age startup, just to write monads again.
        
       | y04nn wrote:
       | I really want to like Haskell, there is great programs that I use
       | and love in Haskell (pandoc, glirc, hoogle, hackage), but the
       | ecosystem (cabal, stack, ghc) really drag you down, with
       | libraries incompatibilities, slow upstream updates, too many
       | language extensions and custom operators to decode the code you
       | didn't write. But usually there is great documentation to
       | compensate and usually good error reports from ghc.
       | 
       | Haskell is nice to write little programs with few dependencies to
       | avoid incompatibilities. I personalty used, and continue to use
       | it to write a small monolithic blogging platform with too many
       | dependencies. It works really well, is efficient, and the code is
       | really easy to update, even after not looking at the code for few
       | month. But if I would do it again, and for a production system, I
       | would split my code into multiple micro-services.
        
         | mwcampbell wrote:
         | I suggest not throwing out the baby (the monolith) with the
         | bathwater (dependency hell). Some languages are better than
         | others at managing dependencies. You might like Rust in this
         | regard; it has no global namespace, so IIUC, that minimizes
         | dependency conflicts.
        
       | darksaints wrote:
       | Without saying anything about this particular person, I've found
       | an interesting pattern with people who seek out a specific
       | programming language to work in: their actual code tends to suck
       | pretty bad. People that obsess over any particular language will
       | typically obsess over it because they learned some new
       | abstraction trick and seem to think that everything should be
       | rewritten in it. And so instead of focusing on the problem they
       | have to solve, they become obsessed with rewriting code that
       | already has solved problems...and they tend to do it in a way
       | that is short and succinct but utterly opaque and black-boxish.
       | No thanks.
       | 
       | Again, I'm not expecting that everybody who does this is like
       | this, but I've seen it enough that it is a pretty strong negative
       | warning signal.
        
         | kradroy wrote:
         | I have experienced this as well. Perhaps coincidentally the
         | type of language they're always obsessed with is a functional
         | one. I've yet to see a dev who's rabid over mutable state.
         | They're usually bonzo for free monads.
         | 
         | That being said, I've generally found people who are obsessed
         | over a single "technological thing" at work (language type,
         | language, framework, OOP dev principles) rarely produce
         | anything of value. They're usually on a mission to prove
         | themselves right at any cost. Flexibility and ingenuity are the
         | keys to a productive dev career.
        
           | darksaints wrote:
           | "They're usually on a mission to prove themselves right at
           | any cost." Exactly.
           | 
           | That being said I wish there were more devs obsessed with
           | mutable state. Some problems are inherently mutable, and
           | trying to make them immutable doesn't actually get rid of the
           | state, it just pushes it around awkwardly. Classes, for as
           | much hate as they get (mostly deserved IMO), are a godsend
           | for those types of problems. And while they're helpful,
           | stateful programming is still extremely hard. I really wish
           | there was more innovation in this area.
        
             | Tainnor wrote:
             | You can work with mutable state in Haskell, you just have
             | to be explicit about it (e.g. State monad).
        
         | mjd wrote:
         | How about people who say "I've done professional work in 17
         | languages but none is much like Blub. Blub looks interesting
         | and I'd like to give it a try."
         | 
         | That seems like a less dubious motive.
        
         | dack wrote:
         | while i don't disagree with you (i have also encountered the
         | type of people you're referring to), i think the stance is more
         | valid than people want to give it credit for.
         | 
         | I would go so far as to say many of the people I've encountered
         | who push back on "abstractions" and keep talking about how
         | programming is "about solving problems" are the ones who allow
         | the codebase to slowly go to shit in the name of features, and
         | progress eventually grinds to a halt until a big rewrite. And
         | in my experience, there are _way_ more of these types of people
         | than the ones over-abstracting. Or it's possible my last
         | company was just skewed toward that culture.
         | 
         | Either way, I've only known a couple people who seem to balance
         | these concerns well and they are the best programmers I know.
        
       | MaxGabriel wrote:
       | Mercury is hiring ~50 developers to write Haskell this year. Our
       | entire backend is in Haskell, and powers banking for many
       | startups and e-commerce companies
       | 
       | Try it out at demo.mercury.com
       | 
       | Jobs page: mercury.com/jobs
       | 
       | To the OP: I asked our team to reach out to you
        
       | bandrami wrote:
       | I would like a job painting things green. It's kind of a category
       | error.
        
       | beamatronic wrote:
       | I would like a job using Motif to create GUI apps for UNIX
       | workstations using plain C.
       | 
       | edit: messed up some words
        
       | runeks wrote:
       | I work for Obsidian Systems (https://obsidian.systems/) writing
       | Haskell. I believe we're still hiring engineers, and I've pinged
       | the partners with a link to this post.
        
       | m1117 wrote:
       | Philly is the best. Everyone should come to Philly!
        
       | throwaway4good wrote:
       | In Denmark wildcat banker Lars Seier's crypto startup explicitly
       | hires Haskell-developers:
       | 
       | https://www.concordium.com/careers
        
       | mboes wrote:
       | Tweag hired 50+ developers in 2021. We're aiming to hire 50+
       | developers in 2022. https://tweag.io/careers.
        
       | jll29 wrote:
       | It's a good idea to try to find a job this way, but given that he
       | has been part of the Haskell community for a long time one might
       | ask "Why can't he find a job using his network?" given his
       | accomplishments.
       | 
       | I have never ever seen a job ad asking for Haskell, and the only
       | time I needed to hire a Haskell dev (with NLP skills), a post to
       | the Haskell mailing list led to zero replies, so we had to re-
       | implement everything in Java.
       | 
       | Now I don't think this is a problem of functional programming not
       | being popular, because there are some commercial shops using
       | LISPs around.
       | 
       | I would like to read more blog posts about commercial
       | implementations in "minor" languages.
        
         | gilmi wrote:
         | > I have never ever seen a job ad asking for Haskell.
         | 
         | I mean, just look at the Haskell subreddit or Haskell weekly
         | news?
        
         | ReleaseCandidat wrote:
         | > a post to the Haskell mailing list led to zero replies
         | 
         | There is Haskell Weekly with weekly job offers:
         | As of November 2020, over 4,100 people subscribe to Haskell
         | Weekly.          Over the last five issues, the average open
         | rate was 37% and the average         click rate was 16%.
         | 
         | https://haskellweekly.news/issue/301.html
         | https://haskellweekly.news/advertising.html
        
           | the_only_law wrote:
           | I remember looking through some random Haskell job board out
           | of curiosity last year and an the listings were
           | overwhelmingly for Crypto/Web3 startups, with pay ranges
           | clearly not targeting US devs (I think mid $30s was a common
           | low end)
        
           | littlecranky67 wrote:
           | Offtopic question: How can you (reliably) meassure open rate
           | of a newsletter? I'd assume mail clients as well as
           | webmailers preventing any sorts of tracking, and tracking
           | only those that have lax privacy requirements would taint the
           | whole metric, wouldn't it?
        
             | ReleaseCandidat wrote:
             | Yes, it does (Haskell Weekly uses Mailchimp):
             | How we calculate open and click rates            The open
             | rate is a percentage that tells you how many successfully
             | delivered        campaigns were opened by subscribers. To
             | find this out, Mailchimp loads a        tiny, transparent
             | image into each campaign, and counts how often the image is
             | loaded among the delivered campaigns. The image is
             | invisible to your        subscribers.
             | 
             | https://mailchimp.com/help/about-open-and-click-rates/
        
               | _1 wrote:
               | Doesn't gmail prefetch images, regardless of someone
               | opening the email?
        
               | zeckalpha wrote:
               | With 4100 samples, you can do some statistics to estimate
               | an overall open rate.
        
               | littlecranky67 wrote:
               | Yepp, but most mailclients block externally-linked
               | content in HTML emails. Only inlined content is loaded.
               | 
               | And if you measure only those clients that ignore
               | that/whitelist that, the metric is skewed/biased towards
               | less-privacy sensetive users.
        
         | aurora72 wrote:
         | Haskell Developer - 6 to 12 months project - Remote (May 21,
         | 2021)
         | https://www.freelancermap.de/projektboerse/projekte/entwickl...
        
           | littlecranky67 wrote:
           | This is a posting from 8 months ago, also geared towards
           | freelancers (not a permanent hire).
        
         | defanor wrote:
         | > I have never ever seen a job ad asking for Haskell
         | 
         | I see those occasionally, even here, on HN: in those "who's
         | hiring" threads, and a few linked from this thread. But they
         | tend to be odd: working on astrology,
         | cryptocurrencies/NFTs/etc, or other unfortunate conditions
         | coming along with it.
         | 
         | I'm also writing in Haskell at work, though that started as a
         | Perl job. But for the reason mentioned above, I'm not sure if
         | it's a good idea to look for a Haskell job, even if you want to
         | write in it: restricting jobs to just Haskell certainly makes
         | it much harder to find openings in places that work on
         | something sensible/useful, and satisfying other requirements
         | (especially if you also include ones like remote work). Unless
         | one is particularly focused on just the process and not on the
         | result, using awkward technologies to achieve useful goals must
         | be preferable to using nice technologies to achieve something
         | of a dubious value.
        
           | tluyben2 wrote:
           | > astrology, cryptocurrencies/NFTs/etc
           | 
           | they are eating rather a lot of the experts; there was prior
           | concern here on HN (if I remember correctly) about the
           | negative effects that has on the Haskell community as a whole
           | if most talented devs work on virtual beanie babies. I think,
           | because the crypto communities are putting so much money into
           | formal verification and dsl writing advantages, it is good
           | for the whole.
        
         | mijoharas wrote:
         | > Why can't he find a job using his network?
         | 
         | I think his blog has a fair readership, and constitutes a part
         | of his network, so I see this as him doing exactly that!
         | 
         | Given that it's on the front page of HN right now, I imagine
         | he's getting better reach than he might have from asking a few
         | people he knows, so it seems like a very sensible thing to do.
        
         | nickkell wrote:
         | I would say his readers count towards his network. I don't
         | think this is any different to somebody announcing on linkedin
         | that they're looking for opportunities.
        
       | rundmc wrote:
       | Tontine Trust is making the global pensions industry Functional
       | with a new OECD endorsed design described by a Nobel Prize
       | Winning Economist as "a pension system for the world that can
       | never go bankrupt". See: https://tontine.com
       | 
       | We always have room for more Haskeller mathematicians with solid
       | experience.
        
       | moomin wrote:
       | "I'm not sure I should admit this". Way to bury the lede.
       | 
       | Seriously mate, good luck. I love Haskell too despite having no
       | professional experience in it.
        
       | mebassett wrote:
       | Proda, a proptech company in London, has a large team of haskell
       | programmers (local and remote). They make software to help
       | commercial real estate investors get a better handle on their
       | data. www.proda.ai
       | 
       | full disclosure: I helped start proda.
        
       | quickthrower2 wrote:
       | I have a theory if you want a haskell job you have to compromise
       | heavily on many other aspects of job criteria such as salary,
       | preferred location, interest in the domain etc. Why? Because
       | there are so few of those jobs that it is highly selective and
       | leaves you no selectivity for other aspects.
       | 
       | Want $300k + Haskell? You better be someone who wrote GHC!
       | 
       | Want $300k without Haskell? Just need US residence, and coding
       | skills and be a bit ruthless.
       | 
       | I think a good Haskell job is the on where you build your own
       | micro SaaS using Haskell.
        
         | ghostwriter wrote:
         | > Just need US residence
         | 
         | "If you're homeless, just buy a house"
        
           | quickthrower2 wrote:
           | It wasn't a social commentary, just an observation that way
           | many more people are at the intersection of can code and can
           | work in the US, vs have some serious Haskell/FP bragging
           | rights.
        
         | zerr wrote:
         | People who work on GHC are good C/C-- programmers working at
         | Microsoft Research (Cambridge) for 60K GBP :)
        
           | __s wrote:
           | nb spj has left MS Research:
           | https://discourse.haskell.org/t/new-horizons-for-spj/3099
        
           | thewarrior wrote:
           | Doesn't Microsoft research pay top dollar ?
        
           | krsrhe wrote:
           | Do they have side income based on their leadership of GHC?
        
           | the-lazy-guy wrote:
           | The only person deeply involved in Haskell at MSR Cambridge
           | was Simon Peyton Jones. And he was Senior Principal
           | Reserarcher. You can look up the total compensation for that
           | level on public salary sharing websites yourself. You are off
           | at least by a factor of 5.
        
             | zerr wrote:
             | I see. Although, for Cambridge, UK, I might be off by a
             | factor of 2 at most, I believe.
        
       | tasha0663 wrote:
       | I've been reading this blog on and off for years. In case you're
       | reading on a screen orientation that causes the sidebar and
       | "About Me" link to vanish, the writer is Mark Jason Dominus,
       | author of _Higher Order Perl_.
        
       | throwaway4good wrote:
       | But the question really should be: Why are no large software
       | development projects done in Haskell?
       | 
       | It is a common language in University CS-classes, so it gets a
       | push from that.
       | 
       | What is missing from the platform?
        
         | [deleted]
        
         | tazjin wrote:
         | There are. But from experience with my customers that use
         | Haskell, they don't go around advertising it much.
         | 
         | I hope this guy finds a good Haskell job and doesn't end up in
         | the blockchain world, which is way too prominent in the Haskell
         | ecosystem.
        
         | thrown_22 wrote:
         | Tooling. It's the same thing that sunk Scala in industry.
        
         | xupybd wrote:
         | It takes a lot to learn to a degree of proficiency. Industry is
         | about solving business problems easily. Hiring a fresh grad to
         | throw together your SAAS business is all too common and they
         | pick and easy to use framework the butcher it into a successful
         | business and terrible mess for future senior devs to clean up.
        
         | xyproto wrote:
         | Some programming languages are more conductive for some types
         | of applications.
        
       | vcryan wrote:
       | This dude should apply for some jobs. As a hiring manager, I
       | don't spend much time searching for blog posts about someone
       | being interested in a new job.
       | 
       | The part about resignation without having a new job may be
       | totally fine, but I'd be curious to understand the circumstances.
       | 
       | A person that confuses a job application with a blog post might
       | get confused about other aspects of work responsibilities.
        
         | dack wrote:
         | they have a following on their blog, so rather than cold-apply
         | to various (possibly terrible) companies and get thrashed
         | around by their recruiters, they figure someone may be able to
         | give them a high-quality lead and a foot in the door. Seems
         | 100% reasonable to me.
         | 
         | > A person that confuses a job application with a blog post
         | might get confused about other aspects of work
         | responsibilities.
         | 
         | Are you serious about this? It seems like an extreme over-
         | generalization and very unlikely to be true at all.
        
       | agentultra wrote:
       | Work at Mercury [0]. They train folks who haven't used Haskell
       | before.
       | 
       | [0] https://mercury.com/jobs
        
       | ajdegol wrote:
       | Cardano. Plutus.
        
       | tdsamardzhiev wrote:
       | Chaos Group does some cool work in Haskell:
       | https://www.chaos.com/all-products
        
       | ggm wrote:
       | Any blog with Robertson Davies deserves promotion. My favourite
       | Canadian author. And I certainly hope he finds haskell work,
       | burrito or not.
        
         | mjd wrote:
         | Davies has showed up on my blog a few times. It's possible you
         | will enjoy these miscellaneous notes on _The Manticore_:
         | https://blog.plover.com/book/Manticore.html
        
           | ggm wrote:
           | Interesting. Nice notes, thanks! I liked "Leven of malice"
           | and found myself thinking of it again recently reading "the
           | shipping news": -the resonances of small (and not so small)
           | town newspaper publishing in the two. And Proulx writes of
           | similarly broken people.
           | 
           | "A mixture of frailties" is a great read for anyone who has
           | uprooted themselves for serious study or work, and suffers
           | culture shock.
           | 
           | My mum was an art historian and studied under Anthony Blunt
           | at the Courtauld Institute so you can understand how
           | "Cornish" read to me.
           | 
           | If you haven't read "Posession" by AS Byatt, I think having
           | enjoyed "Cornish" you would like it. A very different book
           | but touching many similar concepts without the magical
           | realism perhaps. (Academic rivalries, art history)
           | 
           | I often think of the "putting yourself on trial" rap from
           | "the Manticore" -my own star chamber isn't always as even
           | handed.
        
       | lordnacho wrote:
       | The interesting thing this brings up is whether programming
       | hiring is too specific. Why do we hire reactjs programmers with
       | e-commerce experience instead of react programmers, e-commerce
       | programmers, or programmers?
       | 
       | To me this guy sounds like he could do anything, just see if he's
       | easy to work with and see if he likes your domain. He's certainly
       | said enough about programming over the years that he shouldn't
       | need a leetcode grilling.
       | 
       | Anyway my point was it can get quite narrow what we look for in a
       | coder when in fact some broad experience might be just what is
       | necessary. For instance I've coded apps for iPhone and Android
       | despite being ostensibly a back end financial trader. I'd think a
       | lot of coders wouldn't want to be siloed into the first thing
       | they get a job in.
        
         | kragen wrote:
         | He's easy to work with. I was a technical reviewer on his book,
         | and not only was he extremely good at communication, he
         | gracefully handled stupid bullshit from me that nobody could
         | reasonably be expected to handle. In terms of interpersonal
         | ability, I think he's head and shoulders above the crowd.
        
         | giancarlostoro wrote:
         | Personality in my opinion and humility are the biggest two
         | things when I care about who my team mates are. If you have
         | more than one hot head you are not going to be happy, they will
         | eventually clash and one or both or more will try to leave.
         | Programming can get frustrating and stressful on its own, why
         | add to the fire?
         | 
         | People learn to program over time. You want to resolve bugs the
         | sooner the better, if you spend all day arguing or you're
         | working with one of those "its not my code my code is perfect"
         | types you're going to have to do more work to get things
         | moving. People who think they know it all can hold you back,
         | some devs are great at some things at the same time some at
         | others. Find a nicely balanced team that can work together.
        
         | bluetomcat wrote:
         | Hiring for a particular language/framework/ecosystem
         | combination almost always limits the prospects for the
         | employer. Any seasoned programmer with some C, Python, Java and
         | JavaScript experience can get up to speed with your shiny UI or
         | cloud framework and won't brag about it. The opposite is rarely
         | true. That AWS, Node.js or Blockchain expert can hardly write a
         | Python module in C.
        
         | ChrisMarshallNY wrote:
         | _> He 's certainly said enough about programming over the years
         | that he shouldn't need a leetcode grilling._
         | 
         | If the purpose of the test were to evaluate the applicant's
         | technical ability, then this would be true.
         | 
         | I'll lay odds that is not the purpose of the testing, though.
        
         | gilbetron wrote:
         | I somewhat agree with your point, but the I think software
         | developers underestimate the difficulty in getting someone up
         | to speed when the "tech stack delta" is significant. Every
         | piece of technology you need to learn isn't a linear increase
         | in time, but rather more quadratic. Learning just k8s might
         | take N weeks, and learning Go might take M weeks, but learning
         | k8s and Go at the same time takes more than N+M weeks, and
         | might take something more like N X M weeks (or really 0.1N X
         | 0.1M or something). Learning one tech while also learning
         | another tech makes each more difficult. I push employers to
         | understand this and instead of throwing people into the tech
         | pile, have them hit each tech bit one at a time, but the sink-
         | or-swim belief is strong.
        
         | shalmanese wrote:
         | If the average tenure is 20 years and person A takes 1 month to
         | become effective and person B takes 6 months, then person B has
         | to be 2.1% more productive to be greater ROI. If the average
         | tenure is 1 year then person B has to be 83% more productive
         | for greater ROI.
         | 
         | Increased job liquidity means employers seek increasingly
         | specific fit above all other considerations.
        
           | feoren wrote:
           | There is no programming job in the world that would take me
           | _six months_ full-time to become effective. _Maybe_ a month,
           | if it 's an awful setup in an awful, unfamiliar programming
           | language with unhelpful colleagues. It sounds like you're
           | assuming if you hired a React programmer to work on your
           | React app, it would take that programmer 1 month to get up to
           | speed, while it would take a Haskell programmer 6 months. I
           | claim: if your codebase is complex enough and your situation
           | unusual enough that it would take a React programmer 1 month
           | to write productive React code, the Haskell programmer will
           | take 2 weeks. This is because the vast majority of the
           | learning curve is in your domain and setup, not in how React
           | components work. (Assuming for sake of argument they are
           | actually smarter.)
           | 
           | People vastly overestimate how long it takes a decent
           | programmer to learn new tech.
        
             | maerF0x0 wrote:
             | in my experience people should be contributing _something_
             | within a month, hit a reasonable stride by 6 months, and
             | asymptotically approach full speed extending out to 36
             | months.
             | 
             | A lot of the speed a junior, or new person has, is in not
             | considering the things they do not know. If the system is
             | incredibly robust it will just absorb their bad decisions.
             | But in most decisions it means they planted ticking bombs.
             | Often 5 minutes today costs 5 hours in 6+ months time.
        
               | newaccount74 wrote:
               | That's my experience as well. If someone is "productive"
               | at their job in a month, then the job is either trivial,
               | or they have a senior dev holding their hand.
        
         | hk__2 wrote:
         | It really depends on the size and resources of your company. I
         | used to work for a large French ecommerce company where most of
         | the stack was in Clojure and most of the people we hired were
         | totally new to this language and/or were Clojure fans but were
         | new to the ecommerce world. It didn't really matter as long as
         | they were motivated because we had the resources to train them
         | and give them time to learn.
         | 
         | I left ~1 year ago to join a very early-stage startup where
         | we're currently 5, and while I would love to hire people that
         | don't master at least most of the stack we use, I just can't
         | because we really don't have the resources to afford to have
         | someone spending time (their time and also other people time)
         | learning everything. This probably an extreme example but it
         | illustrates the point: even if you'd like to hire people in a
         | broader spectrum, you can't always afford to. [ I hope that at
         | one point we'll be able to do it :) ]
        
         | throwaway81523 wrote:
         | There are certainly Haskell jobs in the Bay area. No idea about
         | Philadelphia. MJD doesn't seem to have embarked on a Haskell
         | job search so far, beyond the blog posting announcing his
         | availability. So my bet is that he gets plenty of takers.
        
           | mdm12 wrote:
           | The Philadelphia tech job market exists, but...it's not like
           | New York/Boston/SF. The major players are Comcast(...),
           | Vanguard and a smattering of Big Pharma companies. There is a
           | startup scene (most notable success likely being Gopuff), but
           | not a huge one.
           | 
           | Thankfully, the remote situation has improved dramatically,
           | so I agree, they should be ok :)
        
         | pjmlp wrote:
         | Fully agree, the only reason I have some stuff on Github it
         | isn't even for the joy of doing FOSS and contributing to a
         | better world, rather to keep HR happy that I am actually
         | proficient on stuff done as hobby coding.
         | 
         | However that is something that most families cannot manage, and
         | one cannot be expected to create portfolios on SCM of the year
         | just to prove their skillset.
        
         | nhoughto wrote:
         | I wonder if it's a signal of how much their are willing to
         | Invest in people. I've been interviewing recently and have seen
         | many companies are explicitly "we don't care about language exp
         | we will teach you, we want good ppl".
        
         | NikolaNovak wrote:
         | I cannot answer either the more broad or more specific
         | questions in these threads. But my 2 cents as to:
         | 
         | "Why do we hire reactjs programmers with e-commerce experience
         | instead of react programmers, e-commerce programmers, or
         | programmers?"
         | 
         | In my neck of the woods, we generally hire specifically
         | PeopleSoft Programmers, _ideally_ with Payroll experience. Here
         | 's why:
         | 
         | 1. First and foremost, developers need to do more than spit out
         | code. They need to _thoroughly_ understand business problems,
         | work with business analysts and product owners to hash out
         | requirements, be able to meaningfully discuss these
         | requirements, create design that they can independently sanity-
         | check meets these requirements, and _then_ work on translating
         | it into code. 2. They need PeopleSoft experience and knowledge
         | - it 's a specific ecosystem and language with specific
         | requirements and constraints and capabilities. Programmer needs
         | to fully understand these early on when they discuss
         | requirements and solution with business.
         | 
         | 3. Payroll experience helps, again for them to be able to
         | discuss things meaningfully with the business.
         | 
         | I know that this ("Dev needs to be able to gather
         | requirements") is self-evidently true across development world,
         | but I want to underline that our developers can meaningfully
         | discuss intricacies of Canadian and Provincial tax code,
         | payroll processes and regulations, time and labour, benefits,
         | pension, and other adjustments with their functional
         | counterparts; while also having meaningful discussions with our
         | DBA & Infra teams on indexes, stats, etc. All in the specific
         | world of PeopleSoft where code resides in database, with
         | specific component processor which offers about 30 different
         | ways to trigger code on a page, while ensuring data integrity
         | etc.
         | 
         | With that in mind, historically, it's just as easy and perhaps
         | easier/faster/cheaper, to train a new grad (and we do, a lot!),
         | rather than get somebody experienced in a completely different
         | ecosystem and try to retrain them.
         | 
         | Now, PeopleSoft is a very specific (quirky, legacy,
         | idiosyncratic, crazy, etc) ecosystem, but I think using it as
         | an extreme example may show some of the core reasons why even
         | in less extreme environments, requirements are fairly specific.
         | Yes, a good programmer with wide experience has a lot of
         | skills. But by numbers, I think most devs work in business
         | areas with specific set of common industry/sector problems and
         | solutions, which reward specialization.
        
         | synergy20 wrote:
         | you have to fit into the company's software ecosystem, if
         | everyone uses php or python there and you do Haskell it does
         | not matter if you're a MIT PhD that happens to be a Haskell
         | core developer that can rewrite chrome in Haskell in a month,
         | it just does not fit.
         | 
         | That been said, there are definitely companies need Haskell
         | developers, it just has less positions for a smaller pool of
         | developers.
        
         | austincheney wrote:
         | Why React at all? Is JavaScript really that horrific or does
         | nobody know what they are doing?
         | 
         | I suspect the goal is to widen candidate availability to the
         | maximum, cast the widest net. I find this odd because
         | compensation is now absurd competence, experience, and product
         | quality be damned.
        
         | brenainn wrote:
         | My feeling is a lot of that is driven by recruiters. It's
         | probably a lot easier to sift through dozens of resumes by
         | looking for keywords. It's a bit shit though. There's plenty of
         | jobs I'd like to apply for specifically because they advertise
         | that they use technologies I haven't worked with. I could spend
         | the time trying to convince them I can learn quickly and my
         | other skills make me an asset, but I'm afraid of it being a
         | waste to do so if a lack of "X years experience in Y" trips
         | some red flag.
         | 
         | As an aside, advertisements for developer positions need some
         | sort of intervention. I'm tired of not knowing who the company
         | is ("Exciting opportunity with growing startup in the whatever
         | space!"). I also see things like "experience with object-
         | oriented programming required". These days that's like saying
         | "we're looking for a driver who has experience with steering
         | wheels" and really puts me off.
        
           | the_only_law wrote:
           | I spent my entire job hunt last year, neglecting to apply for
           | positions that interested me, because whether I thought I was
           | capable or performing or not, I know that my resume,
           | basically just a projection of my past experience, would
           | never get me through the resume screening step. Actually in
           | fact, the first few applications I put in never made it past
           | screening and I couldn't even be mad. It made perfect sense
           | why on paper I'm not qualified.
           | 
           | I could probably find a way to make myself look qualified,
           | but it's be a lot of work and frankly, I haven't had the
           | drive or passion for programming required to do that for
           | years. Probably just easier to quit and find some new career
           | at this point.
        
         | ineedasername wrote:
         | _Why do we hire reactjs programmers with e-commerce experience
         | instead of react programmers, e-commerce programmers, or
         | programmers?_
         | 
         | We do hire less specialized programmers, we just don't pay them
         | at the scale that someone with 30 years of experience might
         | expect. If the job really needs someone that knows a specific
         | tech immediately then the expectation is that a candidate has
         | at least pursued a decent amount self-learning, which for
         | someone with 30 years of experience should be easy to do in a
         | couple of weeks. (The author here _has_ done that*) All else
         | being equal we still wouldn 't pay them the same as someone
         | with 5-10 in that specific tech though.
        
         | ivanhoe wrote:
         | Good programmer can switch niches and will still be a good
         | programmer, there's no doubt about it. Problem is that it still
         | takes some time. You can't just pick up a new language (or even
         | just a new framework) and immediately start producing your best
         | code. It takes time to pick up the style and best practices,
         | and to learn all the nuances. Also very importantly to embrace
         | that new mindset, which can be sometimes hard when you've been
         | doing something in a particular way for long time. There's
         | always that warming up period where you instinctively still try
         | to stick to your habits from the previous language, and you end
         | up with Frankenstein looking code for a while.
        
         | 0xedd wrote:
         | Unfortunately, a lot falls on networking (the human kind).
        
         | deltaonefour wrote:
         | I've had an interviewer literally stop the interview to give me
         | career advice when I told him I was a generalist. His advice
         | was that whenever he hears about someone who's a full stack
         | generalist he knows they aren't that good. His advice was to
         | specialize and get really really good at something.
         | 
         | Keep in mind I'm super senior. Much older than most people in
         | this industry.
        
         | slouc wrote:
         | I've been in the industry for ten years, and this is the first
         | time I hear about asking for things like "e-commerce
         | experience". My CV consists of telecom, e-commerce, fintech,
         | mobility and music industry.
         | 
         | Is it really like that somewhere? In the US, or in particular
         | domains, or in particular technology space? If it matters, I've
         | mostly been working with JVM, but two quite different paradigms
         | - Java (OOP) and Scala (pure FP; I understand everything the
         | haskell guy talks about).
        
         | mcv wrote:
         | We tend to get hired for what we've done before, rather than
         | for what we want to do in the future. Although it wasn't always
         | like that for me. For a long time I felt it was totally normal
         | to learn a completely new language for a new job.
         | 
         | My first job was Visual C++, my second job was Java and XSLT,
         | my third job was Ruby, my fourth was Groovy with some Java and
         | Ruby. Then after some more Java and Ruby, I ended up in
         | Javascript + Angular, then Typescript + Vue, now Typescript +
         | React.
         | 
         | I feel like I'm fairly lucky in that I at least still get to
         | hop frameworks; there are tons of people who've been doing
         | Java+Spring for 20 years now. I wouldn't mind moving to Kotlin
         | or Scala, but that's hard to find. At least for me; most
         | recruiters still look at what I did in the past, and they see a
         | lot of Java, so they assume that's what I do.
        
         | zerr wrote:
         | The prominent example of gatekeeping is game industry.
        
         | Tade0 wrote:
         | I'm currently working with a C++ dev who has exactly zero
         | previous experience with the web, but because he essentially
         | finished his part of the system, he picked up web-related
         | tasks.
         | 
         | My manager today was wondering if that's particularly
         | efficient, to which I replied "he knows how to program".
         | 
         | I mean, the guy has a PhD in physics - I bet that what he's
         | doing now isn't even his final form.
        
           | nicoburns wrote:
           | > My manager today was wondering if that's particularly
           | efficient, to which I replied "he knows how to program". > I
           | mean, the guy has a PhD in physics - I bet that what he's
           | doing now isn't even his final form.
           | 
           | I don't doubt that they guy you work with is excellent and is
           | able to seamlessly make this switch, but I have previously
           | worked with someone who was excellent at C++, and had a PhD
           | in something maths related (can't remember what exactly), and
           | completely failed to get anywhere with JavaScript. As in:
           | took 2 weeks to write a script that would take me a couple of
           | hours, and it was still in a pretty bad state at that point.
           | 
           | It seems that they hadn't encountered async programming
           | before and really struggled to get their head around it. The
           | silly thing is their program didn't actually require any
           | concurrency so they could just have stuck an `await` on each
           | async function call and treated it like synchronous code, but
           | they were convinced that async-await was too complicated to
           | learn up front so they had a complete mess tracking
           | everything with callbacks.
        
             | yodsanklai wrote:
             | > It seems that they hadn't encountered async programming
             | before and really struggled to get their head around it.
             | 
             | Seems totally normal. And most likely, after a few weeks
             | this person would get the concept.
        
               | FpUser wrote:
               | This is interesting. Personally I did not need to
               | "encounter" async. At some point I realized that I needed
               | it in my project (it did not have that official name back
               | then) and had written an implementation in a few days. I
               | also written preemptive multithreading library in ancient
               | DOS based product with having zero prior experience.
               | Again took me few days.
        
             | blahgeek wrote:
             | I won't say someone is good at programming if he/she cannot
             | learn JavaScript in two weeks
        
               | nicoburns wrote:
               | Perhaps not in a general sense. But that they were
               | certainly good enough at C++ that my employer was quite
               | happy with their performance at those tasks. They just
               | weren't very good at translating that to areas they were
               | less familiar with.
        
               | jiggawatts wrote:
               | I agree, you'd have to be a pretty bad programmer if you
               | can't wrap your head around JavaScript in a couple of
               | weeks. TypeScript even. Also, React. Babel. Grunt. Gulp.
               | NPM. Node. Cobertura. Comfey. JQuery. Angular. Vue.
               | Bootstrap. Flutter. Mocha. Minior. Yarn. Leftpad.
               | Webpack. Npx. JSON. Rest. CORS. XMLHttpRequest.
               | WebSockets. Web Storage. IndexDB.
               | 
               | Actually, I think some of those might be Pokemon.
        
               | brimble wrote:
               | I've never had the experience that learning a language is
               | harder than learning the culture and (usually bad) tools
               | around it. Stuff like "oh no, I know the official docs
               | say that, but no one does it that way" or "this tool is a
               | 'hip, faster, drop-in replacement' and you'll see it
               | recommended everywhere but the last part is actaully a
               | lie" or "the platform says it supports this language but
               | actually the tools are so broken that it effectively does
               | not" et c.
               | 
               | [EDIT] I had in mind Android, Yarn, and AWS Lambda + Java
               | (as of a couple years ago, anyway), in order, for those
               | examples, for the curious :-)
        
             | injidup wrote:
             | And why wasn't someone there to ease him over the culture
             | hurdle? I've taken people who had no idea about Async and
             | baby sat them till it clicked. But left alone it would
             | never have happened. New hires should not just be thrown a
             | task, left alone and then be slandered two weeks later on
             | hacker News when they get it wrong.
        
               | nicoburns wrote:
               | A combination of bad management (nobody set up that
               | mentoring relationship), and insecurity on their part (I
               | tried to do just that, but they wouldn't accept the
               | help).
               | 
               | > New hires should not just be thrown a task, left alone
               | and then be slandered two weeks later on hacker News when
               | they get it wrong.
               | 
               | They were certainly not a new hire (they'd been at the
               | company 7 years - if anything I was the new hire!), but I
               | generally agree. My point was merely that while some
               | people will easily transfer their skills to different
               | languages and domains, this won't be true of everyone.
        
               | wildmanx wrote:
               | > They were certainly not a new hire (they'd been at the
               | company 7 years - if anything I was the new hire!), but I
               | generally agree.
               | 
               | That tends to make it harder. I've experienced quite a
               | few people more "senior" than me (either age-wise or
               | company-tenure-wise or both) who had trouble having the
               | less-senior guy telling them things like suggesting
               | different designs or code refactors. Some things were
               | just not obvious _why_ my suggestions were better, but
               | they were based on experience with this particular
               | technology. So they preferred to ignore the advice and
               | run into the issues I and other colleagues had run into 3
               | years prior cause they didn 't want to listen. Sadly,
               | they didn't always have to live with the consequences
               | since some of them moved on before the consequences
               | became obvious, so we had to clean up the mess we were
               | suggesting against in the first place.
        
               | injidup wrote:
               | Ok. That's a bit different. Somebody who has been at the
               | company for 7 years should also have the sense to ask
               | around. But you are also right. I've worked with
               | mathematicians and PHD's much smarter in the domain than
               | me who wrote spaghetti code and often couldn't see the
               | point in good code hygiene.
        
             | dgb23 wrote:
             | Can confirm, async programming - whether done with
             | callbacks/promises/sugar is tangential here - is a
             | conceptual stumbling block for some at first, and that
             | includes smart programmers who haven't done much in terms
             | of Web or GUI programming. Add the concept of static
             | scoping and closures and you have a few things to absorb
             | first, before you get comfortable. It has to click.
             | 
             | Reminds me of stochastics in school, which was a subject
             | that wasn't immediately natural for some who were otherwise
             | very good at math in general.
             | 
             | For me it's bit fiddling for example: I bought Hacker's
             | Delight some months ago and first had to really work
             | through even the most basic things on paper until it
             | stopped to feel like magical hieroglyphs.
        
           | oblio wrote:
           | I don't agree with this assumption because of a hidden
           | variable: time.
           | 
           | Even the smartest person on this planet still needs time to
           | learn things.
           | 
           | Someone just starting to use a new environment won't have the
           | months and years of practical experience with the many
           | frameworks and libraries out there. They won't have the
           | battle scars to know out why one library is better than the
           | other one for this specific use case. They won't have the
           | experience to know why structuring the code in this specific
           | way is better than the other way.
           | 
           | And thing about the other myriad gotchas every environment
           | has, that someone only picks up over time, as they try to use
           | all the corners of a specific software stack.
           | 
           | I mean, yeah, sure, a smart dev will look up best practices
           | and carry over some of their existing experience, but unless
           | they're a true polyglot (and that takes many years as you
           | probably need at least 1 super intense year with each or more
           | like 2-3 years with several), they will still be a solid mid
           | level dev, but not a true senior dev using the new framework.
        
             | FpUser wrote:
             | On any decent size project real senior programmer /
             | architect with years of active product design and
             | development under the belt would beat the crap out of the
             | person who learned to screw size 8 bolt into size 8 nut and
             | been doing this and nothing else for years. And seniority
             | does not come from knowing every last function/class of
             | some framework.
             | 
             | Personally I've never had problem doing project in new
             | languages and had never have client making a point out of
             | it. They just look at the references and products I've
             | completed personally or as the lead. But those clients are
             | business with real needs and problems to solve. Not
             | architecture astronauts who would go to holy wars over
             | things that do not matter much in real world.
        
               | oblio wrote:
               | You're arguing against a strawman.
               | 
               | On one side you pit a "real senior programmer /architect
               | with years of active product design and development under
               | the belt" and on the other side "person who learned to
               | screw size 8 bolt into size 8 nut and been doing this and
               | nothing else for years".
               | 
               | My point is that for this situation:
               | 
               | * person A (truly senior polyglot developer just now
               | starting to use a specific stack)
               | 
               | * person B (truly senior developer with experience
               | primarily in that specific stack, all other things being
               | equal)
               | 
               | Person B will smoke person A at the start of the project,
               | since they're already ramped up. Person A will have to
               | learn, that's why we call it "ramping up".
        
             | kingdomcome50 wrote:
             | I don't agree with the assumption that it takes months and
             | years of practical experience with a framework to be
             | productive within it's codebase. I also don't think the
             | claim was that our candidate would perform at the level of
             | a senior dev.
             | 
             | But to your point. Yes, experience is critical for
             | mastering a skill.
        
               | oblio wrote:
               | It's not just a framework.
               | 
               | It's a new language. Syntax, semantics, common patterns,
               | high level approaches to things (you could call this
               | culture).
               | 
               | It's a new VM (possibly) or compiler.
               | 
               | It's a myriad of libraries.
               | 
               | It's operational tools around the main tech stack
               | (debugger, tracing/performance tools, deployment tools,
               | logging tools/frameworks, etc).
               | 
               | To truly master a mature software stack takes years. Yes,
               | a smart and experienced dev can hack their way around
               | with the help of an experienced team, but the real test
               | will be when the same dev looks at their own code from
               | the start.
               | 
               | Though even that's not a sure thing, because if it's one
               | thing developers have plenty of, it's hubris. Sometimes
               | it helps, but many times it doesn't.
               | 
               | > I also don't think the claim was that our candidate
               | would perform at the level of a senior dev.
               | 
               | No, the claim was even funnier, that the candidate will
               | be a competent developer because he has a PhD in physics
               | (a field somewhat related to software engineering, if you
               | squint really hard, but not really).
        
             | NicoJuicy wrote:
             | Ask someone more experienced to suggest a framework.
             | 
             | Read documentation and implement.
        
               | oblio wrote:
               | And that takes time.
               | 
               | If you're telling me that anyone can be as good as
               | someone else who is equally smart but with 2-3 years of
               | experience with that specific tech stack, I'd say that
               | can't be true, almost by definition.
        
               | withinboredom wrote:
               | Have to agree with you there. I started a job using the
               | exact same stack I was using in a hobby project. I had my
               | dev environment fully up in less than two hours and had
               | production ready PRs by noon. On my first day. Then
               | someone got it in their head to rewrite everything in
               | react (2014) and we slowed to an absolute crawl. We never
               | saw the momentum we had pre-react, at least before I
               | moved on two years later.
        
               | NicoJuicy wrote:
               | I'm not so sure. I'm saying they can be efficient with
               | it.
               | 
               | More efficient than a jr with 1-2 experience in it for
               | example. ( If the implementer that is new knows multiple
               | languages and there isn't a fundamental big difference (
               | eg. the new language is functional))
        
           | continuational wrote:
           | But _is_ it efficient? I would say web programming takes
           | about a decade to become proficient in, after you learned to
           | program. There are so many (perhaps accidental) things to
           | know about the DOM, CSS, HTTP, web standards and practices,
           | interactivity, hosting models, database tech, caching  &
           | CDNs, integrations & APIs, and god forbid, any "connect the
           | dots" design and ux work that lands on your table.
        
             | Tade0 wrote:
             | Let's just say that we're in a large corporation and the
             | bar is set appropriately.
             | 
             | His tasks are currently backend-ish(still TypeScript
             | though). I wouldn't throw anyone into the deep waters of
             | frontend unprepared.
        
           | gilbetron wrote:
           | I've worked with numerous people with PhDs in Physics (and
           | Math and other heavy science fields) and they tend to be
           | pretty awful at production software while at the same time
           | having very strong opinions that the field is "broken". I
           | mean, think about it, 99.99% (at least) of physics and math
           | is learning what has already been solved. It is heavy,
           | complicated learning, but is far from the type of learning
           | you do in a new field like software development.
        
             | lubesGordi wrote:
             | Non-CS people tend to be completely pragmatic in my
             | experience. They aren't the ones having arguments over the
             | 'art' side of software engineering like everyone else.
        
           | sokoloff wrote:
           | > My manager today was wondering if that's particularly
           | efficient, to which I replied "he knows how to program".
           | 
           | That's seems an off-axis question to me. "These devs are
           | expensive and a constraint on our growth. I want to hear more
           | tappy-tappy..."
           | 
           | What's the alternative if you have a good backend programmer
           | and an excess of front-end work at the moment? Have the
           | backend plow further ahead? Move items that "belong" in the
           | front-end to the backend just for dev capacity reasons?
           | Decide your architecture based on which devs are free in a
           | given sprint?
           | 
           | That backend dev might be 50% as efficient and still result
           | in more total value delivered.
        
             | mwcampbell wrote:
             | Alternatively, one could go with a one-person framework
             | [1]. In addition to Rails, I think Phoenix is pushing in
             | that direction. On the JavaScript side, Remix and Blitz are
             | interesting, though I generally don't like the SPA
             | approach. I don't see frameworks in other mainstream
             | languages, such as Django, Spring, or ASP.NET Core, trying
             | to unify front-end and back-end like Rails and Phoenix are.
             | 
             | [1]: https://world.hey.com/dhh/the-one-person-
             | framework-711e6318
        
         | benreesman wrote:
         | 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.
        
           | jcelerier wrote:
           | > 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 wrote:
             | Yeah 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.
        
           | Kototama wrote:
           | > 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#issu... for a critique that is never
           | expressed by Haskellers.
        
             | benreesman wrote:
             | Getting 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 wrote:
               | It 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.
        
             | eru wrote:
             | I'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.
        
             | ReleaseCandidat wrote:
             | > See for example https://github.com/fsharp/fslang-
             | suggestions/issues/243#issu...
             | 
             | See Rust traits to get an idea what happens if you 'just'
             | implement type classes without proper support for higher
             | kinded types ;)
        
               | Kototama wrote:
               | I'm not that familiar with Rust at the moment, could you
               | expand?
        
               | benreesman wrote:
               | GP is referring to a Rust language feature called
               | "traits" that is a quirky subset of a Haskell language
               | feature called "type classes".
               | 
               | Type classes are based on firmer theoretical footing (I
               | think the original paper is called "Making Ad-Hoc
               | Polymorphism Less Ad-Hoc") and therefore run into fewer
               | weird corner cases.
               | 
               | That's not to say that Rust traits are "bad", they're
               | useful and arguably cleaner than the C++ version of the
               | idea ("concepts"), but a Haskell hacker writing Rust is
               | liable to grumble now and again at the weird edge cases.
        
               | ReleaseCandidat wrote:
               | To use traits like you would type classes in Haskell, for
               | example to define functors or monads in a general way,
               | you need higher kinded types. Which can kind[oh, what a
               | pun] of be implemented in Rust.                  So yes!
               | You can use higher kinded types in rust. Whether you
               | should I will        leave up to you. But it certainly
               | doesn't seem like a very attractive option         for
               | most projects considering the syntactic noise of the
               | implementation, a         typechecker that gets often
               | confused and requires help, as well as error
               | messages that don't make much sense. Especially the last
               | is a shame since         extremely helpful error messages
               | is what rust is known for, and I         wholeheartedly
               | agree (under normal circumstances).
               | 
               | https://hugopeters.me/posts/14/                  Yes, But
               | Why, Really?        Because sometimes one just gets
               | homesick for Haskell and wants to implement        the
               | Functor hierarchy. You'll find this in the higher-cat
               | crate. It's not         really very suited for writing
               | good Rust code, but it makes Haskell         programmers
               | feel happy and it has a lot of funny words.
               | 
               | https://docs.rs/higher/latest/higher/
               | 
               | A proposal for an addition to Rust, to get generic monads
               | and (Haskell-like) do-notation for them:
               | 
               | https://varkor.github.io/blog/2019/03/28/idiomatic-
               | monads-in...
        
             | avisser wrote:
             | > for a critic that is never expressed
             | 
             | critique?
        
               | Kototama wrote:
               | Thanks, corrected.
        
           | uncletaco wrote:
           | Nah this rings true. There's a reason Haskell's killer app is
           | a mobile astrology reader.
        
           | tome wrote:
           | > 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 wrote:
             | This 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?
        
           | CyberRabbi wrote:
           | Smart 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 wrote:
             | He's smart enough to get one.
             | 
             | He's also smart enough to know he'll get a _better_ one by
             | giving his quest visibility.
        
             | benreesman wrote:
             | Parent has a minimum of one serious interview if they want
             | it.
        
           | ska wrote:
           | > 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.
        
           | Tehchops wrote:
           | But how are they able to get anything done when they're
           | spending all their time telling everyone how smart they are?
           | ;-)
        
           | yowlingcat wrote:
           | > 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.
        
           | sidlls wrote:
           | I'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 wrote:
             | That'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.
        
           | carlmr wrote:
           | >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.
        
           | captaincaveman wrote:
           | >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 wrote:
             | There 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."
        
               | eru wrote:
               | > 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.
        
               | sulam wrote:
               | My bonafides for the comment I'm about to make: 5 years
               | of professional Scala development at a serious Scala
               | house. I have never done Haskell, but many of my co-
               | workers have, and I had at least one interviewee do all
               | his coding in it (he got hired, not because Haskell).
               | 
               | The problem really nice abstractions have is that they
               | encode too much into too little code. They are very
               | concise, and people who aren't as knowledgeable (avoiding
               | the word "smart" here as I think it's wrong) will treat
               | it as "magic". Magic in code is a really bad idea when
               | you need to debug it. The ML type system can create these
               | magic moments that make someone who actually wants to
               | understand how the hell that works have to go down a
               | multi-hour rabbit hole just to figure it out. The best
               | example of this that I've directly worked with is
               | Finagle. If you look at the code for it, you're very
               | often left scratching your head trying to understand how
               | it manages to get so much done with so little code.
               | Having been there while it was developed, I will say it
               | didn't start off that "pretty", it got there over 3
               | fairly major revisions to the underlying type
               | abstractions. The result is beautiful, but opaque to most
               | of the mere mortals that use it.
               | 
               | I would argue that Go has been successful largely because
               | everything that's happening is "out in the open", where
               | the average developer can see it. It's a very different
               | philosophy, one that I think the quote-creator aligns
               | with better than your typical Haskell devotee.
        
               | brimble wrote:
               | > I would argue that Go has been successful largely
               | because everything that's happening is "out in the open",
               | where the average developer can see it. It's a very
               | different philosophy, one that I think the quote-creator
               | aligns with better than your typical Haskell devotee.
               | 
               | This is why I like Go. It makes it _difficult_ to write
               | code that doesn 't take basically the same approach any
               | other, similar code would. When you start trying to get
               | abstract or do anything cute, it hurts _just_ enough that
               | you won 't do it unless there's an actual need, not just
               | some aesthetic preference.
               | 
               | Consequently, I can hop in to just about any of my
               | dependencies and read them immediately. No, "huh, I
               | haven't seen that language feature before" or "WTF is
               | that symbol even?" or "... but where does it actually
               | _do_ anything? " or "oh great they've imported a library
               | that basically turns it into an entirely different
               | language".
               | 
               | The community's also been really good at avoiding adding
               | abstractions through libraries, so you don't end up with
               | the mess that Javascript had for years with multiple
               | competing Promise libraries in wide use or a dozen
               | competing module systems or any of that crap. There's
               | _some_ experimentation but it rarely gets out of hand.
        
               | jrumbut wrote:
               | I tend to believe in the value of those magic moments and
               | think we should raise expectations in terms of training
               | and practice to appreciate and understand them (I've
               | never used Finagle so I don't know the specifics of it,
               | maybe it is beyond any reasonable standard of
               | comprehensibility).
               | 
               | The problem is when the magic isn't happening. How do you
               | convince yourself or someone you work with to take off
               | the wizard hat, come down out of the clouds and implement
               | the naive/verbose/ugly solution because the elegant
               | stroke of genius hasn't come and the feature is taking
               | forever?
               | 
               | This is where Go and PHP shine, less temptation to guild
               | the lily.
        
               | sulam wrote:
               | Stupid nitpick, but I'd prefer to have someone correct
               | me:
               | 
               | s/guild/gild/
        
               | jrumbut wrote:
               | Better than gelding it I guess.
        
               | 62951413 wrote:
               | Scala is not necessarily a detour in this discussion.
               | It's arguably the most functional language among
               | mainstream ones. And for better or worse its ecosystem
               | seems to be influenced by old Haskell hands much more
               | than one would expect. So what we have seen in the last
               | ten years is probably a good proxy for using a real
               | functional language in the industry.
               | 
               | Akka comes to mind as another example of what you said
               | about Finagle. It works great and even has voluminous
               | documentation. But every time I try to click through it
               | in Idea to see how it works I kind of don't see it. This
               | contrast with most other libraries is very real. From
               | speaking to other people I know that I'm not the only one
               | who feels this way. Broadening horizons aside, I'd rather
               | not have production issues with such a codebase.
               | 
               | Personally I don't doubt that Haskell developers are
               | smarter than me. Though I strongly suspect that they come
               | from a hard to reproduce background (PL theory majors? CS
               | postgrads? theoretical physicists?). And not that many
               | companies require this level of sophistication.
               | 
               | There's a huge disconnect I see in the real world.
               | Intellectual bottom scrapers such as JS/golang are
               | increasingly popular. Yes, we see golang catching up with
               | Java ten years later than was necessary but it only
               | confirms the observation. Scala and even Kotlin (F# too?)
               | are not that widely used for how practical they are. In
               | this world I see no place to be found without a looking
               | glass for something as esoteric as Haskell, lazy
               | evaluation and all. And we've had this exact conversation
               | for a decade already.
        
               | captaincaveman wrote:
               | That 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 wrote:
               | Having 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!
        
             | Tainnor wrote:
             | > But are they more productive, get shit that we care about
             | done [...]
             | 
             | I think there's a balance to be struck between "getting
             | shit done" and "write something that will be maintainable
             | in the future".
             | 
             | It might be true that (some?) Haskellers overdo it, but
             | I've definitely seen enough of the "let's just get shit
             | done" people who create messes that are completely
             | unmaintainable and full of bugs after just a year or two.
             | 
             | And IMHO, the software industry is in a really sorry state,
             | considering how bug-riddled most software is, how most
             | software projects fail or are considerably above budget,
             | etc. [1]
             | 
             | I've seen quite a number of failed projects in the
             | companies I've been so far, a number of them involving
             | quite a lot of resources. I've seen companies trying to
             | rewrite hopeless messes and failing at it, grinding
             | everything to a halt, because the code base is full of
             | implicit assumptions that nobody bothered to properly
             | specify anywhere. I've read about Shopify spending _a whole
             | year_ to upgrade to a newer version of Ruby on Rails.[2]
             | 
             | Probably the industry doesn't yet know how best to find
             | this balance but I don't think that the Haskellers are
             | solely to blame for this.
             | 
             | [1]: https://danluu.com/everything-is-broken/
             | 
             | [2]: https://shopify.engineering/upgrading-shopify-to-
             | rails-5-0
        
           | smikhanov wrote:
           | > worked on one of the biggest production         > Haskell
           | code bases on Earth
           | 
           | Which one was that?
        
             | benreesman wrote:
             | Sigma/Haxl.
        
             | he_is_legend wrote:
             | As he also mentioned he was involved in early React, so
             | maybe Facebook? They are known to use it for spam
             | filtering, amongst other things.
        
           | aardvark179 wrote:
           | "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 wrote:
             | They 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 wrote:
             | Maybe 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.
        
               | toqy wrote:
               | I once inherited a medium size python service and small
               | front end at work that was primarily developed by someone
               | that was super into Haskell. He chose to use mongodb and
               | built a lot of functionality around the constraint that
               | he didn't know what an index was.
               | 
               | I'm very thankful his manager didn't let him write it in
               | Haskell. Now he's where he belongs back in academia doing
               | NLP research.
        
               | benreesman wrote:
               | In fairness, enthusiasts from lots of language
               | communities got duped into using MongoDB.
        
               | computerliker69 wrote:
               | Why would you say duped? Is there some major problem with
               | mongoDB? The way you've stated this makes it sound like
               | there's some common knowledge I should be aware of.
        
               | marcosdumay wrote:
               | > Is there some major problem with mongoDB?
               | 
               | Yes, plenty. It's mostly useless for relational data.
               | 
               | Nowadays that's clear on the documentation and you won't
               | get loud people proclaiming that it's useful there, but
               | there was a time when both of those were false.
        
               | redwood wrote:
               | By relational data do you mean data that has no nesting
               | or arrays? Or data that you always want to query with a
               | join? Something else?
        
               | marcosdumay wrote:
               | That that you would want to query with a join and have
               | invariants that spread through those places you would
               | want to join.
               | 
               | Just keeping invariants of any kind is already non-
               | trivial and will probably break at some point in a long
               | lived system.
        
               | HideousKojima wrote:
               | Postgres literally beats MongoDB at JSON in benchmarks.
               | Y'know, the thing that's supposed to be Mongo's bread and
               | butter?
        
               | toqy wrote:
               | Mongodb was a lot easier to manipulate json in for a
               | while vs postgres, but once postgres got json path
               | support it evened out a bit imo.
               | 
               | Say you have some json and nested in it somewhere is an
               | array of objects, and you want to just map over that and
               | update those objects. I was writing a migration to do
               | that in Postgres <11 once and it was not fun to try and
               | figure out how to do it.
               | 
               | I haven't worked with Mongo in years though, so no clue
               | how it has evolved since like 2015.
        
               | jd_mongodb wrote:
               | Which benchmark is that?
        
               | HideousKojima wrote:
               | https://www.enterprisedb.com/news/new-benchmarks-show-
               | postgr...
        
               | Tainnor wrote:
               | > He chose to use mongodb [...]
               | 
               | I find it rather surprising that somebody who uses
               | Haskell, i.e. clearly sees the value of types as an aid
               | for reasoning about programs, would default to using a
               | schemaless database which gives you essentially zero ways
               | to reason _about your data_.
               | 
               | It makes much more sense coming from someone who doesn't
               | really like static typing and so prefers run-time,
               | informal reasoning.
        
               | toqy wrote:
               | He was using python 2.7 so he would have lost the type
               | safety after he fetched the data anyway
        
               | kasey_junk wrote:
               | I 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 wrote:
               | Reason #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.
        
               | beanjuiceII wrote:
               | it's sweet but can't do basic go to definition?
        
               | flylikeabanana wrote:
               | Go to definition in libraries is different than basic go
               | to definition
        
               | kasey_junk wrote:
               | But something solved for 20 or more years in IDEs for
               | mainstream languages.
        
               | benreesman wrote:
               | With the possible exception of Visual Studio, the only
               | thing that mainstream IDEs have been "go to"-ing in the
               | presence of an NP-hard dependency resolution graph for 20
               | years is the wrong place with a UI that simply exudes
               | confidence.
        
               | kasey_junk wrote:
               | You are sort of making my point for me. In theory
               | dependency graph traversal is NP hard but in practice you
               | can use heuristics to get to really good accuracy.
               | 
               | This really good accuracy is almost always better than
               | the system not working at all. Very frequently (not
               | always) the Haskell community let's the perfect get in
               | the way of the good on issues like this and I end up with
               | tooling that is worse than 20 year old IDEs.
        
               | benreesman wrote:
               | Oh I also agree that haskell-language-server makes the
               | wrong precision/usefulness tradeoff. Codex for example
               | can usually get you somewhere at least useful.
               | 
               | I was just pointing out that "solved" is a strong word
               | for anything Eclipse or JetBrains did 5-10 years ago :)
               | It's easy to forget how shitty all the IDE stuff was
               | before VSCode forced LSP through the clogged artery of
               | language tooling.
        
               | kasey_junk wrote:
               | I was personally using "go to definition" for Java with
               | whatever IDEA's tool was called in 2001-2002 (renamer?)
               | and had the full suite of modern refactors in C# with
               | Resharper by 2005.
               | 
               | I honestly haven't seen much of an improvement in IDE
               | productivity in the last 5-10 years compared to Resharper
               | circa 2008 but if Haskell could get to parity with that
               | it would be a huge win.
        
           | cpach wrote:
           | In 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 wrote:
             | Totally 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 wrote:
               | Indeed!
        
           | krsrhe wrote:
        
           | alfiedotwtf wrote:
           | > 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
        
           | caslon wrote:
           | That'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 wrote:
             | Doesn'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 wrote:
               | Old 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 wrote:
               | Haskell 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.
        
               | NateEag wrote:
               | I have an absolutely baseless suspicion that "the worst
               | programmers [you] know" are significantly better than the
               | worst ones I've worked with.
               | 
               | The worst ones I've worked with have probably never heard
               | of Haskell, and I would be pretty surprised if they
               | actually managed to write and run a Haskell program that
               | did anything not entirely trivial without someone else
               | helping.
        
               | caslon wrote:
               | You're probably correct. I've been very lucky to have
               | mostly been around smart people, and so it's likely that
               | the average middling person I come across is, well, just
               | that. Middling status-climbers are still dangerous,
               | though, and still work to ruin averages.
               | 
               | That said, Haskell actually has a lot of great resources
               | available, and I think it _is_ learnable by just about
               | anyone these days. It usually only takes one good book
               | for a language to become available to average people, and
               | Haskell has a great volume of beginner-friendly books. It
               | can be debated as to whether this is a good thing or not,
               | but I think it 's always nice to see new pathways into
               | programming become available, even if I'm not necessarily
               | in love with a language.
        
               | benreesman wrote:
               | I might be biased by having worked with Bryan O'Sullivan,
               | but I personally think that RWH has aged fantastically
               | well in the "get practical shit done in Haskell" genre.
        
               | benreesman wrote:
               | In fairness, the semi-official motto of Haskell is:
               | "Avoid success at all costs." :)
        
               | caslon wrote:
               | Every time I see an SPJ quote I always remember that he's
               | working one step removed from video games now and start
               | laughing.
        
               | benreesman wrote:
               | I'm generally a fan of lulz for any reason, and I've long
               | since lost track of where SPJ was working (I thought he
               | was still at MSR).
               | 
               | But what's wrong with video games? That shit is creeping
               | up on the NFL right?
        
               | michaelt wrote:
               | Well, games have a complex reputation.
               | 
               | Are they works of staggering complexity, pushing the
               | limits of what hardware can do, and one of the few
               | examples of software people will actually pay for?
               | 
               | Or are they gigantic mountains of poorly tested hacks,
               | laden with bugs at release, developed under abusive
               | conditions and riddled with DRM, microtransactions and
               | gambling mechanics?
        
               | eru wrote:
               | There's lots of different games. Some are both, some are
               | neither. Some are one of the two.
        
               | caslon wrote:
               | Don't get me wrong, I love video games! Half of my posts
               | on Hacker News are about video games! It's just funny to
               | me to think about how one of the most esteemed members of
               | the FP community is working one step removed from the
               | least-prestigious video game, and was employed directly
               | because of that video game.
        
           | stevenally wrote:
           | "Haskell people skew smarter".
           | 
           | Well that's me out. I'll stick to JavaScript and C#.
        
             | benreesman wrote:
             | Ah 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 wrote:
               | Learn some Haskel or Ocaml, and Javascript / C# will seem
               | way more complicated all of a sudden.
        
               | brimble wrote:
               | It's funny that PG's "Blub Paradox"[1] is very close to
               | your post, but _harsher_ and _stronger_ , but rarely
               | draws much push-back when it comes up here, while your
               | post is drawing flames like crazy.
               | 
               |  _I_ think PG 's post is kinda shitty and is exactly the
               | kind of thing you'd expect to see from someone who's very
               | sure they've got things figured out, but aren't quite as
               | far along their journey as they think they are, while
               | yours is a simple correlational observation that probably
               | has some truth to it (if there's an intellectually-
               | challenging thing that's low-reward, probably the people
               | involved will tend to be pretty smart, since they're just
               | doing it as a hobby or for fun). Yet here we are, in the
               | middle of a fire storm.
               | 
               | I think he's also dispensed _exactly_ the advice you
               | (basically) are, which is that you should choose some
               | nerdy niche language if you want it to be easy to hire
               | smart people cheaply, though I can 't find it in a skim
               | of that post and may be imagining it.
               | 
               | [1] http://www.paulgraham.com/avg.html
        
               | benreesman wrote:
               | You've just made the original point I _hoped_ to make far
               | better than I made it.
               | 
               | I think I used fairly intemperate language because I feel
               | (rightly or wrongly) this dogma that all engineering
               | problems and all engineers are just k-equivalent and am
               | sort of frustrated by that feeling.
               | 
               | If some shit isn't so hard that it's inaccessible to me,
               | then why should I work and study and sweat to be able to
               | solve the N-1 hard problem?
        
               | CTmystery wrote:
               | > 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 wrote:
               | Here'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
               | 
               | I no longer have a horse in the race. I wonder why
               | categorical claims really get the blood moving :)
        
               | benreesman wrote:
               | If anyone blames you for getting fired up by my original
               | phrasing it won't be me! I thought I was making a drive-
               | by anecdotal observation about a signal I've used to work
               | with smarter people than myself, by the time I had read
               | it over once or twice there were like 100 child comments
               | and it was too late to choose more temperate language.
               | 
               | It wasn't my intention to imply that I was smart
               | personally, rather that of the crazy effective people
               | I've had the privilege of working with, Haskell hackers
               | are wildly over-represented in that group.
        
           | Kalium wrote:
           | I 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 wrote:
             | FWIW that ties out closely with my anecdotal experience.
        
             | marcosdumay wrote:
             | > 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.
        
           | DrBazza wrote:
           | I'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...)
        
           | ineedasername wrote:
           | I 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 wrote:
             | Yeah 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 wrote:
               | I'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 wrote:
               | See 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 wrote:
               | That'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.
        
               | CactusOnFire wrote:
               | I have always figured the appeal of Haskell, Clojure, et
               | al., is to transpile your task and turn any software
               | problem into your language of choice.
        
               | beanjuiceII wrote:
               | ever check this out? https://github.com/Kindelia/HVM
        
               | eru wrote:
               | Lazy made historical sense as a default: it forced them
               | to deal with side-effects properly.
               | 
               | For a new language I would suggest that without
               | annotation, only pure, total functions are allowed.
               | 
               | Haskell makes you annotate side-effecting functions with
               | a tag (like IO). But it allows divergent and partial
               | functions just fine. That's why they can't just remove
               | the laziness.
               | 
               | I propose that the latter would also need a tag.
               | 
               | The nice thing about total functions is that the choice
               | between evaluation orders becomes purely a matter of
               | optimization, and won't change anything about semantics.
               | 
               | Some languages like Agda already do something a bit like
               | this.
               | 
               | (Also note that total functions are not Turing complete.
               | But that's a feature, not a bug.)
        
             | eru wrote:
             | > 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.
             | 
             | Eh, I'm fairly sure the top 10% of people who liked the bad
             | old PHP were still fairly moronic. (Facebook gave PHP a
             | nice revamp, so it's a much nicer language these days.)
             | 
             | For another example, have a look at newLISP. Especially
             | http://www.newlisp.org/MemoryManagement.html
             | 
             | However, I agree with your point on average in general for
             | most languages.
        
               | ineedasername wrote:
               | > _liked_
               | 
               | That's not really the issue though. I said top 10% by
               | some measure of quality. Whether not the top 10% of PHP
               | programmers _liked_ the language is a separate variable
               | from their levels of competence  & intelligence as
               | compared to some other language.
        
           | rr808 wrote:
           | One 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.
        
             | anm89 wrote:
             | Yeah, I totally acknowledge that most of the people I know
             | that like Haskell are probably a lot smarter than me from
             | an IQ perspective and yet if I was running a company I
             | wouldn't hire a majority of them. Most of them seem to lack
             | pragmatism.
             | 
             | I think intelligence is as much a choice as it is a built
             | in trait in many ways and the people who like Haskell are
             | the ones who enjoy solving very difficult abstract problems
             | over just getting stuff done. The world needs some people
             | like that but most projects don't.
        
             | smasher164 wrote:
             | On the flipside, the usual argument around "simplicity" and
             | "readability" is just code for "familiarity". A Haskeller
             | used to composing a bunch of folds has no obligation to
             | transform their program into something readable by Python
             | programmer, unless of course, they were the only Haskeller.
             | 
             | But I agree, there's a difference between code that veers
             | towards obfuscation and code that employs techniques
             | someone just hasn't learned yet.
        
               | bydlocoder wrote:
               | Haskell is much more than folds, maps and monads.
        
               | smasher164 wrote:
               | I agree. I'm just presenting an example where patterns
               | that one camp deems as "too clever" are normal to
               | another.
        
             | andai wrote:
             | That's the difference between understanding the machine and
             | understanding people (and understanding that most people do
             | not (really want to) understand the machine).
        
             | jimbokun wrote:
             | In order to get real value out of a "smart person", I think
             | you need a sufficiently challenging problem for them to
             | work on.
             | 
             | Yes, giving them a CRUD app where they build their own
             | frameworks because they're bored and something about the
             | existing frameworks is sub-optimal probably will end up
             | adding net negative value as they introduce complexity all
             | the other developers now need to understand.
             | 
             | But if you have a ton of PHP code and running at such scale
             | that you need to create a new PHP engine to optimize all of
             | your existing code and save millions of dollars on your
             | infrastructure costs, a "smart person" just might fit the
             | bill.
        
               | ska wrote:
               | > I think you need a sufficiently challenging problem for
               | them to work on.
               | 
               | One important thing to realize is that the challenge
               | doesn't have to be in the obvious place.
               | 
               | Having a smart person who is really interested in solving
               | the business problem you are trying to solve will make
               | things better all over the place.
               | 
               | Having a smart person who is uninterested in the business
               | problem you are trying to solve and looking for
               | intellectual stimulation in the technical stack - well,
               | if you aren't doing something "interesting" it's probably
               | going to go poorly.
        
               | benreesman wrote:
               | The original HHVM team were in fact... _legends_. :)
        
             | benreesman wrote:
             | IMHO when someone looks at a problem and sees some outlines
             | of mathematical structure and thinks "C++ is overkill
             | performance-wise and I don't want to take the incremental
             | maintenance burden, but Python is so friggin slow that it
             | matters for even this", they've got a few options. If
             | you've already got a JVM in your stack, that's probably the
             | call. If you've already got Cargo in your stack, also
             | reasonable. But if you don't and are unlikely to, well you
             | kinda go the Haskell/ML route or the Go/Node route.
             | 
             | And as much as my personal spiritual home is the MEAN
             | stack, the Haskell/ML route seems to attract more people
             | who know heavier CS than I do.
        
               | yowlingcat wrote:
               | "Python is so friggin slow that it matters for even this"
               | 
               | Why wouldn't they use Cython, any of the scipy/numpy
               | ecosystem, or Numba?
               | 
               | "the Haskell/ML route seems to attract more people who
               | know heavier CS than I do"
               | 
               | Why is someone else knowing heavier CS than you do a good
               | heuristic for a tool being the right long-term solution
               | for a job to be done?
        
               | benreesman wrote:
               | Because I want to work with people more capable than
               | myself for at least two reasons:
               | 
               | 1. I'm likely to learn a lot from them.
               | 
               | 2. The harder the problem is that the team can
               | realistically tackle the more likely the team is to do
               | something novel/interesting/beneficial/profitable,
               | ideally all at once.
        
             | daxfohl wrote:
             | This reminds me of Dan Abramov's post about identifying
             | when _not_ to be smart. https://overreacted.io/goodbye-
             | clean-code/
        
             | itoro7g wrote:
        
             | vp8989 wrote:
             | Effectiveness 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.
        
             | [deleted]
        
             | dimitrios1 wrote:
             | This 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 wrote:
               | Sounds 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
        
               | cogman10 wrote:
               | A 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.
        
               | e12e wrote:
               | > A smart dev is someone that learns new paradigms and
               | concepts and the applies them only where they make things
               | easier to understand/maintain.
               | 
               | I think we put a little to much stock in "smart"
               | developers. What you describe sounds more like a "wise"
               | developer - as in "a clever developer knows how to map-
               | reduce, a wise developer knows not to put it in a fruit
               | salad"...
        
               | cogman10 wrote:
               | IMO, there's no difference. There are few concepts in
               | programming that are really unknowable or ungraspable.
               | Anyone that can program can misunderstand and misuse
               | programming concepts.
               | 
               | The only wisdom is asking "should I"? And that, to me, is
               | being smart and cleaver. Cleaver people don't write hard
               | to understand/maintain code. Cleaver people write code
               | that anyone can come to and understand. They write
               | elegant code.
        
               | imoverclocked wrote:
               | Contrast that with walking into a codebase in a
               | statically typed language that uses String as the
               | predominant type with little to no effort spent on
               | sanitizing the data in those Strings.
               | 
               | It's understandable in pieces... but also really hard to
               | scale/refactor/replace after it has grown enough.
        
               | cogman10 wrote:
               | I think I covered that case in the end of my comment.
               | 
               | > 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.
               | 
               | Stringly types or the overuse of Dictionary/maps in a
               | statically typed language are extensions of this concept.
        
               | imcotton wrote:
               | > 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.
               | 
               | Good for him.
        
               | duxup wrote:
               | Flexibility + smart is the ultimate smart.
               | 
               | It's hard enough to figure out who has smarts, let alone
               | real flexibility:(
        
               | ndneighbor wrote:
               | As someone who was a little misguided in my early
               | programming career, I think what attracted to me about
               | the FP community is the general enthusiasm that they have
               | in their craft. I don't think it's about the axis on
               | whether if someone is "smart" or not, but if the problem
               | space is interesting enough to devote a whole career to.
        
               | whatshisface wrote:
               | I have had a hard time figuring out how to phrase this,
               | but I think the problem is that everyone wants to be
               | smart, and sometimes that subconsciously gets turned into
               | "smart people are better," but what we really want other
               | people to be is _aligned_ with us. How capable they are
               | is just the length of the vector, which could even point
               | in the opposite direction making intelligence
               | detrimental.
        
               | Taylor_OD wrote:
               | I don't think everyone wants to be smart. I don't give a
               | shit about feeling smart or being smart if I get paid
               | well and I'm happy.
               | 
               | I think many folks in eng are used to being told they
               | were smart either in high school or college or an early
               | job and it became part of their self image. They might be
               | smart but they are tossed into a field of people who come
               | from similar backgrounds and now they are average which
               | just doesnt fit with their self image.
        
               | whatshisface wrote:
               | Nothing you value can be obtained without your brain,
               | although you might use words other than "smart" to
               | describe the abilities involved.
        
               | NikolaNovak wrote:
               | "Smart" also can have a lot of different
               | meanings/outlets/vectors.
               | 
               | First 10 years of my career, I felt bearded Unix
               | Sysadmins were the smartest people I knew :->, whereas I
               | was fully Dilbertian in view of The Evil Pointy Haired
               | Management.
               | 
               | I've been trying to develop "PeopleSmarts" or "Soft
               | Skills" or "Emotional Intelligence" or whatever we call
               | it last 5+ years, and it's... just as much harder and
               | more challenging than technical skillset, as my mentors
               | always told me and I never believed. It's a far fuzzier,
               | squishier, less certain set of problems, and there just
               | isn't O'Reilly-quality literature out there :P.
               | 
               | I have confidence that given time I can learn technical
               | concepts or figure out technical issues.
               | 
               | I think path in front of me to be soft-skill-savvy,
               | emotionally intelligent, is going to be long and hard.
               | 
               | So, how to properly setup LUNs on AIX or optimize a SQL
               | statement or design an ERP architecture is one kind of
               | smart; how to work with your own team to figure out
               | productive way forward is another kind of smart; how to
               | work with client and business and management stakeholders
               | to satisfy their actual needs is another important kind
               | of smart.
        
               | upwardbound wrote:
               | Agreed. You might be interested in reading about AI
               | alignment which is this concept applied to non-human
               | intelligence, and like you said the same principle holds
               | among people too.
               | https://en.wikipedia.org/wiki/AI_alignment
        
               | allemagne wrote:
               | Then is the goal of "preventing bad AI outcomes" at any
               | level just a bit absurd? Or at least as absurd as
               | "eliminating alignment issues among humans", or maybe
               | even "bug-free code" if you apply the principle towards
               | relatively simple programs?
        
               | upwardbound wrote:
               | It is equally challenging as both of those examples, but
               | it's very very important so it's worth working on despite
               | the intractability.
               | 
               | In terms of alignment among humans, most (but not all)
               | human governments agree on certain principles, which are
               | encoded in international law and negotiated within the
               | United Nations.
               | 
               | E.g., most (not all) people agree that torture and
               | slavery are unacceptable.
               | 
               | Thus, it is possible and important to get AGI to abide by
               | these high-level human values. E.g. if an AGI system is
               | put in charge of maximizing the GDP of a nation, it
               | should do so in accordance with generally recognized
               | principles of human rights and human dignity.
               | 
               | There's certainly a lack of agreement among nations but
               | at least we mostly agree on some things and getting AI to
               | agree with us on the things we agree on is important.
               | 
               | If you like podcasts, here's a great podcast episode
               | which explores a philosopher's perspective on how to make
               | moral decisions (e.g. should abortion be legal) in a
               | situation of moral uncertainty:
               | 
               | https://futureoflife.org/2018/09/17/moral-uncertainty-
               | and-th...
        
             | bcrosby95 wrote:
             | The smart people I know write simple solutions to hard
             | problems.
             | 
             | But if you stick a smart person on a boring problem they'll
             | probably write clever solutions for the boring problem.
        
             | albrewer wrote:
             | In my experience there's a difference between smart and
             | clever, at least when it comes to writing code.
             | 
             | Clever people implement solutions nobody else can - they
             | know the tools they're using inside and out and can do
             | amazing things.
             | 
             | Smart people realize the things they build must last longer
             | than themselves. They implement solutions those that come
             | after them can understand and maintain. Sometimes those
             | solutions are clever. If the problem domain is hard, then
             | the solution is necessarily clever.
        
               | dkarl wrote:
               | People can be smart and selfish at the same time. I've
               | worked with some extremely smart people who realized that
               | what made work satisfying to them was getting paid to be
               | clever all day. Being smart, they found ways to do that,
               | at the expense of their employers and coworkers. I wasted
               | an hour of my afternoon writing a long and angry screed
               | about my professional experience with functional
               | programming (in Scala) but at the end of the day, sadly,
               | it can be summed up as that, smart people scamming
               | companies for the opportunity to be clever all day. I see
               | mainstream programming benefiting more and more from the
               | influence of functional ideas, so I still think that FP
               | might become the default for professional programmers at
               | some point in the future, at least for some kinds of
               | work, and I think the work I've invested in it has made
               | me a better programmer, but I'm fed up with the kinds of
               | people I've found myself working with along the way.
        
           | gilbetron wrote:
           | Do 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 wrote:
             | Come 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 wrote:
               | I'm bemused that you think Mensa is such an ad hominem :)
        
               | mischov wrote:
               | "Do you put Mensa on your resume?" is clearly a personal
               | attack in this context. At least own up to your words.
        
               | 0des wrote:
               | Stop calling for dang, how embarrassing.
        
               | benreesman wrote:
               | Given that I've been posting under this real name for 14
               | years and you've been posting under that pseudonym for 8
               | months, is it at least possible that I've got some idea
               | of how things work around here?
        
               | 0des wrote:
               | Given your befuddled comment, I'd say no, you don't,
               | evidently.
               | 
               | I've been here longer than some readers have been alive.
               | Some of us are not interesting in cultivating a persona.
               | I love your cheeky little attempt at an appeal to
               | authority though.
        
               | benreesman wrote:
               | I'll take you at your word that your on an alt or
               | something and assume that you've also been around since
               | the beginning.
               | 
               | It doesn't seem like we're going to get along, so I
               | propose that we just stay off one another's comments to
               | keep things civil.
        
               | [deleted]
        
               | 0des wrote:
               | You're going to repeat this same issue as long as you
               | have the "but they always get away with it, why cant I"
               | mentality. Two faults in judgement don't make a good
               | decision, no matter how many take part in it.
               | 
               | Bless your heart and good day.
        
               | jodrellblank wrote:
               | > " _I didn't say that I'm personally a smarty-pants
               | Haskell hacker._ "
               | 
               | You didn't? You said serious Haskell programmers are
               | smart and then pointed out that you worked on the largest
               | Haskell codebase on the planet; we were supposed to not
               | conclude that you are smart, but rather that people
               | working on said codebase are non-serious Haskell
               | programmers?
               | 
               | "Nobody likes to talk about it, but we Haskell
               | programmers are smarter than everyone else, especially
               | bickering Javascript plebs" is kinda surprising it hasn't
               | been flagged as flamebait.
        
               | benreesman wrote:
               | I'm a fairly intermediate Haskell programmer at best.
               | 
               | My point about working in a serious industrial setting
               | was that I've seen the real deal, up close, and over
               | time.
        
             | agentultra wrote:
             | > What I think Haskell does attract are people that like to
             | develop overwrought, abstract, and ornate systems.
             | 
             | Haha. I'm laughing in move semantics.
             | 
             | C++, Perl, Python, Go, Java -- literally any programming
             | language that some group of people somewhere has grown to a
             | large enough scale is full of complexity. Go is supposed to
             | be "simple" but there is nothing simple about k8s by virtue
             | of being written in Go.
             | 
             | Don't mistake Haskell's jargon, idioms, and ideas for your
             | wilful ignorance. There are a lot of good ideas in Haskell
             | that could benefit most programmers if they took the time
             | to learn them. There's a fast concurrent run-time and great
             | primitives for working with _software transactional memory_
             | , a fast and advanced type system to help you get feedback
             | on your program interactively and reject more poorly formed
             | programs, immutable data structures and rules for composing
             | them that enable distributing computations safely while
             | making code much easier to manage. There is a lot going on
             | here and it has been slowly adopted into other language
             | ecosystems for decades for a reason.
             | 
             | I understand it's often more work than folks are willing to
             | invest but that's no reason to be so dismissive.
        
               | nostrebored wrote:
               | An abstraction in a pragmatic field like engineering is
               | only as good as its utility.
               | 
               | Haskell is unapproachable, and its abstractions are
               | complex. More complex than most engineers actually need.
               | From a utility perspective, these abstractions are bad.
        
               | agentultra wrote:
               | Honestly I spent enough time to dig into Haskell to learn
               | it well enough to make an informed criticism of the
               | language. I ended up sticking around.
               | 
               | I understand there's plenty of _jargon_ and terms that
               | are unfamiliar to a lot of folks but they 're not
               | unapproachable or complex (usually). People commonly
               | point to weird words like, "Functor," or, "Monad." It
               | seems insurmountable and complex but if you really dig in
               | and learn what they mean it's infuriatingly simple and
               | practical. I hardly even notice when I'm using them but I
               | can see the pattern in software everywhere (or where they
               | leak because they don't use them).
               | 
               | Our job is abstraction. And good abstractions matter.
               | There's a reason most software these days isn't written
               | in machine language or assembly. And there's a reason why
               | it's incredibly difficult to verify, say the security
               | properties, of software systems in assembly; we use
               | higher-level languages for that work.
               | 
               |  _Update_ : The kind of complexity that is _bad_ in my
               | opinion is the incidental kind that is beyond your
               | control. Move semantics and object initializers are an
               | example of a language abstraction that leaks a lot. It 's
               | incredibly hard to write a class that works well in all
               | cases and you have to know a lot about what's happening
               | under the abstraction layer in order to avoid the
               | pitfalls of using them. This kind of complexity is
               | _everywhere_ in software, even Haskell in some places.
               | The blast radius for this kind of complexity has been
               | well managed in Haskell though. So it often comes down to
               | what you need.
               | 
               | In my experience using Haskell has let me spend less time
               | working on errors/bugs (no use after free, off-by-ones,
               | no unhandled cases, I can even avoid a lot of threading
               | and shared state issues) and more time focusing on the
               | problems I"m trying to solve.
        
           | unicornmama wrote:
           | Haskel. For when you have an IQ of 187 but act like it's 293.
           | 
           | Haskel. Perfect code for a perfect world.
        
             | benreesman wrote:
             | I 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 wrote:
             | It's understandable being anti-intellectual when spelling
             | the thing you're deriding is out of reach.
        
             | Communitivity wrote:
             | It 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 wrote:
             | for 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.
        
               | benreesman wrote:
               | This/my comment goes against the guidelines by not adding
               | much to the discussion, but as a guy who just stuck my
               | hand in the garbage grinder:
               | 
               | Funniest comment on the thread. :)
        
           | auslegung wrote:
           | Agreed. 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 :-)
        
         | claudiawerner wrote:
         | I've had a very hard time finding a new job given that my
         | current job doesn't use any kind of "tooling" or outside
         | libraries to get things done, other than rather obscure and
         | domain specific ones (e.g. libgps). Ideally I'd like to pivot
         | to web development given that I have some hobbyist experience
         | with it, but I'm not very good at "specific frameworks".
         | 
         | If someone were to ask me to sit down and write something in
         | React/Vue.js/whatever on the first interview, I don't think I
         | could without the docs or a tutorial available. I can write JS
         | just fine, I can't write any specific framework, even though I
         | have the mental model and concepts behind how they work and how
         | to use them. So when I see a job that specifically asks for
         | e.g. React, I just don't apply. Same story with companies that
         | ask for Django rather than the more generic "Python web
         | development experience". I could pick up Django within two
         | weeks if you hired me. I know what it is and what MV(C) is.
         | Isn't that enough?
        
           | egeozcan wrote:
           | > If someone were to ask me to sit down and write something
           | in React/Vue.js/whatever on the first interview, I don't
           | think I could without the docs or a tutorial available
           | 
           | I've been in the web development doing all "ends" since
           | I-lost-count-how-many years and even with a library which has
           | rather a small API surface like React, I also need to search
           | things every once in a while. If they don't allow you to do
           | that in an interview, they have unrealistic expectations.
           | 
           | > I could pick up Django within two weeks if you hired me. I
           | know what it is and what MV(C) is. Isn't that enough?
           | 
           | Most of the time, it is enough. There is also an unlikely
           | chance that they have a lot of complexity and need someone
           | who knows the internals and can fix obscure bugs. That
           | probably wouldn't be you for Django/React. I sometimes was
           | that person in the past and it's very stressful so, it's not
           | something a developer would seek to become anyway.
        
           | zarzavat wrote:
           | For an experienced programmer with some frontend experience
           | it only takes a couple of days of studying to learn React
           | well enough to pass an interview. It really isn't very
           | complicated.
           | 
           | Something like CSS would be much harder to fake.
        
             | austincheney wrote:
             | The problem isn't Reacts API. It's the absurd extreme
             | declarative beginner mindset and code style you will be
             | evaluated against. If you have any real experience without
             | React you have to really lie about who you are.
        
               | Jach wrote:
               | Learn React on your own, put React on your resume, don't
               | claim mastery over it but a vague 'know' or 'learned'.
               | What's to lie about? But sure, it might look better in a
               | professional context instead of just being in the keyword
               | soup. Add at your present place a blurb: 'worked on
               | migrating frontend to React'. You can make this true
               | enough by simply talking to your boss "Hey, why don't we
               | move [our native UI/command line/custom JS] to React?"
               | and getting a "No." If it comes up in an interview, you
               | didn't get very far and it wasn't completed. Your lack of
               | expertise may show up in a test of ability, but then
               | again it may not, interviews are about both sides
               | resolving what's true enough about the resumes and the
               | job description/requirements into what they actually care
               | about.
               | 
               | And of course if you tried making a short demo as part of
               | the learning, you can show that to the boss/the UI team,
               | and be able to tell more in React terms how (not) far it
               | got, though your current boss might also say "Ok" and now
               | you have a chance to learn it more professionally. Like,
               | that's how a lot of us learn new things -- I wanted to
               | learn property testing, fortunately I didn't have to ask
               | any managers (just a legal/security workflow and pom
               | changes signed off by another team member) to add Java's
               | QuickTheories to my team's test code. After that I used
               | it in a few places, did a casual lunch-and-learn demo on
               | it for the team, used it in various other places over
               | time. I'd put property testing on my resume if a job app
               | needed it, and just be honest that I haven't written
               | nearly as many property tests as unit tests. It's a
               | mindset change to write them, too, and maybe my lack of
               | years and years and thousands of tests would be clear to
               | someone needing such deep expertise. Or not.
        
               | azangru wrote:
               | > extreme declarative beginner mindset
               | 
               | What do you mean by this?
        
               | zarzavat wrote:
               | Perhaps they are referring to the fact that unfortunately
               | many "React programmers" don't have much experience of
               | programming in other contexts, and fall into classic
               | beginner programmer traps of overengineering,
               | overabstraction, etc. It's similar to the "jquery
               | programmers" of yore.
               | 
               | This style of react can be pretty weird to "normal"
               | programmers, intolerable even.
               | 
               | Fortunately there are many full stack programmers writing
               | sensible react, I have worked on such teams and had no
               | problems.
        
           | stjohnswarts wrote:
           | I guess their point is "why don't you go ahead and learn
           | django in 2 weeks, sacrifice a few weekends and nights so you
           | can blow away the easy pitches we're tossing at you during
           | the interview". Pick a web framework and learn it and then
           | you at least have a basis for your claims.
        
           | Grieverheart wrote:
           | This is also the reason many companies rewrite code to new
           | framework because they cannot find developers that know how
           | to program in the old framework. Really narrow-minded if you
           | ask me. You just need a good programmer than can easily learn
           | new languages/frameworks. It might take a good programmer a
           | week to learn a new language/framework.
        
             | vnjxk wrote:
             | I got my current job because I was able to learn a new
             | framework overnight
        
             | BeFlatXIII wrote:
             | An old job of mine put new employees through two months of
             | bootcamp. The first month was mostly learning the industry
             | idiosyncrasies and the second was role-specific training on
             | the tech stack.
             | 
             | Understandably, this only works at large and established
             | corporations who have enough spare revenue to invest in a
             | dedicated training team.
        
       | caaqil wrote:
       | > I understand what it means when someone says that a monad is a
       | monoid in the category of endofunctors.
       | 
       | Finally, someone who understands the magic sentence.
        
       | matijash wrote:
       | Wow, this thread really exploded! My 2 cents on Haskell, since
       | we're building https://wasp-lang.dev/ in it and also just hired
       | several founding engineers:
       | 
       | - we're sticking with the "Boring Haskell"
       | manifesto(https://www.snoyman.com/blog/2019/11/boring-haskell-
       | manifest...) - using only the widely adopted compiler plugins and
       | not going too crazy with the monad transformer stack, which keeps
       | the code easy for others to contribute to.
       | 
       | - we've hired 2 founding engineers so far - none of them knew
       | Haskell beforehand! But they were both senior engs well versed in
       | different languages and I was surprised with how quickly they
       | picked it up - within the first month they are at 90%
       | productivity.
        
       | benreesman wrote:
       | I would like to hire a serious Haskell hacker.
       | 
       | ben@rocinanteresearch.net
        
         | 0des wrote:
         | No landing page, and the qualifiers are "serious" and "hacker".
         | Just based on past experience this feels like an underfunded
         | start-up position. Do something different if you take this
         | project seriously.
        
       | analogsalad wrote:
       | It looks like the author needs to update their about page:
       | 
       | https://blog.plover.com/meta/about-me.html
       | 
       | > _I may be best known for my book Higher-Order Perl, published
       | in 2005 by Morgan Kaufmann, and for my other work in Perl. But as
       | a programmer I consider myself uncommited to any particular
       | language or system. As with everything else, I try to go for
       | breadth rather than for depth._
        
         | mjd wrote:
         | I don't understand. What part do you think needs to be updated?
        
           | ColinWright wrote:
           | Not the parent, but I'm guessing that you are here asking for
           | a job in Haskell, but the about says:
           | 
           | > _... I consider myself uncommitted to any particular
           | language ..._
           | 
           | (Also, you mis-spelled "uncommitted")
        
             | mjd wrote:
             | I still don't understand. Do you?
             | 
             | (Thanks for pointing out the typo.)
        
               | ColinWright wrote:
               | Re typo: You're welcome.
               | 
               | Re the other: I think they feel it's contradictory for
               | you to say that you're uncommitted to any particular
               | language _while at the same time_ specifically saying
               | that you 'd like a job programming in Haskell. I can see
               | how someone might feel that there's a tension between
               | those two assertions, but I don't see it as
               | contradictory, nor as implying that the "About" needs
               | modification.
               | 
               | It was probably just a throw-away comment, and not really
               | worth close analysis.
               | 
               | <shrug>
        
       | xupybd wrote:
       | That doesn't bode well for the rest of us if someone this
       | accomplished can't land a Haskell job. This makes me wonder if
       | it's been worth learning functional programming. I've put hours
       | and hours of my free time into F#. I'm not sure that it was a
       | wise move. That said I love F#.
        
         | hsn915 wrote:
         | I think this is not a useful or productive mindset. I mean the
         | idea of "I spend hundreds of hours learning $TECH in order to
         | get a job in it".
         | 
         | If you learn it because it is interesting to you and you enjoy
         | the process of learning and using the language/tech, then
         | that's all good. How to "monetize" your hobby is a separate
         | question that should not factor in whether you should or should
         | not cultivate it. There are probably many ways to monetize it.
         | Landing a job is just one way.
        
         | burntoutfire wrote:
         | There's a fair amount of FP jobs in Scala land.
        
           | burntoutfire wrote:
           | Also, I'm not an expert on Haskell, but to my knowledge,
           | popular Scala FP libraries such as cats or zio are basically
           | ports of Haskel into Scala.
        
         | makerofthings wrote:
         | I learned Haskell because I love programming and it was fun. If
         | you enjoyed learning F# then your time was not wasted :)
        
           | xupybd wrote:
           | Yeah you're not wrong it's loads of fun
        
         | deltaonefour wrote:
         | Don't worry about it. The functional style can be translated to
         | helping you code functionally in other languages and solve
         | problems with a functional bias.
         | 
         | It's a good thing.
        
         | pyrale wrote:
         | > That doesn't bode well for the rest of us if someone this
         | accomplished can't land a Haskell job.
         | 
         | As an opposite experience, we're currently hiring someone with
         | no experience to do haskell and purescript. The key here is
         | that there are few haskell companies, but also few haskellers:
         | companies have trouble finding haskellers just like haskellers
         | have trouble finding companies. While most of the work in a
         | traditional tech company receives lots of CVs, we typically
         | experience the opposite, where it's hard to find many people to
         | apply.
        
           | Kaze404 wrote:
           | Hey. I'm in a similar situation as OP (though with much less
           | experience). Are you still hiring by any chance?
        
             | pyrale wrote:
             | Sorry, we're no longer hiring. Small company means we don't
             | have that many positions currently :-(.
        
         | yodsanklai wrote:
         | > I've put hours and hours of my free time into F#
         | 
         | It can't be worse than playing video games or watching tv
         | shows.
         | 
         | Seriously, this is never lost. The more languages/paradigms we
         | know, the easier it gets to learn new languages. I think it's a
         | good investment.
        
           | CreepGin wrote:
           | Pro gamers and TV critics are rolling their eyes. =D
           | 
           | I feel like in this day and age, you can be successful at
           | anything if you put in enough hours. Key is probably in being
           | active and critical instead of being mindless.
        
           | jerrre wrote:
           | You could argue that if you see an activity as an investment,
           | by definition it is NOT free time?
        
             | motohagiography wrote:
             | The counter argument could be that this defines free time
             | as measured by its opportunity cost against something else,
             | and not as just what you enjoy. I tell people all the time
             | that what I'm doing isn't procrastination, it's
             | _sacrifice_.
        
         | [deleted]
        
         | BatteryMountain wrote:
         | F# knowledge is valuable even if you don't use it. I've been
         | down that rabbit hole a few times in the past 10 years or so,
         | and even though I don't use it for work, it changed the way I
         | code.
        
         | [deleted]
        
         | knocte wrote:
         | We're looking for F# devs, pls drop me an email to
         | andres@nodeffect.com.
        
         | NicoJuicy wrote:
         | If you can also write c# that's a nice combination to pick the
         | right tools for a use-case
        
         | gilbetron wrote:
         | After running a whole lot of coding interviews, one thing I've
         | noticed is that people that take a functional approach to
         | solving problems more typical end up having a hard time. Mostly
         | because the functional style is more difficult to debug.
        
           | peheje wrote:
           | I'm still a newb to F#, but did a few Advent of Code 2021 in
           | it. Once I learned to do a log function that logged/dumped
           | input to a file - and then returned the input - it was
           | trivial to stick this log function anywhere in the pipes or
           | folds or wherever to get a view of the program state.
           | 
           | I would then use the "Send to repl" feature to fire off
           | single pieces of my program expressions to get instant
           | feedback on the code I was writing. Long before the entire
           | program was run in whole, each part had been run many times.
           | 
           | If you're in a classic whiteboard interview sessions you are
           | robbed of this possibility. That's unfair because it's a big
           | part of working with F# (I would guess other functional
           | programs as well). You might feel you "pay" a bit in avoiding
           | mutable state and having everything as an expression, but you
           | gain so much in return, but you gotta use it!
           | 
           | I guess my argument is that a whiteboard situation might
           | favor an imperative style, where you would write, compile,
           | run and not use repl throughout development?
        
           | phillipcarter wrote:
           | This can also be a classic case of why coding interviews are
           | often a poor approximation of real world tasks.
           | 
           | Imperative (and especially dynamic) languages typically make
           | it easy to get something "working", but it can take many
           | iterations or lots of unit tests until it's robust enough to
           | be worthy of handling a production load. That time spent
           | futzing around with it isn't often capturable in an
           | interview. If it is, chances are the interview isn't asking
           | something representative of real-world scenarios, or it's
           | taking a very narrow slice of one where someone's approach is
           | going to change a lot of they're not just working in the
           | narrow slice.
           | 
           | Functional (and especially typed functional) languages do
           | make it harder to get something up and running, but they tend
           | to have a nice side effect that if the compiler is satisfied,
           | it won't need more work. That usually happens because you can
           | capture the domain in a type declaration that the compiler
           | requires you to account for all cases of. And if you're
           | missing something, it's easy to adjust because the act of
           | adding another case to your domain makes your compiler point
           | out exactly where else to update your code.
        
           | toastal wrote:
           | Because they didn't use state? Can you elaborate what you
           | mean?
        
             | gilbetron wrote:
             | I haven't really figured out the "why", but the observation
             | is that people that start using the typical functional
             | portions of a language (map/reduce/whatever) are more
             | likely to get bogged down if the code doesn't do what they
             | expect. And this is even for people that seem really good
             | at it.
        
               | deltaonefour wrote:
               | Debugging functional code is a bit different and not
               | everyone picks up this skill. That's why functional code
               | tends to be harder to debug and people who pick up this
               | skill will take longer in debugging it.
               | 
               | The main reason is printing. All your code is inlined
               | into a single expression. You can't really throw a print
               | statement in there. With haskell it's even crazier as if
               | you do manage to print your code it comes out backwards.
        
               | sulam wrote:
               | This is because creating the exact right abstraction for
               | the job is time consuming. It _may_ pay off later, and
               | your typical FP person is fairly convinced that it will
               | in terms of being able to be confident you got things
               | right without having to test a lot of basic shit first
               | (types tend to replace tests).
               | 
               | This is not suitable for the typical interview format.
        
               | [deleted]
        
         | IshKebab wrote:
         | All he's done is write a blog post _yesterday_ saying  "does
         | anyone want to give me a Haskell job? I have no substantial
         | experience in Haskell". Bit early to say he can't land a
         | Haskell job.
        
           | xupybd wrote:
           | This is a very fair point.
        
         | Cthulhu_ wrote:
         | Is it because they might be overqualified, so any company that
         | happens to do haskell (which I can imagine aren't many) are
         | intimidated?
         | 
         | I mean how many people here, currently working in language X,
         | would want to hire someone that is better than they are? I mean
         | rationally it makes sense - bette for the company, learning
         | opportunities, etc, but emotionally it would seriously piss me
         | off if someone came swooping in and basically made me obsolete
         | and look stupid. (I'm not saying the author of the article
         | would do so, I'm just speaking in general and thinking up
         | hypothetical scenarios)
        
           | dagw wrote:
           | _but emotionally it would seriously piss me off_
           | 
           | That is why choices like that should be left to project
           | managers. As someone who is coding less and managing more
           | these days, I have none of that ego left. If I could hire
           | someone twice as good as me I would do so in a heart beat[1]
           | and then go home and celebrate my great luck.
           | 
           | [1] Assuming they aren't an asshole etc. etc.
        
           | omnicognate wrote:
           | That attitude among Haskell devs is one of the problems. The
           | conviction that it is a fundamentally better way of
           | programming and that anybody who chooses anything else for
           | anything is a worse programmer certainly hampers its success.
           | 
           | But the main reason, at least in my 20+ year career in my
           | industry, is that it simply doesn't have a track record of
           | success. Haskell isn't remotely new. It was mainstream in
           | academia when I was at university and since then I've seen
           | multiple attempts at adopting it in a large scale commercial
           | setting. I've seen a couple of successes, on small, well
           | defined projects that were relatively "academic" in nature
           | (i.e. the challenges were in the comp-sci type aspects rather
           | than the engineering, and the interactions with other systems
           | were minimal). I've seen more failures, projects with lofty
           | goals that went nowhere. F# has been more successful, and
           | I've seen some significant infrastructure built with it, but
           | it's certainly not proven itself superior to the alternatives
           | (in an industry where successful solutions always get
           | mimicked).
           | 
           | Basically, it's 2022. People have tried it and it hasn't
           | worked out.
        
             | worldsayshi wrote:
             | Haskell has been a huge success in how it has inspired the
             | industry. I believe there is more where that came from. I
             | think Haskell Generics could be really powerful if it was
             | made way more usable and intuitive.
        
             | Quekid5 wrote:
             | Haskell's slogan was "avoid (success at all cost)", so it's
             | hardly surprising that it's been considered niche since its
             | inception.
             | 
             | It's seen adoption among at least a couple of large
             | companies: Standard Chartered, and Facebook uses it to make
             | a DSL for spam filtering. The key point for at least those
             | adopters is that it has a fast turnaround time for quickly
             | changing code _and still having it be correct_.
             | 
             | Is this objective data? No, certainly not, but it's
             | probably better than pure speculation.
             | 
             | I personally speculate that it has a lot to do with what
             | type of problem you're solving. If you're solving
             | difficult/intricate problems language matters a great deal,
             | but if you're just doing CRUD the language choice probably
             | matters much less. Or if, as above, you're working in a
             | domain where being correct _the first time_ matters a lot.
        
               | andi999 wrote:
               | I learned that supposedly the Haskell motto "avoid
               | success at all cost" wasnt suppose to mean what people
               | think: https://news.ycombinator.com/item?id=12056169
               | 
               | https://discourse.haskell.org/t/new-blog-post-haskell-
               | doomed...
               | 
               | I honestly think this is/was an idiotic move; especially
               | since the alternative reading 'avoid "success-at-all-
               | cost"' is not thaaat much better, like (from the second
               | link):
               | 
               | "An example is I/O. For literally years Haskell had no
               | I/O to speak of; more precisely, I/O was unreasonably
               | difficult. For practical utility that was pretty
               | inconvenient. But we stuck to purity..."
               | 
               | I mean, would you want to rest your business on such an
               | attitude? (Which is a great attitude, also gave monads,
               | explained in the link, and advanced the language while
               | keeping it pure). I am not saying a language/environment
               | has to be business friendly, but if you want businesses
               | to use it, it better be.
        
               | pyrale wrote:
               | > I mean, would you want to rest your business on such an
               | attitude?
               | 
               | From a business pov, the idea would be to assess whether
               | you're happy with what can be done in userland rather
               | than expect syntactic or semantic changes. I can't think
               | of a company that started doing haskell waiting for
               | future features to be added in the language.
        
               | WJW wrote:
               | > I mean, would you want to rest your business on such an
               | attitude?
               | 
               | Haskell started as a research language by academics, for
               | academics. Business concerns have not been a large
               | concern in its language evolution. That's fine IMO, it's
               | good to have a place where CS researchers can experiment
               | relatively freely without having Big Corporate
               | Stakeholders demanding absolute backwards compatibility
               | for all time (see Python 2->3 for an example of that).
               | 
               | The best parts of Haskell have slowly been copied by
               | other languages (for example: typeclasses became traits
               | in Rust, list comprehensions are in Python, goroutines
               | look a LOT like Haskell threads, etc), while the
               | experiments that didn't work out as much (lazy I/O for
               | example) just don't get copied.
               | 
               | "It's no good for business" just misses the point of a
               | research language completely IMO. That said, some people
               | want to make it more business-oriented and have been
               | making strides towards that goal. Haskell does not really
               | have a BDFL, so anyone can (try to) move the ecosystem in
               | any direction they wish.
        
               | andi999 wrote:
               | I agree it is good to have it as a research language; but
               | one shouldnt expect jobs in that field then (which the op
               | seems to do). One can hope though.
        
               | marcosdumay wrote:
               | Do you know of any person that made a decision based on
               | the slogan contents? It was an obvious joke. I've seen
               | people claiming to avoid a language that posts a joke on
               | the front page (honestly, appeasing to those people were
               | a sure way to add those costs the slogan is about), but
               | never because of the message.
               | 
               | Anyway, removing the parenthesis makes it clear that the
               | operations are associative. Otherwise the phrase would be
               | wrong, and Haskell developers really dislike that kind of
               | wrong.
        
             | q-big wrote:
             | > (in an industry where successful solutions always get
             | mimicked).
             | 
             | This is in my opinion not the case.
             | 
             | Just to give one example: WhatsApp managed to get to half a
             | billion users with about 60 employees by using Erlang for
             | their infrastructure.
             | 
             | Nevertheless, Erlang is far from being a mainstream
             | language (even though it is used in industry).
             | 
             | In my opinion, in what kind of infrastructure is
             | used/mimicked, a lot of hype is involved.
        
               | omnicognate wrote:
               | That's not the industry I'm talking about. I work in
               | finance.
        
             | pyrale wrote:
             | > Basically, it's 2022. People have tried it and it hasn't
             | worked out.
             | 
             | It worked well enough for us when we tried it.
             | 
             | I guess the issue is that people and companies really have
             | bad expectations on what "works out" means, and how
             | different languages may need different kinds of
             | environment/investment. If you expect to run a haskell shop
             | the same way you run a java shop, you'll run into trouble
             | as soon as your original team leaves. Likewise, if you run
             | your java shop as you would run a haskell shop, expect
             | trouble.
        
             | jodrellblank wrote:
             | > " _F# has been more successful_ "
             | 
             | F# was built to be successful rather than pure. The Early
             | History of F# writeup[1] talks about Don Syme wanting to
             | get strongly typed functional programming " _delivered in
             | such a way that it could be adopted by large numbers of
             | programmers_ ", and SML.NET which was being developed at
             | the time was not looking like it would do that. He then
             | worked with someone to port Haskell to .NET and got it
             | running, but with input from Simon Peyton-Jones decided on
             | a different direction. Then went towards OCaml and whether
             | it could run on either JVM or .NET and had this exchange:
             | 
             | > " _OCaml already shares a platform with C (at least with
             | the native-code compiler), so all the C libraries are
             | already available... Yet it can still be a lot of effort to
             | link with a C library.[...] There 's hard work to be done
             | to realise this vision, but in principle a clean interop
             | story sure beats the endless rehashing of other people's
             | code in language X as a library in language Y. Myself and
             | others involved in the Project 7 are working on one
             | approach to achieve this interop, i.e. compiling languages
             | directly to .NET MS-IL, in the style of MLj, often adding
             | extensions to the language in order to improve the interop.
             | We are also working on improving the .NET infrastructure,
             | proposing support for features such as parametric
             | polymorphism in MS-IL..._"
             | 
             | That is, Don Syme was not focused on the most pure
             | ideological code first, he wanted something a large number
             | of programmers could use, and adapting the language and
             | tooling for that goal. F# became a thing supported by
             | Microsoft, by Visual Studio, interops with C# libraries,
             | and C# being able to use libraries written in F#, with very
             | low friction as they share the same runtime, garbage
             | collector, basic type library, exception system, etc.
             | Quoting from the PDF again:
             | 
             | > " _As an aside, I think it would be an interesting
             | question to say "OK, let's take it for granted that the end
             | purpose of our language is to produce components whose
             | interface is expressed in terms of the Java or .NET type
             | systems, but which retains as many of the features and
             | conceptual simplicity of OCaml and ML as possible." I'm not
             | sure exactly what you'd end up with, but whatever it was it
             | could be the language to take over from C\\# and/or Java
             | (if that's what you're interested in...) But without really
             | taking Java/.NET component building seriously right from
             | the start I feel you're always just going to end up with a
             | bit of a hack - an interesting, usable hack perhaps, but
             | not a really good language_"
             | 
             | F# is a bit awkward, not perfectly pure, has to cope with
             | .NET nulls and C# being the big force for the direction
             | of.NET and so on. 20 years later, well who knows but in the
             | StackOverflow survey of 2018 F# is 9th "most loved
             | language" and OCaml is 25th.
             | 
             | [1] https://fsharp.org/history/hopl-final/hopl-fsharp.pdf
             | (chapter 6, the decision to create F#, particularly)
             | 
             | [2]
             | https://insights.stackoverflow.com/survey/2018/#technology
        
             | deltaonefour wrote:
             | I don't think this is a good philosophy to follow.
             | Javascript for example was a terrible language. It's better
             | now because they modified it and most people use
             | typescript... but it was shit starting out and it's
             | initially popularity had nothing to do with how well it
             | worked.
             | 
             | I will say that haskell does solve many of the problems we
             | face in software engineering today including coding
             | ourselves into a corner. The problem is the paradigm is
             | extremely hard and that's what hampers its success.
        
             | captaincaveman wrote:
             | I have similar opinions on Scala, lots of theory that it
             | makes things better, but the only measurable difference is
             | that its a nightmare to hire for, more expensive and we
             | often have to invest time training people ... who then
             | leave to become contractors.
             | 
             | I'm not anti functional or Scala, but I'm yet to see any
             | reports etc that actually indicate there is a pay off.
        
               | grumpyprole wrote:
               | I don't even view Scala as a functional language, as
               | functions (methods) are not first class. Lambdas are
               | encoded as objects with a single method. It's much more
               | expressive than Java and so better at expressing many
               | functional programming ideas, but it's not a functional-
               | first language, it's an evolution of Java.
               | 
               | The underlying issue is that it's a complex language with
               | many experimental and interacting features, which can and
               | do cause a lot of distraction. This is not the fault of
               | functional programming. Have a go at OCaml or F#, which
               | are nice practical sweet spots.
        
               | hocuspocus wrote:
               | The JVM has had specialized bytecode for SAM types for a
               | long time now, you cannot really get more "first-class"
               | than that. And really it's just an implementation detail
               | than doesn't make the language more or less functional.
               | 
               | Scala isn't simply an evolution of Java. It offers a type
               | system that goes beyond what you can do in F# or OCaml.
               | The fact it's multi-paradigm and plays nice with Java's
               | OO model doesn't make it less functional than these two.
        
               | barrenko wrote:
               | Yup, Scala is to Haskell what F# is to Ocaml.
        
               | sideeffffect wrote:
               | > Scala is to Haskell what F# is to Ocaml
               | 
               | That's not quite precise, IMHO.
               | 
               | F# is an awesome language that I hold very dear, but it
               | is a castrated form of OCaml. It has only a few features
               | that OCaml doesn't have. For example Type Providers or
               | Unit of Measurement. These are nice and useful features,
               | they're not gimmicks, but they're not fundamental.
               | 
               | On the other hand, Scala isn't a hollowed out Haskell.
               | Haskell, admittedly, is a more powerful language and has
               | features Scala doesn't, like a linear type system. And
               | it's just different, non-strict, whereas Scala is strict.
               | But Scala is also very powerful in other fundamental
               | areas, where Haskell is weak. Scala has a superior module
               | system, it's biggest strength IMO. Haskell's modularity
               | story is that great AFAIK.
        
               | 62951413 wrote:
               | I remember perusing a book on ML (the language) and
               | having aha moments such as "so this is where the '_'
               | naming convention comes from" and "this is where pattern
               | matching was borrowed from". Monads (aka zio/cats) are
               | not built-in, the "lazy" keyword is a far cry from
               | strictly lazy evaluation. I say "Scala to Ocaml" on the
               | JVM is equivalent to "F# to Ocaml" in the .NET world
               | (there must be some category theory joke in this
               | topology).
        
               | grumpyprole wrote:
               | > it's just an implementation detail than doesn't make
               | the language more or less functional.
               | 
               | It affects the language very much, awkward currying and
               | tupling, needing to wrap methods in objects. Subtyping
               | also has many complex consequences. There is limited type
               | inference and tail call optimisation versus functional-
               | first languages.
               | 
               | > Scala isn't simply an evolution of Java. It offers a
               | type system that goes beyond what you can do in F# or
               | OCaml.
               | 
               | It offers higher-kinded types, but F# has units of
               | measure, OCaml has polymorphic variants. Each has
               | advanced features not offered by the other.
               | 
               | > The fact it's multi-paradigm and plays nice with Java's
               | OO model doesn't make it less functional than these two.
               | 
               | It was not designed as a functional programming language
               | first and foremost, that is my point.
        
               | captaincaveman wrote:
               | I'll also add that scala/functional engineers are also
               | more likely to focus their energies on monads and type
               | theory rather than product delivery.
               | 
               | I get that it is probably more intellectually stimulating
               | for many engineers than the project they are working on,
               | but it also reflects in over engineering of distributed
               | systems for simple problems. I do wonder if there is
               | really any net gains for a company to go the functional
               | route.
               | 
               | I would love to see some research on this as people have
               | been championing it for decades now, and seems
               | suspiciously absent!
        
               | sideeffffect wrote:
               | > scala/functional engineers are also more likely to
               | focus their energies on monads and type theory rather
               | than product delivery
               | 
               | This feels to me like a low effort and vague criticism.
               | 
               | Essentially, this is a complaint about an arbitrary group
               | of developers that they're playing around with tech
               | (whatever that tech might be) instead of delivering...
               | 
               | Obviously, in this case you can't say that specific thing
               | about Python/JS/PHP/whatever developers, because "monads
               | and type theory" just don't apply in these languages. (I
               | know Python has MyPy, but let's put that aside for the
               | simplicity of the argument.)
               | 
               | But for some non-scala/functional engineers, somebody
               | could complain that they're wasting time playing with GUI
               | frameworks, testing frameworks, async libraries,
               | whatever...
               | 
               | The truth is, people can clown around with any
               | technology, just as people can deliver with Scala/FP or
               | something else.
        
               | hocuspocus wrote:
               | > I'll also add that scala/functional engineers are also
               | more likely to focus their energies on monads and type
               | theory rather than product delivery.
               | 
               | Then how do you explain that a very significant number of
               | "top" tech companies have teams who manage to deliver
               | products written in Scala or other FP languages?
        
               | captaincaveman wrote:
               | Teams have managed to deliver products in also sorts of
               | languages, Cobol for example. Did the choice of language
               | benefit the delivery, maintenance and TCO is my question.
               | If I choose Haskell/Scala over Java (FYI as a programmer
               | I'm not a fan of Java) what benefit will it actually
               | bring the business, and does it out weight the negatives,
               | over what time frame and how much risk?
        
               | hocuspocus wrote:
               | There are technical tradeoffs everywhere. But you cannot
               | make a caricature of FP developers, supposedly not
               | willing to spend energy on delivering products.
               | 
               | Lots of tech companies have proved that you don't need to
               | follow Google and constrain your workforce to a small
               | list of vetted languages. Most teams who chose Haskell,
               | OCaml, Scala, Rust... are productive and able to deliver
               | products.
        
               | hocuspocus wrote:
               | > It affects the language very much, awkward currying and
               | tupling, needing to wrap methods in objects.
               | 
               | That is a lot less true since Scala 3.
               | 
               | > Subtyping also has many complex consequences.
               | 
               | Sure. But it also means I can use any library from the
               | Java ecosystem, and that's a huge reason behind the big
               | number of Scala jobs compared to other FP languages.
               | 
               | > There is limited type inference and tail call
               | optimisation versus functional-first languages.
               | 
               | Limited type inference is typically what I (and my team)
               | want, for the sake of self-documentation. Scala's type
               | inference is plenty enough, and the few corner cases that
               | were annoying in Scala 2 should be fixed in Scala 3.
               | 
               | Tail-call optimization is done the compiler. The lack of
               | tail-call elimination is bothering the few maintainers of
               | functional libraries that need to implement CPS and
               | trampolines, but not really something the average
               | developer will have to worry about. And it should come to
               | the JVM with Loom, eventually.
               | 
               | > F# has units of measure
               | 
               | Scala offers more generic ways to do the same thing.
               | Would F# need such a feature at the language-level if it
               | had typeclasses?
               | 
               | > OCaml has polymorphic variants
               | 
               | I believe most people don't want structural typing in
               | their GADTs.
               | 
               | > It was not designed as a functional programming
               | language first and foremost, that is my point.
               | 
               | I don't think Martin Odersky would agree. It's not an
               | either/or situation. Scala was designed to be a full-
               | fledged functional language, _and_ OO hybrid, compatible
               | with (and leveraging) the Java OO model, _and_ offering a
               | strong type system that goes beyond what you find in most
               | FP languages.
        
               | sideeffffect wrote:
               | > awkward currying
               | 
               | Personally, even though I haven't really thought it
               | through deeply, I feel like Scala would be better if
               | everything were curried.
               | 
               | > Subtyping also has many complex consequences
               | 
               | But also substantial benefits!
               | 
               | > There is limited type inference
               | 
               | I wish Scala would improve in this regard. Maybe
               | paradoxically, inference works better with code tuned for
               | subtyping and variance.
               | 
               | > tail call optimisation
               | 
               | This will be fundamentally solved by Project Loom. At
               | least on the JVM (there's also Scala on JS and on LLVM).
               | 
               | > F# has units of measure
               | 
               | I dearly miss those. Type Providers even more so.
               | 
               | > OCaml has polymorphic variants
               | 
               | Could be nice in Scala. Or maybe not, can't tell now. And
               | there's always the risk of too many features, which makes
               | a language worse, not better.
               | 
               | > It was not designed as a functional programming
               | language first and foremost
               | 
               | This is misleading at best. It was designed to show that
               | the distinction between OOP and FP is arbitrary, not
               | fundamental. In other words, Scala erases the
               | distinction, it's fully OOP and fully FP. Scala has
               | higher order functions, ADTs, pattern matching, a module
               | system, like SML/OCaml. But it uses keywords `class` and
               | calls it's instances "object" like Java. And it's
               | interoperable with Java. But theoretically there's no
               | fundamental distinction.
               | 
               | More languages are becoming more and more like Scala,
               | btw.
               | 
               | https://www.lihaoyi.com/post/FromFirstPrinciplesWhyScala.
               | htm...
               | 
               | And the concept of a programming language paradigm is
               | fake from the start anyway ;)
               | 
               | https://www.cambridgeblog.org/2017/05/what-if-anything-
               | is-a-...
        
               | 62951413 wrote:
               | There are two flavors of Scala and only one of them is
               | about cats/scalaz. I feel intellectually inferior to
               | people who use the latter in production. But I don't
               | think anymore it's a reasonable aspiration to become one
               | of them. And maven builds Scala projects equally well
               | (with half a screen of XML) and without any SBT
               | complexity.
               | 
               | I have not seen Bay Area companies where previous Scala
               | experience counts for more than inviting me to an
               | interview. In my current team I know multiple developers
               | who'd like to have more Scala and Java developers who
               | don't know Scala or even Kotlin.
        
             | grumpyprole wrote:
             | > That attitude among Haskell devs is one of the problems.
             | The conviction that it is a fundamentally better way of
             | programming and that anybody who chooses anything else for
             | anything is a worse programmer certainly hampers its
             | success.
             | 
             | This is not true in my experience; and I have been
             | professionally writing Haskell for over a decade. It is
             | well understood that Haskell is excellent for reasoning
             | about program correctness, but rather poor for reasoning
             | about program performance/efficiency, especially memory
             | usage. What Haskell programmers _might_ get frustrated
             | about is less suitable tools used for domains for which
             | Haskell would be an excellent fit (smart contracts?). There
             | are many domains for which correctness and productivity are
             | important, but performance /efficiency less so. Haskell is
             | still much more performant than many dynamic languages are.
             | 
             | OCaml is a nice middle ground, lots of functional goodness
             | and type safety with a much more predictable runtime.
        
               | pcthrowaway wrote:
               | > What Haskell programmers might get frustrated about is
               | less suitable tools used for domains for which Haskell
               | would be an excellent fit (smart contracts?)
               | 
               | Haskell actually _is_ used for smart contracts on Cardano
               | (which is also written in Haskell):
               | https://github.com/input-output-hk
               | 
               | They haven't been very "successful" yet in the sense of
               | mass adoption (even as far as smart contracts go, EVM-
               | based dapps have multiples more users), but I think this
               | is because of design choices in how the blockchain works
               | moreso than using Haskell for implementation, which limit
               | the usability right now.
        
               | lazyeye wrote:
               | According to Messari Cardano oscillates between 2nd/3rd
               | most active crypto
               | 
               | https://messari.io/screener/most-active-chains-DB01F96B
               | 
               | Given the head start for Ethereum I would call this very
               | successful in terms of adoption.
        
               | pcthrowaway wrote:
               | Ethereum and EVM compatible chains are at least 4 years
               | ahead in terms of smart contract activity. Cardano just
               | enabled smart contracts in September of last year, and
               | there's been very little success in terms of usability so
               | far; network scaling upgrades are slated to roll out over
               | the next few years, and the dapps that have deployed
               | don't really work without them. For context, Sundaeswap,
               | a long-awaited DEX just deployed roughly 1 week ago, but
               | people trying to make swaps may have to wait days for
               | their swap to execute, which isn't very ergonomic.
               | 
               | The increased activity from people trying to make
               | transactions with Sundaeswap has resulted in sluggishness
               | all-around on the chain as well, because Cardano doesn't
               | have the concept of gas bidding for priority
        
               | omnicognate wrote:
               | I was replying to a comment that explicitly described
               | Haskell programmers as "better" than other programmers
               | and implied they make them "look stupid". I'd certainly
               | expect anyone with some maturity and common sense to have
               | a more nuanced view, but this attitude is expressed
               | commonly enough that I think it does have an impact on
               | perceptions.
        
           | jen20 wrote:
           | > I mean how many people here, currently working in language
           | X, would want to hire someone that is better than they are?
           | 
           | Isn't the adage "A players hire A players, B players hire C
           | players"?
        
           | tluyben2 wrote:
           | > I mean how many people here, currently working in language
           | X, would want to hire someone that is better than they are?
           | 
           | I have always tried to hire better than I am (and ever will
           | be); not to say i'm very good, but a lot of people are very
           | bad. I hired, multiple times in my (30+ year) career people
           | who are much better than I am at pure tech stuff like
           | creating great code. I would love for someone to make me
           | obsolete (I don't think looking stupid is a thing), then I
           | can focus on other stuff. In my first company I was the
           | founder and CTO; I replaced myself with a much better CTO who
           | was so much better that I suddenly had literally nothing to
           | do. So I went on to create + run our research (r&d) group
           | which was a lot more fun than being CTO. Far too many people
           | stay in positions they don't like for pure ego; I don't care
           | what they call me as long as I like the work and I get paid
           | enough, in that order.
           | 
           | I guess when you have a job and this happening it would be
           | less good. Although I would see it as a sign to go do
           | something else.
        
             | jodrellblank wrote:
             | > " _as long as I like the work and I get paid enough, in
             | that order._ "
             | 
             | If you can deal with not getting paid enough, in what way
             | is it "not enough"?
        
           | [deleted]
        
         | yanmaani wrote:
         | > worth
         | 
         | There's other things in the world than money. Even if that is
         | your philosophy, consider that learning obscure functional
         | languages might make you a better programmer across the board.
        
           | pkdpic wrote:
           | And it blurs the line between programming and art. As if
           | there needs to be any line at all.
        
         | mdm12 wrote:
         | Learning is its own reward.
         | 
         | Also, if you are looking for an F# job, ping me and we can chat
         | :)
        
         | SonOfLilit wrote:
         | Author doesn't say he has trouble finding a Haskell job. If I
         | had a Haskell blog that regularly reaches the HN front page,
         | I'd write a "looking for a job" post there as the first thing
         | in my search, not after exhausting all other avenues.
        
         | dagw wrote:
         | Finding "F# jobs" is a lot easier in my experience, due to easy
         | interop with C#. Many places using .Net or C# are willing to
         | let you use F# in places if you can convince them it makes
         | sense.
         | 
         | As to the question of it being "worth it". I learnt more about
         | becoming a better programmer by learning Haskell than probably
         | any other single thing I've done. And while I've never written
         | Haskell professionally and haven't used Haskell in probably a
         | decade, I use many of the concepts and principles I discovered
         | via Haskell almost every day.
        
           | jll29 wrote:
           | Only if other people at the company can maintain F#, though -
           | interoperability is importnnt, yes, but experienced managers
           | will want to plan for the time after you are gone.
        
           | [deleted]
        
           | throwaway81523 wrote:
           | F# means Windows right? That is a pretty big turn off for
           | some of us. Ocaml seems perfectly nice though.
        
             | aloisdg wrote:
             | We hire F# dev. You can work on whatever OS suits you need
             | as long as you can maintain it. If most of my colleagues
             | are windows users, more and more are switching to tux.
             | (mandatory, I use arch btw). Thank you dotnet core.
             | 
             | https://news.ycombinator.com/item?id=30165023
        
             | hackerfromthefu wrote:
             | Actually it's the old .NET was windows only, new .NET is
             | cross platform, since June 2017.
             | 
             | So F# is cross-platform.
        
             | knocte wrote:
             | As for my company, we use F# in many platforms (iOS, macOS,
             | Android, Linux, Windows), and in the server only in Linux
             | (ubuntu).
        
             | throwaway81523 wrote:
             | Thanks everyone, I might give F# a try.
        
             | akdor1154 wrote:
             | It's fine/great on dotnet core.
        
             | dagw wrote:
             | _F# means Windows right?_
             | 
             | In theory no, as F# runs perfectly fine on Linux. In
             | practice all real world uses of F# in paying jobs I've seen
             | has been Windows. The big advantage however is that there
             | are probably at least an order of magnitude more F# jobs
             | than Ocaml jobs.
        
             | BatteryMountain wrote:
             | F# runs on .Net Core, which in turn runs near perfectly on
             | Linux (incl Alpine). The runtime is about 50MB these days,
             | so coupled with alpine or a minimal ubuntu server, you can
             | squeeze a lot out of .net. F# is slightly slower than C# in
             | some ways but in most cases you won't notice it and it
             | brings a lot more to the table. I honestly wish most C#
             | devs would start using F# for everything by default except
             | the GUI layer, which C# makes more sense. If you are doing
             | purely api/backend stuff, F# can be sharp knife you are
             | looking for on linux.
        
               | barrenko wrote:
               | Yup, and even on Linux setup is faster / easier than say
               | Ocaml.
               | 
               | With decent (neo)vim support!
        
         | ReleaseCandidat wrote:
         | Finding Haskell jobs is the problem, not 'functional jobs' in
         | general.
        
           | MaxBarraclough wrote:
           | I'm reminded of an old joke:
           | 
           |  _This could be a great year for Haskell 's usage in
           | industry, we hope to see its adoption rate jump by as much as
           | 25%. That's right, a whole engineer!_
           | 
           | Back on topic: I imagine you're thinking mainly of Scala and
           | Clojure?
        
             | ReleaseCandidat wrote:
             | Elixir has most job offers, if I'm not mistaken. But that's
             | just what caught my attention recently.
             | 
             | I hear many people complain that they can't find Haskell
             | jobs. Could of course be that OCamlers, F#ers, ... don't
             | complain that much ;)
        
               | hocuspocus wrote:
               | Just search your favorite job board, you'll see that
               | Scala is far more popular than anything else in this
               | space. Elixir is pretty niche, you can clearly see that
               | on https://whoishiring.io (that is scraping HN among
               | other sources).
        
         | cflyingdutchman wrote:
         | If you want a job in F# at enterprise company, let me know. I'm
         | hiring at all levels.
        
         | trashface wrote:
         | There's a big difference between Haskell and F#. I like F#
         | because I can get messy and impure if I want to. I've only
         | written a little Haskell but it seems very much the opposite -
         | its has to be perfect or else it doesn't even compile.
         | 
         | Businesses generally aren't looking for perfect code. They want
         | code that does the job well enough, that others can maintain,
         | and they want it done fast. Haskell doesn't seem great for
         | that, the people who can actually crank it out fast/well enough
         | seem quite few in number. In most cases, as a business, you
         | don't want to have an IQ minimum of 140 for people to be able
         | to maintain and extend your code (exception for safety critical
         | software of course).
         | 
         | F# has the potential to be suitable for more businesses, the
         | skill floor is lower, and when the going gets tough you can
         | just take on the technical debut and f**ing hack it - and
         | someone else will be able to understand the hacks.
        
         | aloisdg wrote:
         | We are hiring F# developers:
         | https://news.ycombinator.com/item?id=30165023
        
         | throwaway599281 wrote:
         | Even if you don't use F# directly, you might apply something
         | you learned when reasoning about any problem, or coming up with
         | more elegant solutions.
         | 
         | Also, having the discipline to study to improve your skills,
         | will most definitely be beneficial in other spheres of your
         | life.
        
         | pharmakom wrote:
         | Loads of F# jobs advertise as ".NET" or "C# with an interest in
         | functional programming" since they want to encourage strong C#
         | developers to apply.
         | 
         | Seriously, F# is used a lot more than you might think in the
         | financial world!
        
         | theK wrote:
         | I think getting to grips with Haskell and the like is worth it
         | even if you are not going to end up using it day to day. In the
         | pst I have been running a program where I was introducing devs
         | to Haskell (immutable data, purism and quickcheck lostly) and
         | then watching how their code evolved in their classical
         | language projects. Over all it always was a great benefit.
         | 
         | Still, I think our industry is seriously behind in the adoption
         | curve of pure force languages. It is mindblowing really that
         | important software is still mainly written in Java C and the
         | likes...
        
           | lolive wrote:
           | Haskell makes you think about code composition. My Java
           | skills (and object composition) has changed drastically after
           | reading about Haskell. [java8+, of course]
        
       | [deleted]
        
       | vaibhavsagar wrote:
       | I hope Mark gets the Haskell job he wants!
        
       | drstrangevibes wrote:
        
       | karanbhangui wrote:
       | Check out mercury bank and hasura
        
       | e19293001 wrote:
       | Hey, he is the author of Higher-Order Perl!
        
       | jpindar wrote:
       | I would like a job writing any language.
        
         | throwaway889900 wrote:
         | I suppose "author" is out of the question.
        
       | pcaversaccio wrote:
       | To build smart contract fuzzers you usually use Haskell. I did my
       | best here:
       | https://twitter.com/pcaversaccio/status/1491014990140407814
        
       | Pompidou wrote:
       | main = putStrLn "job"
        
       | swamp40 wrote:
       | Cardano uses Haskell and Cardano smart contracts are exploding
       | right now.
       | 
       | Startups everywhere, or start your own.
        
       | iqanq wrote:
       | I would like a job watching mexican soap operas.
        
         | pkdpic wrote:
         | Too bad all those jobs got automated.
        
         | kozak wrote:
         | I bet such a job exists somewhere, because someone has to watch
         | each episode of the soap opera as a QA check before it gets
         | aired.
        
           | WJW wrote:
           | My wife used to work as a translator for Netflix for a while;
           | all the episodes get cut up in chunks of a few minutes that
           | get doled out to different translators/QA people so that the
           | plot does not leak out.
        
             | azemetre wrote:
             | Wouldn't that potentially hurt the translations? Without
             | getting the full context of the scene or plot you
             | potentially misread some scenes.
        
         | fortran77 wrote:
         | In Haskell?
        
       | spark3k wrote:
       | Hasura is brilliant and is written in Haskell mostly. Give them a
       | try: https://hasura.io/careers/?jobId=vso4JFIiAd8G
        
         | ilrwbwrkhv wrote:
         | What makes them brilliant?
        
       | 2ion wrote:
       | That's like picking a plumbing job because you get to work with
       | hex instead of torx screws. As a professional solution-provider,
       | you're free to offer only work with a specific set of tools but
       | don't expect jobs to magically appear to accommodate your
       | preference of tools. If you're a plumber, your worth is in the
       | value you create and the tools are a footnote (which you might
       | have to justify anyway). Software engineering is not any
       | different.
        
         | dzogchen wrote:
         | That's like saying a painter should be happy to get a sculpting
         | job, because he is a professional art-provider.
        
           | cwbrandsma wrote:
           | The other person's analogy is better, yours sucks.
           | 
           | Using the previous analogy, but applying your critique, it
           | would be asking the plumber to become an electrician.
           | 
           | Personally I cannot imagine being a programmer and only
           | writing in one language. I currently code in multiple
           | languages, and have forgotten more as well (at least I hope I
           | don't need PexBasic anymore)
        
         | benrbray wrote:
         | I recently had to choose between two job offers, and language
         | was among the most important (although not the only) factors. I
         | ended up choosing the job that lets me write functional Scala,
         | rather than continue writing Python, which has been a major
         | source of frustration in my current job.
         | 
         | A better analogy might be a carpenter who chooses to build
         | houses in the traditional nail-free Japanese joinery style, vs
         | the American nails-everywhere style.
        
         | dack wrote:
         | well, some engineers are lucky enough to get to specify the
         | environment that makes them the happiest, even if it's rare
         | compared to the number of opportunities out there.
        
       | mark_l_watson wrote:
       | I was once in the position of Mark Dominus. I had spent years of
       | using Haskell for recreational programming and wrote a book using
       | the subset of Haskell that I personally use (you can get a free
       | copy at https://leanpub.com/u/markwatson by setting the price to
       | free).
       | 
       | About six years ago I decided to apply for Haskell jobs at
       | Standard Charter and Facebook on Haskell teams with well known
       | people in the field. Both groups said that I was an interesting
       | candidate and suggested getting another Haskell job for a while,
       | and then reapplying. I did end up consulting remotely for a
       | startup in India writing Haskell but that job was short (about 6
       | weeks) because I was in the process of getting hired at Capital
       | One to manage a deep learning team.
        
       | kreetx wrote:
       | Try Tweag https://boards.greenhouse.io/tweag (write a cold email
       | if nothing fits in the list).
        
       | actuator wrote:
       | As far as I know, Facebook has possibly the biggest Haskell
       | deployment in form of one of their anti abuse tool.
        
         | theK wrote:
         | There is also the Cardano ecosystem which is mainly built on
         | Haskell and runs one of the biggest and most active blockchains
         | ever.
        
           | mythrwy wrote:
           | They also have a consistent history of wildly missing
           | delivery dates though.
        
           | captaincaveman wrote:
           | Hmm and there is a lot of discussion about it being a barrier
           | to adoption.
           | 
           | I think it is a good tech choice to be honest, I want my
           | blockchain carefully built and audited.
        
         | kbumsik wrote:
         | You mean, Haxl? [1] But AFAIK only a few devs are involved for
         | the development.
         | 
         | [1] https://github.com/facebook/Haxl
        
           | pharmakom wrote:
           | Testament to how powerful Haskell can be :)
           | 
           | I've seen a small team of functional programmers tackle
           | projects that would require dozens of OOP programmers. The
           | challenge is finding them!
        
             | dagw wrote:
             | I imagine that is at least as much a feature of the type of
             | programmers that self select to become "functional
             | programmers" as it is a feature of the inherent advantage
             | of function programming.
             | 
             | I worked with a guy who was an serious Lisp-hacker who
             | could do fantastic things in Lisp and was always advocating
             | that we do certain things in Lisp. But he was also a great
             | programmer when 'forced' to use C++ or Perl, he just
             | grumbled more while programming.
        
               | pharmakom wrote:
               | C++ and Perl are bad examples here. They are really
               | expressive languages. I'd like to see the same developer
               | using Go or Java 8.
        
             | fsociety wrote:
             | At the risk of exposing myself, I've had to jump in and
             | make changes to Sigma on several occasions. It was painful
             | and I am not convinced having it in Haskell did anyone a
             | favor.
        
           | ReleaseCandidat wrote:
           | No, their SPAM filter is (yes, still) in Haskell.
           | 
           | https://engineering.fb.com/2015/06/26/security/fighting-
           | spam...
        
             | arianvanp wrote:
             | (For context: the spam filter uses the Haxl library. Yes
             | Haxl itself has few developers; but it has many users)
        
       | ironman1478 wrote:
       | I find it to be a really odd when people want to work with
       | specific languages. Languages are just a means to an end, not an
       | end themselves. When I've made career changes it's because I
       | wanted to solve certain problems or learn about specific layers
       | of the stack (embedded and HW). I don't care what language is
       | optimal in a domain. If I don't know it I'll learn it, but a
       | language isn't gonna solve the domain specific issues. It's just
       | a tool.
        
         | smasher164 wrote:
         | Languages are means to end, where the end you reach is
         | significantly affected by the means you used to get there.
         | 
         | - Using Haskell means you can model your domain more precisely
         | and have higher correctness guarantees.
         | 
         | - Using Rust means you get memory safety while maintaining the
         | speed of C++, where the vast majority of vulnerabilities are
         | memory safety issues.
         | 
         | - Using SQL means you can apply an optimizer on top of what is
         | essentially relational algebra over tables.
         | 
         | In all of these cases, a less effective tool could be used,
         | yes. But "it's just a tool" doesn't capture the fact that tools
         | _do_ solve domain-specific issues, and OP is not wrong to seek
         | an employer who acknowledges the value of Haskell has to add.
        
           | ironman1478 wrote:
           | I get all that, but it still feels backwards a bit? I work in
           | HW but I write a lot of software tools and prototype control
           | firmware (though I come from an enterprise background). I
           | generally have to write python, C++ or C (all context
           | dependent). If somebody came to me saying "I want to work in
           | C" or "Python" I'd say "so"? They should be saying they are
           | interested in solving optimization problems, image quality
           | search problems, etc. I understand Haskell is great for
           | certain use cases but that applies to every language barring
           | joke ones. Why would an employer hire somebody if they are
           | simply interested in the tool through which the problem is
           | solved not the domain itself? What signal does that provide
           | and what evidence do I have that the person will become
           | component in the domain? The way the original post is framed
           | feels backwards to me.
           | 
           | I should also add, I was one of these people that just wanted
           | to write C++ template metaprogramming all day and I had a
           | hard time find jobs due to this exact line of thinking. Once
           | I relaxed this constraint, I was able to find a new job AND
           | use the programming tools I want, assuming its appropriate
           | for the context.
        
             | smasher164 wrote:
             | > They should be saying they are interested in solving
             | optimization problems, image quality search problems, etc.
             | 
             | They are. OP has been spending 30 years _not_ being paid to
             | use the tools he wants.
             | 
             | > but that applies to every language barring joke ones
             | 
             | Some languages are far more effective for a domain than
             | others. To stretch it further than Haskell, there's a
             | reason why Verilog is used in hardware over something like
             | C. It would be enormously frustrating to work against my
             | tool to get something done. Programmers who focus on
             | "getting stuff done" in these situations are succeeding
             | despite their tools, which is commendable, but we should
             | still push to using better tools.
             | 
             | > interested in the tool through which the problem is
             | solved not the domain itself
             | 
             | Many factors play into why someone works at a company,
             | whether it's cost-effective to use a certain tool, whether
             | a tool is trendy, whether the candidate is passionate about
             | the domain, or whether the candidate is passionate about
             | the tooling. A lot of people aren't _passionate_ about the
             | domain of adtech, for example, unlike self-driving cars,
             | but they work in these areas because they like the practice
             | of engineering.
        
               | ironman1478 wrote:
               | > OP has been spending 30 years not being paid to use the
               | tools he wants.
               | 
               | You know you're right about that and I hadn't really
               | thought about what you mentioned in your post overall.
               | But it makes a lot of sense
        
         | tmoertel wrote:
         | In this case, I suspect that Mark is interested in the
         | distribution of jobs associated with Haskell as much as in the
         | language itself. Haskell shops tend to solve certain kinds of
         | problems and have certain philosophies about software. If
         | you're interested in these problems and philosophies, a good
         | way to find a job aligned with your interests is to find a job
         | writing Haskell.
        
         | fouc wrote:
         | The programming language informs the core tech stack, so the
         | programming language is more like the tool box, than the tool
         | itself.
        
         | SonOfLilit wrote:
         | Haskell is the only language I ever learned (out of dozens,
         | including Lisp and Forth) that felt like learning something
         | completely new, like none of my existing programming knowledge
         | applied. Working in Haskell means exploring a very different
         | neighborhood in design-space. It's much more of a change of
         | pace than learning about a specific layer of the stack.
        
           | Jeff_Brown wrote:
           | For me Haskell and Prolog were both like that.
        
         | eweise wrote:
         | I don't find it odd. Its actually kind of frustrating using
         | tools that make your job harder. Everything else being equal, I
         | would choose a job where I coded in Kotlin over Java since I
         | get frustrated easily with Java.
        
       | xyproto wrote:
       | Companies have a need for the application of the tools, not the
       | tools themselves, though. Just like customers don't have the need
       | for a task to be completed with a specific tool (but they might
       | be particular about the process).
       | 
       | There's a mismatch in expectations here, from programmers to
       | customers, via companies and hiring processes.
        
       | betimsl wrote:
       | I would like a job writing Clojure and/or Elm.
        
       | EGreg wrote:
       | The guy should just join Plutus Pioneers program and become one
       | of the first certified Cardano developers. Can't those guys
       | charge like $1000 an hour? LOL
        
       | mathieubordere wrote:
       | HubSpot is hiring a Haskell developer in Belgium, not sure if the
       | position is remote though.
       | 
       | https://www.hubspot.com/careers/jobs/3630647?hubs_signup-cta...
       | 
       | (I'm not affiliated to HubSpot in any way)
        
       | fortran77 wrote:
       | He can do what most Haskell folks do; write Haskell for fun, but
       | earn a living delivering pizzas or making coffee.
        
       | intellectronica wrote:
       | The Cardano blockchain system is heavily based on Haskel. It is
       | one of the largest ecosystems in this space and is growing
       | rapidly. The author can try to find work with IOHK (
       | https://iohk.io/ ), the Cardano foundation ( https://cardano.org/
       | ) or one of several other companies doing commercial or research
       | work around Cardano.
        
         | harryf wrote:
         | There's a good summary of why Cardno uses Haskell here -
         | https://medium.com/@cardano.foundation/why-cardano-chose-has...
         | - functional programming seems to have been a key influence in
         | how Cardano's approach to smart contracts is built, avoiding
         | centralized state - some insights in that here
         | https://sundaeswap.finance/posts/concurrency-state-cardano
         | 
         | Potentially Cardano could become one of the most significant
         | uses of Haskell in the wild, if it gets traction of course
        
           | foldr wrote:
           | That blog post makes a big deal out of formal verification.
           | However, my understanding is that if you really want to do
           | formal verification on a practical scale, you are better off
           | using a less fashionable language that's nonetheless had
           | orders of magnitude more investment in verification tooling
           | (such as Java).
        
       | ramboldio wrote:
       | https://wire.com/en/
        
       | ncmncm wrote:
       | I, also, would like for Mark Dominus to have a job coding
       | Haskell.
        
       | lloydatkinson wrote:
       | Honestly I'd just like a job writing code that actually benefits
       | people or is even seen by the light of day. That isn't killed off
       | by layers of mismanagement, "agile methodology", moving goal
       | posts.
        
       | mwcampbell wrote:
       | Looking for a job in a particular programming language, without
       | saying anything about the problem domain, seems weird to me. But
       | I suppose I'm unusual in that I've found a problem domain
       | (accessibility) that I deeply care about, and will cross
       | languages and platforms to work on projects in that domain.
        
       | q3k wrote:
       | Meanwhile, I left a Haskell job for a Go job.
       | 
       | Language isn't the be-all end-all of a software project. I'll
       | take a well maintained and well documented Java codebase over a
       | write-only Haskell codebase with more lines of language extension
       | imports than lines of comments.
       | 
       | Software developers who only look for jobs always in That One
       | Language freak me out.
        
         | yodsanklai wrote:
         | Agree 100%. I worked in Haskell project too, which overall was
         | fun _but_ it came with many drawbacks.
         | 
         | > Software developers who only look for jobs always in That One
         | Language freak me out.
         | 
         | Indeed, I understand personal preferences, but it's hard to
         | work with people who are religious about languages.
        
         | vjust wrote:
         | Agreed on most points there. On the flip side, I was running
         | away from That One Language (Java). I was put off by its verbal
         | diarrhea (when it came to naming classes - blame it on Spring
         | perhaps). And the gratuitous use of OOPs concepts (which I
         | attribute to being a scripter for much of my working life).
         | Perhaps it was more to do with the organization I worked for,
         | it might have been a very (toxic) culture thing that they
         | encouraged - 1) If you didn't know Java you weren't cool. 2) If
         | you didn't know Java you didn't understand OOPs. Lots of
         | companies have such culture issues over languages. Its
         | managers/leadership's job to ensure the tool doesn't become the
         | master, to the detriment of goals.
         | 
         | I've been deliberately been a slow-poke when it came to
         | absorbing languages, far from the bleeding edge within the
         | ecosystem I was in. Hasn't hurt at all. Pushing back on trends
         | (once you're 'inside' a language) means you are looking around,
         | and absorbing more of the problem (business domain).
         | 
         | If you emerge from an old-job into a new-job, and the only take
         | away is bleeding-edge language/platform features, there's some
         | richness of experience that's been missed IMO, maybe its useful
         | at early career stage, but you need to see the whole picture,
         | not just uber details about a language.
        
         | tootie wrote:
         | Yeah, I recently took a job with a language I don't really know
         | and don't really like. I'm doing it because it's for a
         | beneficial and positive product that I'm happy to improve for
         | customers.
        
         | moonchrome wrote:
         | > I'll take a well maintained and well documented Java codebase
         | 
         | I get your point but at some point the boilerplate becomes
         | depression inducing for me, I can't see myself being motivated
         | to work on a Java codebase, the language and the patterns that
         | arise from it just get in the way of solving the problem too
         | much. It's like having to do a relatively easy job but only
         | being allowed to use one hand, it becomes frustrating that you
         | can't use both hands when you see it would take 1/2 effort and
         | then I become even less motivated to work and it's a bad spiral
         | :)
        
         | porcoda wrote:
         | Same. Left it for job that doesn't involve Haskell and far
         | happier. Turns out picking jobs based on technology misses
         | other important factors like what the technology is used for
         | and how a workplace treats its people. Now I use technology I'd
         | rather not, but in a super positive environment, and I'm
         | happier than I ever was before.
        
         | blablabla123 wrote:
         | Something similar happened to me. I worked at a job where
         | someone proposed using a purely functional React framework.
         | Ironically I ended up implementing most code and everyone else
         | left eventually so I worked on it alone. People underestimate
         | how non-standard that stuff is. Nowadays I rather avoid using a
         | Functional programming language although I've seen also other
         | companies using or considering pure FP but it's usually a one
         | man army...
        
         | irpapakons wrote:
         | Yep. I wanted a job writing haskell. Got a job writing haskell.
         | It was one of the worst jobs I ever hard (for non-haskell
         | reasons). Team dynamics, culture, how good is a manager, how
         | overengineered is a code base, how easy it is to feel valued
         | and given responsibility. There's so many more important things
         | than the language that now I actively don't care at all. Plus,
         | I think these elitist programming languages attract more jerks
         | so I'd rather avoid anything too niche and go for a Go job or
         | something.
        
           | rstarast wrote:
           | I'm not that sure about "for non-haskell reasons".
           | 
           | Haskell seems to select for people who enjoy going off on
           | puzzling tangents, and it seems like it takes so much
           | learning that for many, meta skills such as good engineering
           | and communication practices fall by the wayside.
        
         | pyrale wrote:
         | > Language isn't the be-all end-all of a software project.
         | 
         | Certainly not, but at some point you make a move to scratch an
         | itch. Sick of doing typeless python with runtime issues
         | everywhere? A typed language may be a good break from that.
         | Annoyed of Haskell in a company where people care more about
         | their exceptions than about the business? Maybe you'll do the
         | opposite move.
         | 
         | It's not so much about doing things the one right way as
         | experimenting with what makes you productive and happy. And if
         | people find they're comfortable doing that one thing only, good
         | for them.
        
       | haskellisameme wrote:
        
       ___________________________________________________________________
       (page generated 2022-02-08 23:02 UTC)