The flexibility and freedom of choice by using Nomad
An interview with Jan Plhák, Kiwi.com Principal Engineer
Since our childhood, we have been surrounded by books and movies that romanticize travelling. How many kids have seen themselves as one of the brave characters in Jules Verne’s novels? Traveling habits have been evolving and Multi City travel has become common and more affordable to the masses. We chatted with Jan Plhák, Kiwi.com’s Principal Engineer and Head of the C++ team to learn more about how his team is helping customers to build the journeys of their dreams.
Jan, you’ve joined the team quite some time ago. How did you learn about Kiwi.com? And what was your motivation to join?
Shortly after Kiwi.com (former Skypicker) had been founded, Jozef Képesi (Kiwi.com CTO) offered me to join. However, at that moment I found another more challenging project. After about 2 years, Kiwi.com needed to start processing data and searches in a more scientific manner and that was the area I was focusing on. Joining the company felt, for me, to be a good synergy.
The product your team worked on, Nomad, is a representation of a mathematical problem whose main goal is to find the most efficient way for a traveller to visit all of their selected destinations. How would you describe Nomad?
Imagine that you are a traveller and you would like to see multiple cities. Your main goal is exploring the city and its wonders, the order of which city to visit first is of no importance to you. The existing Multi-City search will require you to search manually for all possible combinations so that you can find the best order. With Nomad, customers do not need to spend hours searching for the optimal solution, they can simply insert the cities they would like to visit and Nomad will return the best possible results and itineraries. It allows you more flexibility, greater choice and so many possibilities.
When you started working on Nomad, who did you envisage as the main user of such a product?
Myself (laughing). I don’t remember whether it was me who made the first booking or one of my fellow Kiwis, but I wrote it with my specific use case in mind. Back then, together with my future wife, we wanted to do a small trip in the Baltics. We were planning to go to Riga, perhaps also to visit Stockholm, Saint Petersburg, and maybe Moscow. To find the best itinerary we had to manually try many multi city searches with various ordering of the cities. That was very tedious and I felt like it was right to address the problem more scientifically to save time and to have some fun. 🙂
What was your team’s reaction once you suggested working on such a product?
In my team there are many gifted programmers and people who are very strong algorithmically. Even though the basic outline of a mathematical problem and its solution can be found on Wikipedia, it was still intriguing for the team as we had to modify the algorithm quite heavily to make it suitable for the time-dependent variant of a Travelling Salesman problem.
The team was more than happy to work on it as it doesn’t happen every day that you can make a product out of a NP-hard problem. Eventually, Peter (our team member who delivered a significant portion of the work) even wrote his master’s thesis based on the Nomad core algorithm. That was great synergy as Peter would have had to write his thesis anyway and this way he could do it while creating a great product for everyone to enjoy.
Nomad was released well over a year now. How do you feel about the result of your team’s work? Do you think that you managed to achieve your original goal?
I still believe in the idea. Even though this product cannot be used on all occasions, it is very helpful. I remember my own trip and it was a very nice and smooth journey.
While building Nomad, we have tried our best to ensure that the product gives customers as much flexibility and freedom of choice as possible. I believe the results fulfilled our main aim and what is also important, is that we enjoyed working on it as a team.