anchor
Insights /  
Developer Happiness: Why Our Team Chooses Clojure

Developer Happiness: Why Our Team Chooses Clojure

March 28, 2024
8 min read
Clojure
By
Artem Barmin
Co-Founder
Alexandra Lozovyuk
Content Strategist
In this article
See more
This is some text inside of a div block.

Tired of unnecessary complexity, unmanaged state, and spaghetti code? Join the Clojure side! Here at Freshcode, we've embraced Clojure for over a decade now, and we couldn't be happier! :-)

In this blog post, we’ll share why Clojure became our language of choice and take you through our unexpected journey into the world of Clojure.

Clojure is a dialect of the Lisp programming language that runs on the JVM. Java has spawned several languages that utilize its virtual machine, including Scala, Kotlin, and Clojure. Designed by Rich Hickey, Clojure was created as a general-purpose functional language suitable for the same applications as Java. It was released as an open-source project in 2007.

mint
I started working on Clojure in 2005, during a sabbatical I funded out of retirement savings. The purpose of the sabbatical was to give myself the opportunity to work on whatever I found interesting, without regard to outcome, commercial viability, or the opinions of others.

Soon it was described by ThoughWorks as a "simple, elegant implementation of Lisp on the JVM" and became a favorite among developers worldwide, including the Freshcode team. Merging the flexibility and agility of Lisp with the stability and performance of the JVM, Clojure won our hearts and became one of the core solutions within the company.

What happened to Clojure in 2023?

According to the 2023 Clojure survey results, this year marks the peak usage of Clojure in the workplace, accompanied by a growing community. Clojure has been widely adopted across various industries, including finance, analytics, climate and biological science, healthcare, and startups worldwide. It is primarily used in FinTech services, enterprise software, and consumer commercial software.

What primary industry do you develop for?
Clojure 2023 Survey
Total number of developers interviewed: 2,241
Financial services / FinTech
19.81%
Enterprise software
15.31%
Consumer software
9.50%
Retail / ecommerce
9.01%
IT/Cloud Provider
5.98%
Healthcare
5.85%
Media / Advertising
5.62%
Government / Military
5.98%
Education
3.61%
Academic
3.26%
Source: State of Clojure 2023 at surveymonkey.com

According to the survey results, 10% of the interviewees (174 out of 1743) started coding with Clojure for the first time in 2023. This trend indicates that Clojure attracts newcomers, leading to a growing community that delights Clojure enthusiasts.

mint
For weeks, months — nay! — from the very moment you were born, you've felt it calling to you. At long last you'll be united with the programming language you've been longing for: Clojure!
Daniel Higginbotham
“Clojure For The Brave And True”

Why Clojure is our core expertise

Perfectly joining individual elements into a coherent whole is the highlight of Clojure. Developers call it "the most stable technology" and "a safe zone where sanity is kept alive in the world of churn and constantly pumping changes just to create 'buzz'."

As for us, Freshcode shook hands with Clojure language in 2013 for the first time, and since than these years have been an incredible journey filled with challenges, discoveries, and achievements.

Here is an overview of our Clojure development story, highlighting the most significant figures and events.:

Clojure Development since 2013
Freshcode Timeline
Freshcode timeline
www.freshcodeit.com

We embarked on our Clojure development journey in January 2013, creating our own product. It was an eCommerce platform for intelligent purchasing. The decision-making process involved choosing between Clojure and Ruby on Rails. Our founder chose Clojure due to its concise syntax, rapid development pace, and its programming paradigm.

One year later we won our first commercial client in Clojure from Australia.

By January 2015, our Clojure team had expanded to four members, and we had successfully integrated Clojure into three of our projects to address specific business needs and challenges.

2016 — throughout the year we collaborated already with three clients for education, politics, and eCommerce. The following year, we undertook a project for a biotechnology company and expanded our Clojure team to six members.

We have a very small team, and Clojure is the one tool that does it all, both the front-end and back-end.
Kalle Korhonen
Quuppa

November 2019 — another finance product in our portfolio. The team grew to 11 members, amassing a combined Clojure experience exceeding 100 years. In March 2020, we initiated a Clojure and functional programming community in our city.

In 2022, we were honored to speak at reClojure, :clojureD, and DCD22. Our team expanded further to 28 skilled developers. By 2023, we had grown to 40 members and began working with one of the largest banks in the US.

In 2024, we achieved another milestone by proudly sponsoring Heart of Clojure and launching the "Clojure in Product. Would you do it again?" podcast. Our journey with Clojure has been nothing short of incredible, filled with challenges, discoveries, and achievements.

And we’re excited for what the future holds!

Why and how to learn Clojure [developer insights]

In this section, we've shared our firsthand experience and insights from our Clojure developers. We invite you to discover how to become a Clojure developer and to fall in love with your job.

mint
Why did you choose Clojure?

The journey to Clojure started with an interest in functional programming. As is known, programming includes two core paradigms, core methods. The first one, object-oriented programming is mainstream and the other called functional programming is tasking with different unusual, non-standard approaches. The latter one is a more academic method but it already entries the mainstream programming adopting some ideas, like lambda functions and so on.

So, my story began with learning Haskel and Common LISP. By the way, it is these languages that inspired Rich Hickey to create Clojure. In general, all new programming languages are based on existing ones with adding some new things. It is like a synthesis process or a synergy. Clojure, in my opinion, is an outstanding result of such a process.

How did Сlojure web development at Freshcode begin?

I started using Clojure in 2012 having already had the experience of functional programming with Haskel and Common LISP. It all started when we decided to launch a startup in Java (cause our team was composed of Java developers) using such enterprise technologies as JSF and Spring. But after weeks of working, I had understood that progress was too slow, too many bugs, impasses, etc.

It was a good reason to switch to my functional programming experience and realize it within that startup. We decided that JVM-hosted Clojure would be a clear and suitable language for us. What started as a bit of a 'just for fun' experiment turned into Clojure becoming a core part of the Freshcode programming culture for years to come.
artem barmin
Artem Barmin
Co-founder
at Freshcode
mint
Why did you choose Clojure?

When I was working with projects using JS I wanted to switch to something new to get new knowledge, new experience, and new skills. So I started to learn Clojure, practicing it on a new project. I really liked to deal with all those endless parentheses and how it works. :-) The choice of Clojure was my sincere desire to master a part of the functional programming world.

What difficulties were you faced while learning Clojure?

Nothing was daunting during learning Clojure. You just need to understand a fundamentally new programming language with its unique paradigm. Clojure is regarded as a functional language, but it includes object-oriented programming elements that you can realize. There are several features to deal with, such as lazy evaluations or immutable data structures. They are somewhat complex concepts but nothing extraordinary.

Can you remember some funny stories that happened in the early stages?

I don't know if we can call it something funny, but there were some fails when new Clojure features and its awareness hadn't become ingrained yet. For instance, lazy evaluation, when you create a collection and iterate over it, inducing some side effects, e. g. running a command line. You are making everything correct (as you think), then waiting for the result… and nothing happens. Then you have this eureka moment: hey man, it is a lazy collection and it computes data on-demand only. But it was happening from inexperience only, it's no wonder.

Do you remember your first project on Clojure?

Of course, I remember it. There was a lot of math and data science within it. It was full of implicated things, such as macros and internal domain-specific languages that you need to deploy and check how it works. The project was large and it was quite difficult for me as the first project with using a new programming language. But it was interesting and gave me a lot of experience.
victor lytvyn
Victor Lytvyn
Team lead Clojure
at Freshcode
mint
Why did you choose Clojure?

I didn't choose Clojure, Clojure has chosen me. :-) Initially, I had another tech stack after finishing training courses, JS, and all that. I spent a week waiting for a JS project, but luckily one of our team leads offered me a new Clojure-based project and became my mentor.

Is it difficult to learn Clojure?

I think the barrier to entry Clojure for newcomers is much higher in comparison with a number of modern programming languages. Clojure is a specific language, it's JVM-based, so it would be good to know Java. You can hardly learn Clojure so quickly as JS, for example, which you can practice a month later after beginning to learn. The shortage of sources to learn Clojure may be a problem too.

What challenges were you faced while learning Clojure?

The main challenge while learning Clojure is to turn your mind around 180 degrees because the functional language implies whole other approaches to deal with the challenges. For example, immutable data. You don't overwrite previous data structures but create new ones that will be handled by the garbage collector that makes the memory free, determining only the objects that have no longer references to them. And, of course, parentheses. During the first month, you see parentheses only. :-) And for today I've already learned to look through them. Lastly, there are a lot of already existing functions but I am not sure it's too difficult to learn them.

Can you remember some funny stories that happened in the early stages?

There were some funny moments while I was starting to learn Clojure with my mentor at Freshcode. We use IntelliJ IDEA as IDE and I had to switch to it too. As an "I need to customize it all right now" fan, I quickly created shortcuts and hotkeys and was totally happy with it. Unhappy was my mentor only, cause when he was teaching me and writing something in REPL weird stuff happened. He's used to his shortcuts and they were diametrically opposed to mine sometimes. For example, he had been writing some function, when, whoa, the console was closed. Whoa, the system was rebooted. And so on. It was getting on his nerves, and I was just kind of sitting in my chair and smiling only. Finally, I re-customized shortcuts for my mentor's ones. The end. :-)
artem pohosov
Artem Pohosov
Clojure developer
at Freshcode
mint
What difficulties were you faced while working on your first Clojure-based project?

A new syntax and a new functional programming approach were the main difficulties. I mean, it was a total paradigm shift. Difficulty with syntax has resolved instantly. Literally, one or one-and-a-half weeks were needed to get used to it and, furthermore, to love it. And a functional programming approach mastering was a more challenging task. But I was lucky because a programmer that was developed a product before I had written a lot of perfect Clojure code. He'd created Clojure style guides and so on. I appreciate it a lot.

Do you remember your first project on Clojure?

It was an OpenCart-like online store. I was engaged in backend development that supported work with databases, products, orders, cost recalculation, and other basic features for the online shopping app. The only distinctive feature was that it was written in Clojure.

Can you remember some funny stories that happened in the early stages?

I can remember the development of an application for golfers to find partners for the game. The software development process was divided among the different developers from different corners of the world. I was doing a backend part. And once I found a bug in the user's schedule synchronization that had been already developed by another side of the team.

It was a feature when a user notes his free time for a game, choosing morning or afternoon in the timetable. This timetable settings inexplicably hadn't been saved after clicking the Save button. And the "best part" was that the bug had reproduced on my machine only. We were doing everything to find the problem and fix it, but all we understood was that the reason lay in the server.

Finally, it turned out that the settings were sent to the server locally. The server was accepting only understandable keys, namely English-language names of the days of the week. And when requests with Ukrainian-language names were coming, it just skipped them. The other-side dev team was passing the translated input string, that's all. Consequently, it worked on English-language iPhones only. Yes, it was funny.

What would you advise newcomers who are just beginning to learn Clojure?

The key lesson I've learned from my experience is that you'll never master something without the practical task, the practical focus. Whenever you have a task to do something, it is a matter of choice. And then if you choose Clojure to realize this task, mastering will become a much quicker and more effective process. You will focus on what you really need for the task at hand. And, in the process, you will generate additional knowledge.

As for books, I'd recommend "Clojure for the Brave and True" by Daniel Higginbotham and "The Joy of Clojure" by Michael Fogus and Chris Houser, the second edition.
volodymyr pavliuk
Volodymyr Pavliuk
Team lead Clojure at Freshcode

What is the future of Clojure software development?

Such business giants as Adobe, Apple, Facebook, Amazon, Oracle, Soundcloud, Atlassian, and even government agencies such as NASA have embraced Clojure or ClojureScript. This clearly demonstrates the relevance and competitiveness of the language, despite not being ranked at the top of the most popular programming languages lists. However, Clojure remains among the highest paid programming languages. And here you can be inspired by the success stories of various businesses that have chosen Clojure for their software development needs.

Clojure has not only introduced programmers to the advantages of functional programming but has also empowered businesses with robust, practical, and swift results. The future achievements of this language promise great potential. And in Clojure we trust. :-)

So, let's discover Clojure's capabilities and leverage its speed and reliability. Contact us via the website form or on LinkedIn for a consultation on Clojure development solutions tailored your business case.

PS: We are currently in the process of preparing the second part of our Clojure development story. Stay tuned!

FAQ

Clojure is a dynamic, functional programming language that runs on the Java Virtual Machine (JVM), and it has a strong emphasis on immutability, concurrency, and simplicity. These characteristics can make it well-suited for certain aspects of web development

Ultimately, the suitability of Clojure for web development depends on your specific project requirements and business needs.

The Freshcode team has been creating Clojure products since 2013, leveraging all the advantages of the JVM and its native support, as well as Lisp's functional features. We have released a number of apps during this time, spanning across healthcare, bioinformatics, eCommerce, utilities & energy, and other industries. We warmly invite you to explore our Clojure development projects together.

Freshcode has over a decade of proven experience with Clojure, boasting a skilled team that has successfully completed 50+ projects across diverse industries. Our commitment to innovation, deep understanding of functional programming, and community involvement make us the ideal partner for your Clojure development needs. Let's create something amazing together!

The difficulty of learning Clojure, like any programming language, can vary depending on your prior experience and your familiarity with other programming paradigms.

The basics of functional programming is often the primary challenge when learning Clojure. There are some aspects that can be a bit challenging. For example, the unfamiliar syntax can be a challenge for beginners. However, once mastered, it provides a very convenient way of coding.

Build Your Team
with Freshcode
Author
linkedin
Artem Barmin
Co-Founder

12 years in software development. Co-founder of IT agency and EdTech company.

linkedin
Alexandra Lozovyuk
Content Strategist

With a passion for technology, business ideas and storytelling, bridges the gap between technical concepts and engaging narratives. Writes catchy texts and explores design and marketing trends to find the best experiences to implement.

Share your idea

Uploading...
fileuploaded.jpg
Upload failed. Max size for files is 10 MB.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
What happens after
you fill this form?
We review your inquiry and respond within 24 hours
A 30-minute discovery call is scheduled with you
We address your requirements and manage the paperwork
You receive a tailored budget and timeline estimation

Talk to our expert

Kareryna Hruzkova

Kate Hruzkova

Elixir Partnerships

Our team scaling strategy means Elixir developers perform from day one, so you keep your product on track, on time.

We review your inquiry and respond within 24 hours

A 30-minute discovery call is scheduled with you

We address your requirements and manage the paperwork

You receive a tailored budget and timeline estimation

elixir logo

Talk to our expert

Nick Fursenko

Nick Fursenko

Account Executive

With our proven expertise in web technology and project management, we deliver the solution you need.

We review your inquiry and respond within 24 hours

A 30-minute discovery call is scheduled with you

We address your requirements and manage the paperwork

You receive a tailored budget and timeline estimation

Looking for a Trusted Outsourcing Partner?