Ruby
You can't talk about Stripe without talking about Ruby. It was the primary language the Collison brothers used to build the initial version of their platform, and it remains a massive part of their codebase.
While many startups of that era chose Ruby for its speed of development, Stripe's long-term commitment is the real lesson here. Instead of abandoning the language as they scaled, they invested heavily in making it work for a massive, high-reliability system. They even built their own static type checker, Sorbet, to bring greater safety and maintainability to their millions of lines of Ruby code. For developers, this shows a pragmatic philosophy: choose tools that let you build quickly, but be prepared to invest in them for the long haul.
Scala
As Stripe grew, not every problem was a perfect fit for Ruby. When the company needed to build high-performance, concurrent systems, it turned to Scala. Running on the Java Virtual Machine (JVM), Scala offers a powerful combination of object-oriented and functional programming paradigms. This makes it an excellent choice for the kind of complex, backend data processing required in a global financial network. The adoption of Scala demonstrates a core principle in Stripe's engineering culture: use the right tool for the job. It signals an understanding that while a single language can get you far, a polyglot approach is often necessary to solve problems at immense scale without compromising performance.
TypeScript
While much of Stripe's backend is powered by Ruby and Scala, the front-end—the part that developers and users interact with directly—is all about JavaScript. Specifically, Stripe is a heavy user and investor in TypeScript. TypeScript is a superset of JavaScript that adds static typing, which helps catch errors before they ever make it to production. For a company obsessed with reliability, this is a non-negotiable feature. Adopting TypeScript for its front-end experiences and developer-facing libraries like Stripe.js shows a commitment to creating robust, easy-to-use interfaces. It’s a nod to the fact that a great developer product requires as much discipline in the front-end code as it does in the back-end.
Go
When you need to build fast, reliable, and simple infrastructure, Google's Go has become a go-to language for many top tech companies, including Stripe. Go is designed for building networked services and command-line tools that are easy to maintain and performant. Its simple syntax and powerful concurrency features make it ideal for the kinds of supporting services and infrastructure components that keep a platform like Stripe running smoothly. While not as central as Ruby, Go's presence in Stripe's stack points to an appreciation for simplicity and operational efficiency. Learning Go is a great move for any engineer interested in the guts of a system: the command-line tools, the network servers, and the glue that holds everything together.
Lisp
This last one is less about Stripe's production stack and more about the philosophy that shaped its founders. Both Patrick and John Collison have a deep appreciation for Lisp. In fact, Patrick's award-winning science project as a teenager was a Lisp-like programming language he created called Croma. Lisp is one of the oldest and most influential programming languages, known for its powerful macro system and its philosophy of treating code as data. This intellectual curiosity and appreciation for the fundamental concepts of programming are arguably part of what led to Stripe's developer-centric culture. Exploring a Lisp-family language like Clojure or Common Lisp won't teach you what's in Stripe's monolith, but it might teach you how to think like the people who built it.






