Counterpoint: building in esoteric languages can serve as a filtering mechanism in and of itself. Given how broad the swaths of JavaScript and Java developers are, they can be much more hit-or-miss.
Counterpoint counterpoint: Esoteric languages attract PL nerds, who are much more interested in using every new/different "expressive" feature of the language than in getting business done using clear code understandable by anyone on almost any level.
True. But if you have a good well-enforced, sane style guide, then expressive powerful languages can be a good thing. If you hire devs who care more about playing with the language than delivering value then you're hiring the wrong people. You can't ditch these languages because some people are sometimes attracted to them for the wrong reasons.
I actually did start a company using Clojure. All these points are true. Yes, it helped filter candidates in the early days, and also helped attract people to jobs that might otherwise not be that interesting or competitive. It's difficult for pre-funded companies to compete with the FANG companies.
However, there were negatives. At the time the Clojure library landscape was less mature. Clojure developers would also tend to abandon projects to create "the next best version" which made migrating and keeping up with the libraries of the day difficult. Most of the libraries were very rough around the edges too. On the other hand we could use any Java library which was a boon.
As the team grew, it became harder and harder to hire people in larger numbers. Especially in a single timezone. Also it became apparent that many of the people who were very happy in the early days, were increasingly less happy as we added standardization and protocol to our dev process. As some commenters pointed out many of the people attracted to Clojure liked playing with the latest and greatest, and things were "boring" when they couldn't work with whatever the latest fast changing trend in the community was. Trying to teach people Clojure also an issue. For some it was challenging, and for others, they were not really interested in using it.
It was a good learning experience, but I don't think I'd do it again. There is something to be said for using "boring" technology for the majority of your tech stack.
I must note switching from novelty to boring phase is a crisis which every growing project will come through once it starts to expand its workforce. I saw it in teams with very average tech stack many times.
Esoteric languages by-nature have smaller populations of devs. They demand higher salaries for their specialist work. This can hurt you as you scale - salaries continue to increase (secularly), and the pool of possible engineers begins to shrink within your locale.
If you hire developers based on the languages they know / think of languages and stacks as part of the long-term identity of a developer, then you should not use esoteric ones. This is well known! On the other hand significant parts of the industry don’t do the former, so they are free to do the latter.
As an example, nobody knows Go when we hire them to write it.
Hopefully WFH helps there. In my niche Scala it does. We can hire more broadly. We also hire ppl with an aptitude for Scala and keep our style simple. That helps.
Having been at a Clojure startup I can second this, despite our non existent brand we found great candidates. And teaching a smart junior developer Clojure wasn't harder than teaching people Ruby or Java. As soon as the initial lisp shock is over learning is much faster due to the simplicity (it's just data).
Good point! In my experience, you don't need to hire "Clojure developers". Look for good candidates that have worked with functional programming languages and you'll be fine. They'll get up to speed in a matter of weeks. Any flexible and educated developer can use Clojure, it's not magic.
In other words, it's not about hiring a "Clojure developer", it's about hiring a good developer.
> building in esoteric languages can serve as a filtering mechanism in and of itself.
Yes, definitely in growth periods you get the best developers migrating to it. I'd say Rust is like this now. The problem is a few years time they'll move on to the next big thing leaving you stuck. I'd think Clojure is in this spot right now.
It absolutely does, because there’s a self-selection in being interested in an esoteric langage (assuming it’s not a corporate oddball or legacy langage) which raises the average above the background of targeting “employable” langages: people going through this process show more interest in the field.
Though that doesn’t mean they’ll be more productive, and then adds hiring challenges. So the break-even is not simple.
One of pg’s early essays was on exactly that subject (“the python paradox).
As a Scala dev, I had a similar belief as you: Scala using companies seemed to have higher calibre programmers. Until my current job at a major Telecom.
The code is all Scala, but written by a bunch of ex-Java devs. I have made attempts at education, and the code is improving, but the fundamental structure of the services are bad, and there is still a lot of bad code. I am not saying this as a FP purist, some of the code would be bad by the standards of Java programming.
Bad programmers then hire other bad programmers. Because it is hard to find experienced Scala developers, they have brought in people with java experience, or big data Python programmers who claim to have some experience using Scala with Spark. I am now involved in the hiring process, and it is slow and dismal. To be fair, the kind of contractors this company hires are mediocre, regardless of language.
The features of Scala create novel ways for confused programmers to screw up, and we aren't even doing anything esoteric, like pure FP. I suspect there are some similar traps in Clojure.
When it was released, there were two camps to adopt it: people that wanted an FP, and people that wanted a better Java. Since Java went through a long period of stagnation, most of the Scala code out there is written by Java developers that just wanted a better Java.
Kotlin has stepped in and replaced Scala for "better Java" role. But this history has left a pile of crap code written by people who didn't want to use Scala.
Clojure doesn't have this problem because you couldn't ever use it as just a better version of Java.
However I wouldn't mind coding in Scala. I like OO, I like FP, I'm comfortable with expression based programming and immutability. Based on that alone - and playing with Scala in my spare time - I feel like someone with my background may be more suited than someone with a commercial Java "mutate every variable" background.
Had this exact experience trying to hire at startups for Scala/Spark. There’s only so many Scala devs to go around. It also doesn’t help that “good” Scala is highly subjective, with different levels of Scala from better Java to functional paradise.
I’ve been happily coding (and hiring) in Python for the last four years or so. Still doing Rust and some Scala at home where deadlines don’t exist and hiring is a non-issue.