Tech
3
mins read

Why do we choose Clojure

Clojure is a functional programming language, written for those who seek simplicity. The combination of a better way to build and hire top talent can help a company to move faster.

We started IPRally with Clojure because of my personal love story with the language. Before IPRally, I was working as a developer in Adtile, working with a globally distributed analytics pipeline. We had the code organized in Clojure microservices, and the crazy thing was that the code was easy to understand. Not only that, it was easy to modify. We had tests for the microservice functionalities, but not for the finer details. Then without changing the tests, you could fearlessly modify the solution, refactoring the code into something comprehensible. Because the language is so powerful, such high level tests can be enough.

Data is kept in simple format. When you can understand the data, the code makes more sense too.

What is this language

Clojure is a modern reincarnation of Lisp, an ancient language already specified in 1958. In fact, the original Lisp is the second oldest high level programming language after Fortran. It was favored especially among the artificial intelligence researchers. Clojure, the Lisp of today, is often used with web development, with integrations to both Java and JavaScript ecosystems. Lately there has been some movement towards the AI roots too with support for Python interop and Clojure data science libraries like Deep Diamond.

You don’t usually learn Clojure as your first language, nor do you accidentally end up writing Clojure in the industry. That’s why studying it tends to be a conscious choice, and that’s why the Clojurians tend to come with some seniority, and are among the highest paid programmers.

We use ! in the end of function name if running it may have side effects. In this case, you are the machine.

Simple > easy or safe

At the end of the day, programming is mostly about building. There certainly are difficult challenges, e.g. natural language understanding, but mostly we developers focus on building systems in a maintainable way. And it’s not just about technical debt. Systems can be built in endlessly different ways, which of most eventually slow you down and cause suffering. When you compromise your solution slightly with every decision, you cannot fix it with just some refactoring. Building in a maintainable way is crucial for a product company - it eventually leads to a faster development speed and allows scaling up the organization.

Clojure opts for simplicity. As a comparison, Ruby is a language that tries to make things easy. But the Clojure way is to care less about how fast you can code, and more about minimising magic. Rich Hickey's classic presentation on the subject comes recommended. Other languages like Java or Haskell choose safety, with type systems for data. With Clojure, the responsibility for creating safety nets is left for the developer. Advantage? In good hands, this can avoid complexity. Here is an example how 441 lines of idiomatic Java become 58 lines of Clojure.

The right thing to do, even if it’s hard

Aiming for simplicity makes one respect craftsmanship. No technology guarantees a simple solution. There are always more ways to create a mess than to find something elegant. Simple is hard, and we still choose simple. In the long run, a simple solution is more maintainable and safer than something more complex. 

You surely can create a good solution with any moderately sensible technology. In the end of the day, developers matter more than technology or the processes, and the main advantage of Clojure comes from this. The developers who love programming and go the extra mile for learning a rare language are often pretty good ones. We met with two of the earliest IPRally team members, Juho Sepänmaa and Sebastian Björkqvist, in the Helsinki Clojure meetups. Even though Sebastian ended up working with deep learning and Python, Clojure helped once again to spot a top talent.

The syntax for figuring out the good startups has never been simpler.

We are building a tech organization with foundations in Clojure philosophy. We have a position open for Clojure developers. You can also just send me an email at juho@iprally.com.

Juho Kallio
January 29, 2021
5 min read