Hacker News new | ask | show | jobs
by TeMPOraL 2570 days ago
> Also, someone using Java does not automatically make them dumb cheap programming labour, same as someone using Closure is not automatically going to be a 10xer who has memorised Knuth.

I'm not claiming that. I'm claiming that Java has a long history of enabling factory-farming software development, whereas Clojure doesn't lend itself to this style. I mean that in the sense that an army of cheap labor with shovels can, in principle, do the same job as a few trained operators in construction machines. The physics of dirt is the same, and so the job done is essentially the same - just some tools let you do it faster with fewer people. And then, the quantity (or lack of it) has a quality of its own - the more people you engage doing smaller and smaller pieces of work, the more your work becomes about coordinating people than doing the actual job.

(I'm aware that since version 8, Java is growing to be a quite decent programming language. This somewhat weakens my criticism, but not all that much.)

But yeah, I'm also claiming that ceteris paribus, the pool of Clojure developers will yield you higher-skilled programmers on average than the pool of Java programmers - simply because everyone and their dog knows some Java nowadays, and some Java is enough to make some progress in factory-farming software development, whereas Clojure is somewhat atypical and requires expanding your competences beyond the very basics.

(Or, in other words, I'm claiming that the distribution of skill of Java programmers is wider than that of Clojure programmers, with the latter having higher minimum and mean values, and comparable max values.)

2 comments

> I'm claiming that Java has a long history of enabling factory-farming software development, whereas Clojure doesn't lend itself to this style.

Any hugely popular language would have a lot of crap written in it, and a non-popular language wouldn't have "factory-farming" simply because it's not at the needed scale. So any non-mainstream language would almost by definition not lend itself to "factory-farming" development. You could also say that a lot of good stuff has been written in Java, and not as much good stuff has been written in Clojure, and conclude that Clojure doesn't lend itself to writing good stuff.

Any comparison between languages with at least 100x difference in popularity is meaningless, especially as no large bottom-line effect of programming languages has been found.

> the pool of Clojure developers will yield you higher-skilled programmers on average than the pool of Java programmers

Which matters if you're picking people from the pool at random. If not, you want to have the pool with the greater number of higher-skilled developers, not higher average. It's like saying that it makes more sense to start software companies in Finland than in the US, because on average people there are much better educated.

Does Clojure lend itself idiomatically to any style other than quick-and-dirty prototyping, though? There are real benefits to many features of Java when it comes to long-term maintainability, even though it also has some very real pitfalls at the same time (no optional values, no variant records with pattern matching, no composition-plus-delegation-over-inheritance etc. etc.).
Yes, it absolutely does. My team has projects that have been running for many years in production. They're far easier to maintain than equivalent Java projects we've done before. And there are plenty of companies, like Circle CI, who built there stack on Clojure out there. Here's a talk from Kira Systems who went from a quick and dirty startup to a 150 employee company in 8 years using Clojure: https://www.youtube.com/watch?v=u-4FiFpkPlQ
Considering Kira Systems had to resort to using Go for much of their heavy lifting, due to Clojure immutability memory overhead, I would hardly concur that this is a shining example of the benefits of using Clojure.
Over 80% of their codebase is in Clojure, but obviously it's providing them no benefit.