Hacker News new | ask | show | jobs
by kolme 2542 days ago
Because it's a business risk.

- It's very easy to find JS programmers. There's a _lot_ of them. But programmers proficient with pure functional programming languages are harder to come by.

- JS is natively supported by browsers and it is pretty much guaranteed that the code you write is going to work for ever. Elm on the other side, who knows? It might lose steam and go into support mode, or drop support, or maybe they introduce breaking changes in a future version. JS is a much safer bet.

- Writing Elm does not guarantee a good polished product. You can write bad software in good languages and vice-versa.

That being said, it's only a risk. Maybe your team is more comfortable with Elm and they get more productive. Maybe the language design makes easier writing code with less defects. Maybe it actually gives you an edge.

It is hard to say if Elm brings value to your business. It most likely depends on what kind of a business that is (web agency than cranks 3 visit-card websites a day? Or is it one developing a complex app?)

In any case, managers get very nervous about languages that are not mainstream. And they do have good reasons.

1 comments

Thanks for replying.

> But programmers proficient with pure functional programming languages are harder to come by.

I used to get a similar argument when pushing Python over Java, and my counterargument is the same: I wouldn't hire a JS programmer who was afraid or unwilling or unable to learn Elm. I would bet that any normal person smart enough to solve Sudoku problems could learn Elm, I wouldn't make that bet with JS/CSS/HTML.

> It might lose steam and go into support mode, or drop support, or maybe they introduce breaking changes in a future version. JS is a much safer bet.

But who is using just JS these days? Frameworks and transpiling are the order of the day, no? Same argument applies to them. And JS is a moving target too. As for "breaking changes", well, it is just version 0.19 so far. Once they hit 1.0 I would bet on Elm being more stable than JS+Whatever.

Weigh this against zero front end bugs. That's a staggering (if hard-to-quantify) cost savings.

> Writing Elm does not guarantee a good polished product. You can write bad software in good languages and vice-versa.

Yeah but that's not an argument in favor or against any particular language, and in the specific case of JS vs Elm I think it's clear Elm wins. If your developers are truly crap then, yeah, Elm won't save them. But then you also have bigger problems than what tech stack to use, eh?

> I wouldn't hire a JS programmer who was afraid or unwilling or unable to learn Elm.

Would you hire an Elm programmer who was afraid or unwilling to learn proper JS?

Well...

If you started with Elm then JS/CSS/HTML+Frameworks|Transpiled-langs et. al. would, I imagine, seem like a massive amount of stuff to learn, eh?

I think the Elm-first programmer would be right to ask, "What's the payoff? What awesome new powers do I gain, impossible with Elm, as reward for all this blood sweat and tears?"

(Elm is wildly easier to debug than the status quo stuff. The compiler is awesome for that. So the hypothetical Elm-first programmer has to learn not just the status quo stack but also how to debug it!)

So, again, it seems to me like it behooves the cost-conscious programmer to carefully examine the cost/benefit ratio of non-Elm-implementable features in light of the availability of Elm.

I am presupposing, like I said above, that you can take pretty much any member of the Sudoku-solving public and train them up in Elm in a few weeks. Even paying them at parity with JS devs, the time and effort savings of Elm vs. JS et. al. would be substantial, I believe.

(Personally, I would want at least two or three people on the team who knew what was going on under the hood.)

So you're ok with an elm programmer not willing to learn JS, but not ok with the reverse. That just sounds like good old fashioned tribalism; and personally I'd never hire a tribal programmer, whether that tribalism is about a great language, or the latest coolest JS framework.

What I'd look for is an open, sharp mind. Willing and happy to learn new things and paradigms, even those that go beyond their comfort zones, whether it is JS, Elm or Java. Someone to whom programming languages, frameworks and libraries are just TOOLS to accomplish a certain goal, and not part of their identity.

I'm not sure where you're coming from, but when I'm looking for a job, I pay attention to the tools that companies have picked, and if I get the chance to ask them, why. A company that picks good tools is a lot more attractive to me. All other thigns being equal, if I had to choose between a company that used JS, and one that used JS and one that used Elm, I would prefer the Elm one. I've never written a line of Elm before.

I'm willing and happy to learn new tools. I'm happy with hiking in flip-flops if that's all that's available, but I'd certainly choose hiking boots if given the choice. I suspect most "good" developers have the same attitude.

> I'm not sure where you're coming from, but when I'm looking for a job

We are discussing the flipside of that: looking for an employee/teammate. And I agree, a company that uses better tools is always more attractive.

> would prefer the Elm one. I've never written a line of Elm before

If you've never written a line in it before,how did you decide that its a better tool?

> So you're ok with an elm programmer not willing to learn JS, but not ok with the reverse.

That's not exactly the spirit of what I meant, but, yes.

> That just sounds like good old fashioned tribalism

I can't really control what it sounds like to you, can I?

My whole point is that Elm is (or one day soon will be) much superior to JS et. al. This is a cost/benefit analysis, not tribalism. (I'm not an Elm fanboy. I don't actually like it that much, in fact.)

It's puzzling that more JS programmers don't adopt Elm.

It's reasonable for an Elm developer to ignore JS to the extent possible.

That's the point of Elm, eh?

> What I'd look for is an open, sharp mind. Willing and happy to learn new things and paradigms, even those that go beyond their comfort zones, whether it is JS, Elm or Java. Someone to whom programming languages, frameworks and libraries are just TOOLS to accomplish a certain goal, and not part of their identity.

Sure! Me too. But now I can make the scarcity argument, no? And you've got to pay those folks well, eh?

I'm postulating that you can take normal people (smart enough to solve Sudoku) and have them productive in Elm within a month or so. You probably would not have to pay them as much as an equivalently-productive JS programmer, and certainly not as much as the kind of person you described.

Again, I'm talking about the business value of a given software production tool not the entertainment value or the personal-growth value for the devs.

> My whole point is that Elm is (or one day soon will be) much superior to JS et. al. This is a cost/benefit analysis, not tribalism.

I'm sorry, but your enthusiasm for Elm might be blinding your reasoning. JS is an EXTREMELY flexible languange. Open and malleble to both experts and newbies alike. Open to all styles and paradgims of programming including object and functional, which is what makes it possible to be the worlds most compiled to languange (https://github.com/jashkenas/coffeescript/wiki/List-of-langu...). Elm comes nowhere close to beating the JS cost benefit analysis.

In the end, the business value always wins out. Elm, started in 2012 is even older than react, and would've took of long ago if it had any business value.

> It's puzzling that more JS programmers don't adopt Elm.

JS developers come from diverse backgrounds (expert, newbie, functional, object, procedural etc). The ones that like elms approach will adopt it, those that don't will use a different style/compiler/transpiler; and it all ends up as JS. That's flexibility at work.

Also I want to throw in that learning a new paradigm (Elm) is something else entirely than going from one imperative language to another one.
In all fairness the functional paradigm isnt exactly all too hard to grasp (when it comes to what you need to be effective at least, you dont need to understand what a monad is, I still dont!). I started learning Clojure completely cold going through Exercism and it took me maybe 2 weeks of doing a problem a day (not much work at all) before I felt like I started to "get" FP. In fact, I would say it's even easier in a lot of cases because FP is a much "purer" skill set- any imperative language still uses functions, and arrays, and switch statements, and overloading. In FP, you have all of those familiar concepts (just presented in a possibly different way) but you dont need to worry about how classes work at all, or even loops in some cases!
What most people do not realize, is JavaScript was designed as a functional language, with a C-like syntax. When I talk about learning proper JS, I mean getting back to its functional roots, because that where it really shines.
If you gave people the chance to learn you would find plenty of candidates. If you look for developers with elm experience you run into supply issues.
If you're open to remote hiring, I highly doubt it, I dont know much about elm (except that the people using it really like it) but the argument is one I've heard before with elixir. Hang out in the elixir slack or a FP discord for a day/week and you'll notice a massive amount of people taking about how much they like the language and wish there was somewhere hiring that used it. The people are definately willing.
No bugs? Impossible.
I think they meant zero runtime errors.
> No bugs?

Yes. If it compiles, it works.

> Impossible.

No.