Clojure as a Competitive Advantage
6 months ago I co-founded a startup and based my entire tech stack on a programming language invented in 1958. Today due to the help of a niche community we have launched the MVP, been accepted into an accelerator and are hiring. Follow me if you want to know what happens next.— Simon El Nahas (@simonelnahas) October 10, 2021
In April 2021 I co-founded our startup MoveNation as the CTO. Our mission is to help people find a better place to live for less. We want to do that by creating a search engine that can crunch through massive amounts of data that are relevant to deciding where to live and match it to each person's lifestyle preferences and financial situation.
This is a very big and complex problem that will require every ounce of technical skill to accomplish.
Embarking on this journey I took time to think and I consulted people that were already successful. I wanted to decide on what tools I needed to pack so to increase our leverage and even give us a competitive advantage. More concretely I had to choose our tech stack.
What is Clojure?
In my blog post Why You Should Learn Clojure I explore how Clojure made me productive and why it is a very powerful and productive language. In deciding the tech stack of a startup there are more considerations to take into account than what made me productive, for example hiring.
As mentioned in my previous post one of the reasons, I wanted to learn Clojure was because it was a top paying technology. But at the same time, one might argue that this is exactly why I shouldn't base my startup on it. Since we will pay a premium for hiring Clojure developers. But that would be faulty reasoning since people are not equally productive in all languages. Programming languages vary in power and so even though we would potentially pay more for a Clojure programmer it would still be cheaper to develop the same program, ultimately requiring less funding.
Potential trainable hires will be betting their career on learning a programming language. So we will need to have convincing arguments explaining why Clojure is a sensible choice. If they are eager to learn it we can then provide the necessary training for them to be productive. In this talk, Marcus Rydberg Founder & CTO of Luminare argues that since Clojure is such a small language, it is easy to learn.
The developers already within this niche are very passionate about the language. There are a lot of people using it for hobby projects, which hope to one day spend their whole day developing in Clojure. It might even be easier to hire within the community since developers aren't as picky with other job factors as long as they can use a language they like. Many companies struggle with hiring developers since their only lever is cash compensation. Using a niche technology and leveraging its community might be a viable strategy for overcoming this struggle. Especially if you can manage to choose a growing community like the Clojure community and benefit from its growth as you scale.
[...] the most accurate measure of the relative power of programming languages might be the percentage of people who know the language who will take any job where they get to use that language, regardless of the application domain.
An additional benefit of the Clojure community is the fact that Clojure developers are often quite senior. Clojure is seldom someones first language since one often needs to experience the shortcomings of other languages to be motivated to overcome the steep but short learning curve of Clojure. This makes the average Clojurian (a person within the Clojure community) quite knowledgeable. Having a high average level of knowledge among employees is very beneficial in running a company.
The backup plan
Beating the averages.
In Beating the Averages, Paul Graham describes his reasoning behind choosing Lisp as the core technology for a startup. His key ideas are: The average startup fails, so don't be average. Using a different language could be a core differentiator against competitors. Secondly he describes the Blub Paradox: If Lisp is so great then why doesn't everyone use it? It is because programmers can only compare the power of programming languages they know. Learning new languages requires changing a habit of thought, which is a very slow process. As a result, it will also take a long time before we adopt the most powerful one.
Successful startups using Lisp
If this language is so powerful and it has existed for so long there must be a lot of great examples of companies who have used it successfully. Despite the Blub Paradox there are already great examples and here I have listed a few of them. A surprisingly similar story unfolds for each of them. Often it is a small startup beating a much larger company in their own game. The Lisp startup is mentioned last.
Google Slides vs PowerPoint vs Pitch
Evernote vs OneNote vs RoamResearch
MS Word vs Google Docs vs Grammarly
Asana vs Shortcut (formerly Clubhouse)
Expedia vs ITA (now Google flights)
You can write little glue programs in Lisp too (I use it as a desktop calculator), but the biggest win for languages like Lisp is at the other end of the spectrum, where you need to write sophisticated programs to solve hard problems in the face of fierce competition. A good example is the airline fare search program that ITA Software licenses to Orbitz. These guys entered a market already dominated by two big, entrenched competitors, Travelocity and Expedia, and seem to have just humiliated them technologically. The core of ITA's application is a 200,000 line Common Lisp program that searches many orders of magnitude more possibilities than their competitors, who apparently are still using mainframe-era programming techniques. (Though ITA is also in a sense using a mainframe-era programming language.) I have never seen any of ITA's code, but according to one of their top hackers they use a lot of macros, and I am not surprised to hear it.
To elaborate on the last example, since the name might not be commonly known anymore: ITA was sold to Google for 700M USD in 2010.
It is important for us that Clojure can scale with our demand, since we expect to eventually need to handle demand close to the sum of all real estate sites. Luckily there is no need to worry since Clojure is also used in bigger companies such as Facebook, Amazon, Apple, Netflix, Google, DBS Bank, Deutsche Bank, and many more. For the curious check out more success stories on clojure.org or lisp-lang.org.
Contrarily to many other programming languages the community doesn't live on StackOverflow, but rather on the Clojurians Slack. Here senior developers often respond in less than 10 minutes. The is again one of the great benefits other languages don't offer. It has already helped me tremendously getting started and solving problems and I'm sure that our company could benefit greatly from this even as we get more experts in-house.
We will encounter many unsolved problems in helping people find a better place to live for less. So we should use the sharpest tools at our disposal that will give us the greatest leverage in comprehending and solving the problems with high productivity. Clojure could be the language that delivers on these promises and therefore giving us a competitive advantage. This is why I choose Clojure for our startup–MoveNation.
Thanks to the following great people for reading drafts and providing comments on this: