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.
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.
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.
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.
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 email@example.com.