Articles Ruby Team Funding Circle Fintech Clojure Tech Expertise Tech DNA

Technology stack evolution: expanding from Ruby to Clojure

Published on December 3, 2024
Technology stack evolution: expanding from Ruby to Clojure

In the fast-paced world of fintech, technology decisions can make or break a company's ability to innovate, scale, and compete. When Funding Circle, a peer-to-peer lending platform that has lent over $500 million to more than 5,000 companies, decided to expand their tech stack from Ruby to include Clojure, it wasn't just about adding another programming language—it was a strategic decision with far-reaching implications. 


Let's dive into the technology journey that helped Funding Circle scale their platform while maintaining the agility needed in the financial services sector. 

The starting point: Ruby's role in Funding Circle's success 

Like many innovative startups, Funding Circle initially built their platform using Ruby, leveraging its readability, clean syntax, and robust ecosystem that makes web development remarkably efficient. 

Ruby's advantages are well-documented: 

  • Quick development cycles 
  • An expressive, developer-friendly syntax 
  • A vibrant package ecosystem 
  • Strong community support 

As Denislav Naydenov, a Tech Lead at Funding Circle explains:

Ruby is easy to read and write object-oriented language. It has an awesome package system and tools which make web development extremely easy. It is widely used and newbie-friendly.
Denislav Naydenov
Tech Lead, Funding Circle team

For a fintech startup moving fast to capture market share, these qualities were invaluable. However, as Funding Circle grew exponentially, new technical challenges emerged. 

The turning point: when scaling demands new solutions 

By 2015, Funding Circle was processing millions in loans and managing complex financial data flows. They faced new requirements: 

  1. Processing high volumes of financial transactions with absolute reliability 
  2. Handling complex data aggregation across multiple sources 
  3. Ensuring atomic updates with complete transaction history 
  4. Supporting concurrent operations without sacrificing performance 

While Ruby had served them well for traditional web applications, these new demands required additional capabilities. Enter Clojure. 

Why Clojure? The technical decision

Denislav Naydenov shares the reasoning: 

A few years ago, I was given a task to build a monitoring system that was supposed to aggregate a huge number of metrics from different sources and Clojure was a great fit for it.
Denislav Naydenov
Tech Lead, Funding Circle team

Clojure brought specific advantages that complemented Ruby: 

  • Designed for concurrency: Essential for handling multiple financial transactions simultaneously without conflicts 
  • Functional programming without side-effects: Critical for financial systems where predictability and deterministic behavior are non-negotiable 
  • Immutable data structures: Providing additional safety when processing sensitive financial information 
  • JVM foundation: Offering stability, performance, and access to Java's vast ecosystem 
  • REPL-driven development: Enabling rapid experimentation with live data 

As Denislav notes:

Clojure, on the other hand, is designed for concurrency. It offers functional programming without side-effects and immutable data structures out of the box. Clojure also features clean syntax and favors simplicity, but is way faster.
Denislav Naydenov
Tech Lead, Funding Circle team

The implementation strategy: not "either/or" but "yes/and" 

Crucially, Funding Circle didn't abandon Ruby—they embraced a polyglot approach where each language served its purpose: 

  • Ruby continued to excel for web interfaces, rapid feature development, and areas where its rich ecosystem provided advantages 
  • Clojure took on the heavy lifting for data processing, financial transactions, and systems requiring concurrency and functional guarantees 

This strategic decision allowed Funding Circle to continue leveraging their engineers' expertise in Ruby while gradually building Clojure capabilities for specific domains. 

Impact on team composition and hiring 

The expansion to Clojure had significant implications for team building: 

1. Creating specialised squads 

Funding Circle's team at Pwrteams evolved into specialised squads focused on different technology areas: 

  • Ruby engineering teams 
  • Clojure teams for financial data processing 
  • PHP squads for specific services 
  • Technical support teams 

This specialisation allowed each group to develop deep expertise in their domain while maintaining cross-team collaboration. 

2. Talent acquisition strategy shift 

Adding Clojure to the stack required a deliberate talent acquisition approach. While Ruby developers were relatively abundant, experienced Clojure developers were scarcer. 

Funding Circle adopted a two-pronged strategy: 

  • Hiring experienced Clojure developers for key architectural roles 
  • Training existing Ruby developers interested in functional programming 

Pwrteams supported this strategy by: 

  • Conducting specialised searches for Clojure talent 
  • Creating an onboarding program that helped Ruby developers transition to Clojure 
  • Establishing a mentorship system where experienced functional programmers guided newer team members 

3. Building a learning culture 

The technology expansion reinforced a learning culture within the engineering team. As Hristo Stamenov, a Senior Front-end Developer at Funding Circle team, notes: 

My time at Funding Circle allows me to expand my knowledge and explore new technical areas. I've honed my skills in Lambda functions and am currently exploring Terraforming.
Hristo Stamenov
Senior Front-end Developer, Funding Circle team

This culture of continuous learning became a powerful recruitment and retention tool, attracting developers who wanted to expand their skills while working on meaningful financial products. 

Architecture evolution: event courcing and Kafka 

The addition of Clojure enabled Funding Circle to implement sophisticated architectural patterns better suited to financial systems: 

The team is responsible for several core services which process financial data about loans, investments and repayments. These projects make use of Clojure, Kafka and Event Sourcing to secure quick and atomic updates of state which can be traced all the way back. This architecture works great for us.
Denislav Naydenov 
Tech Lead, Funding Circle team

Key architecture components include: 

  • Event sourcing: Capturing all changes to application state as a sequence of events 
  • Kafka: Providing a distributed event streaming platform for financial data 
  • Microservices architecture: Enabling independent scaling and deployment of system components 

This architecture delivered critical benefits for a financial platform: 

  • Complete audit trails of all transactions 
  • Ability to reconstruct the system state at any point in time 
  • Improved scalability and fault tolerance 

Lessons for CTOs: balancing innovation with stability 

Funding Circle's technology evolution offers valuable lessons for technology leaders navigating similar decisions: 

1. Adopt Technology for Specific Problems, Not Trends 

Funding Circle didn't add Clojure because it was trending—they identified specific technical challenges where Clojure's strengths aligned perfectly with their needs. 

Key takeaway: Start with the problem, not the technology. Choose tools that address your specific challenges rather than following industry hype. 

2. Plan for polyglot reality 

Rather than forcing a one-language-fits-all approach, Funding Circle embraced a polyglot strategy where multiple technologies coexisted, each serving the purposes where they excelled. 

Key takeaway: Design your architecture to support multiple languages and frameworks, with clear boundaries between domains. 

3. Evolve team structure with technology 

As Funding Circle's technology stack evolved, so did their team structure, with specialised squads developing deep expertise in specific domains. 

Key takeaway: Align your organisational structure with your technology architecture to maximise effectiveness. 

4. Partner for team building 

Working with us gave Funding Circle access to specialised recruiting capabilities that could find and attract scarce Clojure talent. 

Key takeaway: Consider strategic partnerships for accessing specialised talent pools, especially when expanding into technologies with limited talent availability. 

The results: technical capability driving business growth 

The technology stack evolution delivered tangible business results: 

  • Improved platform scalability to support growing transaction volumes 
  • Enhanced system reliability for financial operations 
  • More sophisticated data analysis capabilities 
  • Faster time-to-market for new financial products 

Georgi Kostov, a Tech Lead at Funding Circle, summarises the impact:

We use a wide spectrum of technologies and there is always something new to learn. The company culture and the high energy of people [make Funding Circle awesome].
Georgi Kostov
Tech Lead, Funding Circle team

Your technology evolution journey 

Every growing company faces similar decisions about when and how to evolve their technology stack. Funding Circle's journey demonstrates that technology evolution can become a powerful competitive advantage with thoughtful planning, the right talent strategy, and appropriate technical partnerships. 

Is your organisation considering a similar technology expansion? Let's discuss how building the right team can support your technology strategy

 

Write your own
success story
with Pwrteams!

Share your details in the form, tell us about your needs, and we'll get back with the next steps.

  • Build a stable team with a 95.7% retention rate.
  • Boost project agility and scalability with quality intact.
  • Forget lock-ins, exit fees, or volume commitments.

Trusted by:
and 70+ more