Hacker News new | ask | show | jobs
by beiller 1354 days ago
I worked at a startup that was built on Clojure. It had trouble finding developers for reasonable salaries at the early mid stage. They decided to switch the stack to python at that point. Just an anecdote!
3 comments

> for reasonable salaries

I think this is the key here. Clojure developers are expensive (see the Stack Overflow charts for how being a Clojure dev essentially guarantees a great salary) — but that's not because of them being Clojure developers, but rather because of them being more experienced, knowledgeable, and flexible than your "average" developer.

If you start a business and use Clojure, you should expect to hire more expensive developers. You will, however, need fewer of them, so this might all balance out in the end, especially as we all know that teams don't scale infinitely.

They are expensive purely because they are a smaller pool. I doubt they are automatically more capable. I did work with many and now write clonjre myself. Doesn't make me, or them automatically better devs imo!
They aren't automatically more capable, it's just a well known and frequently noticed fact that Clojure tends to attract more senior developers, and the community is very senior dev heavy compared to other language communities.

So of course that is interesting, probably says some important things, and moves the average salaries up as well. Everything points to "Clojure tends to attract some subset of better devs" rather than it making them better.

There are clearly also effects from the small pool of available candidates, the high output of experienced Clojure devs, etc but generally being in a smaller ecosystem doesn't drive prices up.

Building a company in Python feels like a bet against yourself ie the company/codebase will never get big enough that using Python (lack of static typing etc) will ever be a problem
It's pretty easy to enforce static typing in python these days. mypy and pyright are both pretty mature.
The problem is that coverage of typing in third party libraries is not that high yet, so it’s not really possible to enforce typing in a thorough manner.
I used mypy in 2019, and it felt like duct tape on python at best.
In monoliths sure, but if you’re building services that are compact and tested it’s less of an issue.
Types are tests run by the compiler. You shouldn't avoid testing, just let the compiler do it for you.
I’m aware. Before Python I wrote primarily in Scala and I do Rust on the side. Good luck hiring at scale for those without either offering a really interesting product to work on or lots of $$$. Even then, still easier to hire for Python.
Just as the other commenter says, types are half the testing done for free which is a massive improvement.
The only code base that wound up being unmaintainable in that particular startup was the Clojure code base. I guess my point is no matter which language you are using, they all suffer from aging as they grow in size and addition of maintainers over time. The python code base was all incorporating mypy into the build / deploy pipelines and it worked quite well in my opinion. I am a huge fan of the recent additions to python and the work done there for static typing like mypy, pydantic, etc.
I'd take that bet any day. At the rate the language is improving, there'll probably be a good Python static optimizing compiler before its lack is a problem.
I started writing Python at work again after not using it for many years and was surprised at how useful type definitions are in modern Python. The notation is slightly awkward but it works well enough to provide a lot of the maintenance benefits of static types.
If you use Python and you aren't aware of its tradeoffs, yes it is going to bite you.

Dynamic typing and the lack of a formal compilation step are great for productivity, but they come at a cost. You need a proper CI pipeline to run linters (granted, you need that in statically typed languages too) and, most importantly, you need to write tests. Sure, you need to write tests for any language, but not having them for languages like Python is going to bite you that much harder.

I've seen pretty large Python codebases that worked just fine. And smaller Java codebases that were unmaintainable.

With GitHub Actions building a solid CI pipeline has never been easier. I built one with linting, tests, coverage and packaging to ghcr in an hour this weekend for Go. Python would have been very similar.
I don't know how any non-FAANG companies in the bay area hire non-junior developers. I have 4 kids and the difference in mortgage payments alone for relocating there is well into 5 figures per year.