Vinted welcomes Go, as a general-purpose backend programming language

Vinted is Europe’s biggest pre-loved fashion marketplace, with over 75 million registered members in 18 countries. It runs on Ruby on Rails. Ruby was the perfect choice for building applications in a rapidly changing business environment. But Ruby has its limitations, both in language design and in finding talented developers experienced with this programming language. As Vinted grows, we know we have to expand our technology stack.

There are many languages to choose from and multiple factors that need to be taken into account. Most mature languages have a rich library ecosystem, extensive IDE support, out-of-the-box tooling, and community. For us at Vinted, developer productivity was a significant factor.

Why Go?

We’ve looked into other programming languages. Each has its own advantages, and none of them are completely perfect. After weighing up the benefits, we believe that Go will complement our backend the most.

Simplicity

Simple means less time spent figuring out language specifics. Go is relatively straightforward and easy to learn, for a language in its performance tier. Go uses GC for memory management - a familiar concept in the interpreted language domain. Go’s built-in concurrency mechanism also makes writing concurrent applications easier.

Productivity

The majority of modern IDEs have support for Go language. The community is quite big, and backed by Google. Go’s package ecosystem is quite extensive as well. In addition, it is known for allowing many things to be done only in one way, like formatting code or structuring tests, which allows developers to focus on ‘what’ instead of ‘how’. On top of that, Go is strongly typed, which adds to the productivity.

Performance

While Go may not be optimised for extreme speed when compared to other native languages, it’s well known for a different performance aspect - fast compilation speed. Faster compilation means less frustration and a faster feedback loop.

We understand that Go may not have predictable runtime behaviour, but it’s a trade-off we’re willing to accept.

What’s next for Go?

In the long term, we’ll invest in tooling and infrastructure to support this language. Vinted still runs on Ruby, and will still run on Ruby in the future. Having Go in our stack fills the void when we need to develop fast and efficient, easy-to-deploy applications without sacrificing our productivity.

If you’re interested in joining our team, visit our jobs page.