Live data from Hacker News

Building a Startup on Clojure

wobaka.com

31–40 of 215 posts

Re: Building a Startup on Clojure

#31
Besides being fun for sure because you can use whatever you want for your own stuff I don't see what's special about clojure here. They are using react (behind a wrapper), IME, clourescript is not worth the hassle. On the server they are using ring/compojure which is similar to js/express, python/flask that can get the job done equally well in this case. The story would be more interesting if they were using something like datomic instead of postgres since datomic is were clojure could differentiate itself.

Keep in mind that they have to juggle between almost four different languages, Java, Javascript, Clojure and Clojurescript, almost because there are differences between Clojure and Clojurescript. Instead of for example just using one language: JS.

Re: Building a Startup on Clojure

#32
post #8

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!

> 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.

Re: Building a Startup on Clojure

#33
post #8

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!

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.

Re: Building a Startup on Clojure

#34
post #31

Besides being fun for sure because you can use whatever you want for your own stuff I don't see what's special about clojure here. They are using react (behind a wrapper), IME, clourescript is not worth the hassle. On the server they are using ring/compojure which is similar to js/express, python/flask that can get the job done equally well in this case. The story would be more interesting if they were using somethin…

> clourescript is not worth the hassle

ClojureScript is one of the main reasons why Clojure makes sense in my business. I can use the same language and share the same business logic code between the server and the browser app. That's huge!

Also, I avoid a load of problems related to communication and serialization, because the native serialization format is EDN, e.g. Clojure data structures. There is no need to adapt your data structures to the limitations of, say, JSON.

Re: Building a Startup on Clojure

#35
post #29

Echoing some of the other posters here: Clojure is fantastic, hiring (several) Clojure developers is hard. Conversely, you can also get to the end of your roadmap quickly (Clojure being great) and end up overstaffed. There's a different line to walk with languages like Clojure. Source: I walked this line.

Wouldn’t these two average each other out long term?

Re: Building a Startup on Clojure

#36
post #17

Earlier quoted context omitted.

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.

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.

Re: Building a Startup on Clojure

#37
post #34
post #31

Besides being fun for sure because you can use whatever you want for your own stuff I don't see what's special about clojure here. They are using react (behind a wrapper), IME, clourescript is not worth the hassle. On the server they are using ring/compojure which is similar to js/express, python/flask that can get the job done equally well in this case. The story would be more interesting if they were using somethin…

> clourescript is not worth the hassle ClojureScript is one of the main reasons why Clojure makes sense in my business. I can use the same language and share the same business logic code between the server and the browser app. That's huge! Also, I avoid a load of problems related to communication and serialization, because the native serialization format is EDN, e.g. Clojure data structures. There is no need to adapt…

If using the same business logic is one of the main reasons, why not JavaScript / TypeScript?

Also, what are the limitations of JSON that EDN handles better?

Re: Building a Startup on Clojure

#38
For me, the killer feature of Clojure is "REPL driven development". The ability to get rapid feedback as you build things up is incredible. I'll make a comment form and evaluate expressions within it to try things out as I go. By the time I've written any reasonably complex function, all of the pieces have been tested on various examples. Once I'm done, the comment form leaves a helpful record of my thought process.

If you're wondering what's so great about the Clojure repl (and other lisp repls) in particular, the thing is that you never have to actually type something into it. You can run evaluations from the code file itself. The structure of lisps makes it clear exactly which code you want to evaluate. To do this, I use the excellent CIDER package for emacs. I understand Calva for VS Code and Cursive for IntellJ offer similar functionality.

Here's a good talk on what this looks like:

https://www.youtube.com/watch?v=gIoadGfm5T8

Re: Building a Startup on Clojure

#39

Earlier quoted context omitted.

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.

Re: Building a Startup on Clojure

#40

For me, the killer feature of Clojure is "REPL driven development". The ability to get rapid feedback as you build things up is incredible. I'll make a comment form and evaluate expressions within it to try things out as I go. By the time I've written any reasonably complex function, all of the pieces have been tested on various examples. Once I'm done, the comment form leaves a helpful record of my thought process.…

I kind of agree with you. I used to work with Common Lisp in a Desktop App (Nyxt browser). I had some fun playing with Racket. And I love Emacs. So, I am already into the Lisp idea. But, I was kind of disappointed with Clojure which is new in my life and has been used in my current job. Maybe you have a backend bias in your testimony?

I have been working with ClojureScript (re-frame and reagent) on front-end stuff and, unfortunately, the REPL does not seem to help me that much on my workflow. I miss the REPL driven development, by the way... The real "interactive programming" seems to happen on Chrome Dev Tools + Browser's reactions to Chrome Dev Tools tweaks on the UI + (lastly) changes on the source code via the editor (Emacs in my case).

Namespaces as prefix of invocations on the REPL are not that trustworthy on ClojureScript, apparently. It could also be that I am a noob and I missed something, so... How do you feel about ClojureScript?

Post reply on HN