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.
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?
Total number of developers interviewed: 2,241
Financial services / FinTech
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.
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

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.

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.
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.
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.
Team lead Clojure
at Freshcode
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. :-)
Clojure developer
at Freshcode
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.
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.