Vinted’s Head of Engineering: I was not a Ruby Developer Before I Came to Vinted
Meet Mindaugas Mozūras, the Head of Engineering at Vinted, the social pre-loved fashion marketplace and the most successful Lithuanian startup. Mindaugas explains to us why Ruby is the foremost programming language for a company like Vinted and gives us more insights on technologies, challenges and the ways to overcome them.
You can see and meet Mindaugas at the LOGIN Startup Fair Conference, powered by DNB. He is going to give a talk about engineering for engineering’s sake where he will discuss why technology is not the solution to one’s company problems and engineering for engineering's sake is not the answer.
Hello there Mindaugas, good to have you on Startuplithuania.com. So Vinted has been built on Ruby, which is still an exotic technology when it comes to finding talent. What was the reason behind choosing Ruby?
Ruby is loved for being a concise and expressive language. It has a huge community creating a myriad of libraries and frameworks. For those picking Ruby, all of it adds up in ability to prototype and build in a very fast manner.
When we look for developers, we don't discriminate based on the software development languages they already know. Our primary goal is to find great people, particular knowledge and skills are an advantage, but secondary. I, for one, was not a Ruby developer before I came to Vinted. Today I maintain a successful open source project written in Ruby and just last month was a guest on a Ruby Rogues podcast.
So from today's point of view, did Vinted make the right choice when Ruby was chosen?
The right one. Results speak for themselves. Vinted wouldn't be Vinted without the choice to use Ruby early on.
Alright then. Is it possible to pivot in terms of technology for Vinted-sized startups?
Not sure if we pivot, but we do add, remove and replace technologies in our stack. For example, when we decided to take our tracking and analytics solutions to the next level, we've bravely replaced (for that particular problem/solution) Ruby with Scala, Kafka and Spark.
What are the biggest challenges Vinted is facing in terms of technology? How do you overcome them?
We don't have huge technological pain points. It's more about improvements right now. The biggest challenge is to figure out where technology/engineering can provide the biggest advantage in the near-term and long-term future. And then – making choices, building and investing accordingly.
What criteria/metrics do you use when deciding on which features to develop?
We have a clear vision of our direction for the next couple of years. When we think about features, we pick those that we assume will bring us closer to our vision. It's a very human process that involves talking, knowledge and experience. We try to augment our knowledge with research, testing, listening to our members. And validate our assumptions in the easiest possible way – building just enough to know via metrics whether we're on the right track.
As far as we know, you have quite a lot of different teams. Have you got an overlapping features challenge? Also, how do you shorten the development time of features that depend one from another?
We sometimes encounter the issue of different teams trying to improve the same feature. We don't do this perfectly, but it's primarily all about communication.
We strive to be very open. For example, instead of email, our primary communication methods are Slack and our own People platform. Both of them offer a great overview of what's happening in the company for everyone. It can be a challenge not to get overwhelmed! But it's far better than the alternative. Defaulting to open greatly reduces the chance of people not being aligned.
To answer the second part of your question: our product teams are cross-functional. Mostly, they consist of a product owner, analyst, designer and developers from each platform. As such, each team has all the resources to bring the feature to our members and doesn't need to depend on other teams. In most cases, we're able to avoid teams depending on one another.
How do you perform deployment rollbacks? And how fast can Vinted perform a major bug fix release?
We have a rollback mechanism, but we haven't used it in a long while. We depend on continuous deployment, tests, feature flags, AB testing, monitoring to greatly reduce the chance of our members being affected by a major bug. Skipping tests, it takes less than 10 minutes to rollout a change in every country for our main and biggest service. It's slower than we would like. For other services, it takes a whole bunch less. We intend to split the main service in the near future, which will bring multiple benefits, including significantly improving rollout times.
See ant meet Mindaugas at the LOGIN Startup Fair. Don’t forget it’s completely free to attend – you don’t even need LOGIN conference tickets to see Mindaugas, a bunch of other speakers, 50+ startups, the Hardware District and much more!
LOGIN Startup Fair is a part of the EC initiative of Single Marker Forum.