Betting our Startup on Clojure by Nick McAvoy

September 14, 2022

In the presentation Betting our Startup on Clojure by Nick McAvoy, he shares his experience of using Clojure for their startup, Crossbeam. McAvoy discusses his background in physics and programming, and how he transitioned from Scala to Clojure. He also talks about the importance of choosing the right language for a new startup and the benefits of exploring less mainstream options like Clojure. Nick shares Crossbeam’s journey from using Python to transitioning to Clojure due to Python’s limitations in complexity and scalability. He introduces the concept of “Goldblum” as a measure of complexity and discusses the impact of programming languages and team size on productivity. Nick emphasizes the importance of considering language choice, team size, and technology architecture to optimize team productivity and operational efficiency. He also shares their experience of transitioning to Clojure, the benefits of using Clojure for hiring and team collaboration, and the advantages of using simpler languages like Clojure for larger teams.

Betting Our Startup on Clojure: A comprehensive overview

The Journey to Clojure

Background and initial choices
Nick McAvoy begins by discussing his background in physics and programming, and his transition from Scala to Clojure. At Crossbeam, he found himself in a managerial role, which led to unique team dynamics and naming conventions like “Pinto Beams.” Nick credits the founder and CTO, Buck, for driving the technical decisions, emphasizing the importance of choosing the right language for a startup.

 

Challenging industry norms
Nick discusses the common tendency for startups to choose widely-used languages like JavaScript, Python, or Java. However, he highlights the potential benefits of exploring less mainstream options like Clojure. Drawing inspiration from industry thought leaders like Steve Yegge and success stories such as Paul Graham’s experience with Lisp, Nick advocates for considering alternative technologies that may offer unique advantages, particularly for specialized software solutions.

 

From Python to Clojure

Early stages and growing pains
Initially, Crossbeam used Python for their prototype due to the CTO’s familiarity with the language. However, as the company expanded to around 100 employees and over 30 engineers, they encountered Python’s limitations in handling complexity and scalability. This realization led them to reconsider their choice of language, emphasizing the importance of managing complexity to maintain efficiency and productivity.

 

The Goldblum concept
Nick introduces the concept of “Goldblum,” inspired by Jeff Goldblum’s character in Jurassic Park, as a measure of complexity. Using a spreadsheet model, he analyzes how the productivity of engineers is affected by language complexity and team coordination costs. This model helps evaluate the impact of adding engineers on overall productivity, highlighting the need to balance individual productivity gains with coordination costs.

 

Benefits of Clojure

Productivity and scalability
Nick discusses how the choice of programming language impacts team productivity and coordination. He highlights the challenges of managing large teams and the benefits of splitting into smaller groups to handle complexity. Microservices architecture and using Clojure for managing operational overhead are key strategies for optimizing productivity and efficiency.

 

Transition and rewriting
Crossbeam gradually replaced Python with Clojure for critical subsystems, eventually leading to a full rewrite of all Python code. Despite initial challenges with interoperability, the team found the migration process rewarding. The transition to Clojure improved code comprehension, productivity, and overall system manageability.

 

Hiring and team building

Attracting talent
Contrary to initial concerns, hiring engineers familiar with Clojure was relatively easy. As the team grew, they successfully onboarded engineers with varying levels of experience in Clojure. The language’s simplicity and the supportive community contributed to positive hiring and retention outcomes. Outsourcing to Clojure developers also proved beneficial for Crossbeam’s growth.

Enhancing collaboration
Nick emphasizes how Clojure has improved team collaboration and system complexity management. The language attracted top engineering talent and fostered a productive and positive team environment. The “gold blooms matrix” concept helps compare different programming languages, reinforcing the importance of making strategic choices for long-term development rather than following popular trends.

 

Reflections and community growth

Simplifying decisions
Nick discusses the benefits of transitioning from complex languages like C, C++, and Java to simpler ones like Erlang and Clojure. This shift has made decision-making easier for developers and maximized productivity, especially in larger teams. Splitting into smaller teams has improved efficiency and maintained team familiarity.

Community and future prospects
The growth of the Clojure community in their city reflects the language’s increasing adoption and success. Nick concludes with a positive outlook on Clojure’s potential for continued success as more startups and developers recognize its benefits.

 

Conclusion

Nick McAvoy’s presentation provides invaluable insights into the strategic decision to adopt Clojure at Crossbeam. By embracing a niche language, Crossbeam has navigated challenges, optimized productivity, and built a strong engineering team. Nick’s experiences underscore the importance of considering alternative technologies and making conscious choices for long-term success in the startup landscape. For startups exploring programming language options, Crossbeam’s journey offers a compelling case for the advantages of betting on Clojure.

 

Additional resources

Check out more from the MeetUp Func Prog Sweden. Func Prog Sweden is the community for anyone interested in functional programming. At the MeetUps the community explore different functional languages like Erlang, Elixir, Haskell, Scala, Clojure, OCaml, F# and more.