At Pisano, we build a sophisticated customer experience solution for organizations. Since our motto is speed and reliability, we choose robust, scalable and productive tools to build the platform, so this is where Clojure comes into play.

Clojure is a functional programming language (a Lisp dialect), that runs on JVM (Java Virtual Machine), CLR (Common Language Runtime) and JavaScript (ClojureScript) platforms.

Choosing Clojure

Before I joined the team, there were only 2 team members with professional Clojure experience. After a radical and bold decision, we started to rewrite the dashboard in ClojureScript; therefore, teaching and guiding the team with a new language and platform.

Building a Team

In the beginning, we had some concerns because the team had to learn a new paradigm and write production-ready code. Our junior developers learned the platform and language quicker than I expected. The more they wrote in Clojure, the more they loved the language. Of course, it did not seem idiomatic at first glance.

We were very aware that it was a medium/long term investment. We had witnessed that our team members were not willing to develop upon the old codebase. I assume, as all Clojure developers might, they were fascinated by the simplicity of the language.

It is difficult to find a user familiar with Clojure and there were approximately 10 or fewer people who developed the production code like us (in Turkey). If you plan to switch to this platform, your options are to train your team or hire an international Clojure developer.

Feedbacks

The reason why we decided to proceed with Clojure was not only because of its niche and visionary language but because of its time efficiency and productibility. Therefore, taking the executive decision to implement and enhance an enterprise product, Pisano.

Our junior team members started to develop the code for production within almost 2 months .

. The team is much happier, productive and efficient . Since they’ve embraced the functional paradigm, they’ve developed different ways of problem-solving .

. Since they’ve embraced the functional paradigm, they’ve developed . We provide very fast output by responding to demands regarding bug fixes and features — (our biggest achievement).

Technical Acquirements

Recently, we have implemented our new dashboard and it exhibits much better performance compared to the old one.

We benefit from the Google Closure Compiler.

Deployment periods are shorter and easier.

Thanks to Lisp’s macros, our codebase decreased and is more meaningful on a bigger scale.

Since we serve our frontend code through JVM, we can utilize it more when compared to the old Node platform (hardware-wise).

We received lots of feedback, from our customers, regarding the performance improvement. One of our customers stated that “It runs like Usain Bolt” which made our day :).

Benchmark

Comparing old codebase (first image) and new codebase (second image):

Old codebase

New codebase — ClojureScript

What is the Next Step?

At the moment we have 2 Clojure services: Dashboard (ClojureScript) and Event Analytics (Clojure). Our goal is to move all services to Clojure and only use one language for backend and frontend to increase optimization/productivity within our development cycle.

One of the advantages which Clojure enabled is establishing a more efficient and pleasant environment to work with; especially when developing an enterprise platform, the outputs are very clear. The following list displays several well-known organizations using Clojure…

Walmart

Facebook

Apple

Boeing

Amazon

Netflix

I want to thank Pisano team; Muhammet S. AYDIN, Sabire Avcı, Burkay Durdu, Oguzhan Aydin, Ergenekon Yiğit and Alican Çelik

Note: To learn more about Clojure, you can read my other Medium post.

Ertuğrul Çetin, Software Development Team Lead @Pisano