Coding for a Sustainable Future – Senior Software Engineer Milan Suk

Posted on 04/02/2024, Peter Lyamport

Interview with Senior Software Engineer Milan Suk

Milan Suk has been coding at Kiwi.com for more than 5 years. Since his early teens, he has had a great interest in computers and how they work and he also experimented with writing different scripts. We caught up with him on the heels of a recent move to the Kiwi.com office in Barcelona to talk about his career, the value of asking for help from others, and a certain library he created called the ‘Inseminator”.

Hi Milan! At what point did you get into programming and Python? 

I started when I was around 12 or 13, when we first got a computer at home. It was super fun to just investigate how the thing worked. During high school, I did some quantum-mechanics projects that led me to just pick up Python and start coding, using it for random scripting or numerical stuff. I think I really started doing Python when I joined Kiwi. 

What are some of your favorite projects you have worked on so far at Kiwi.com?

For the first five years at Kiwi.com, I worked in the check-in team doing processing of automatic check-in, and now I’ve moved to auto booking. I’m really enjoying the current project where we employ a pure-functional paradigm in Typescript. During my time in the check-in automation team, I really enjoyed a project where we used Python to create a system for generating wallet boarding passes. It was  technically interesting because of a new application, the actual reading of QRs, and generating pkpass files (content information for iphone wallet). 

It really felt like we delivered something valuable to the customer.

What is your favorite thing about working at Kiwi.com?

People. I’ve met lots of different people. They are super smart, and super fun. And I always had cool managers that gave me the freedom to express myself and learn. 

What were your biggest challenges getting to the point you’re at now?

I think quite a big one happened half a year ago when I started feeling I really needed a change. My manager helped me a lot during this time, we decided I should stay in the company and do a different project. Unfortunately, I’m not actively doing Python. On the other side I’m working on a brand new project that uses the fascinating functional paradigm. So that’s something I was really fighting with. 

What are your favorite learning/news resources to keep you up to date?

For me it’s mainly books, my daily routine is to check articles on Medium.com or if I go to sleep, it’s YouTube. I’m a super fan of Robert C. Martin, A-K-A. Uncle Bob, and Martin Fowler, big names in terms of enterprise software development. Most of the books I read are rather technical or mathematical. Currently I’m also reading a book from from Bartosz Milewski with my colleagues. It’s called Category Theory for Programmers. It’s about a really cool part of mathematics that is related to the functional paradigm on our projects. 

On YouTube, currently I watch a channel called Rock the JVM. It is about Scala programming language, which is something that’s compiled to the JVM bytecode. Another one is a channel by Russian guy called Tsoding, who may probably be somehow screwing up the word coding. This guy is creating compilers and investigating different languages. It’s pretty fun, but the videos are long. In general, I believe in the power of strong fundamentals instead of seeking the very hot stuff on the market.

Do you use other languages in your job and what are the most common ones you use?

Python is both great for learning and for the career because everybody wants a Python developer. In my previous job, I’ve done a lot of C++, which is awesome if you want to understand what’s going on under the hood and if you want to do performance stuff. Currently, I mainly use Typescript. It’s basically JavaScript on steroids. Of course, there are other languages like bash for shell scripting, Lua for editor configuration, Python, or pure Javascript for some testing. Recently I wrote a small prototype in Haskell (sadly we didn’t use it). We almost used Elixir for one component of the system, but a smart architecture decision stopped us from that, and we are now planning service in Rust. But again, it is mainly Typescript for me these days.

What advice would you give to someone who aspires to learn multiple languages?

I really think a person should definitely pick a mainstream one, let’s say Python or C. My advice is to stick with it and learn something that will give you strong fundamentals and after that move on. But, it’s also completely okay to stay with a single one and learn it really well. 

You are involved in the community and you serve as a mentor in Python weekends. How does the community aspect of Python affect your daily life?

Mainly it allows me to meet people that are interested in the same field and people I would hardly know otherwise. You can share your obstacles, realizations, what you have in common. I love to deal with hard technical problems, and I enjoy publishing them and discussing them with others. 

You also wrote a significant ‘Inseminator’ library. Can you tell us a bit more about it? 

Sure! Let’s start with the name because I love it and it wasn’t me who gave it to the library. It was Milan Lesnek – who also works at Kiwi.com as a software engineer.  It happened during one of our classic coffee breaks. I had this library written, and I was searching for a name. This library is about dependency injection – a technique in software engineering. The library basically does automatic dependency injection and because of that injection in the name … just check the dictionary definition for “inseminator” and you’ll get it. Anyway, that library was created after we refactored the check-in application and we had a lot of boilerplate in our entry points that only instantiated and connected classes together. Inseminator does that automatically by inspecting the code (using signatures of class constructors).

When did you know this community was something you wanted to be a part of and contribute to?

I think it was Kubo Wolf, my former engineering manager at Kiwi.com, who introduced me to Python weekends. At that time I wasn’t sure that I knew enough to teach other people. Now, I’m 100% sure I don’t know enough to teach others! (laugh) But also, I know that’s not the point. We are just a lot of people with a common interest who share their experience, discuss technical problems, and give solutions if we have them. Python, in general, has an advantage that there are so many people doing it, therefore usually if you get stuck you can just ask someone else if everything else fails. That’s not the case for other communities and we really value that.

How do in person meetings such as Python weekends compare to being a part of forums or Discord servers when it comes to learning more and creating real connections?

To me it is incomparable. In-person communication is usually so much better. In the case of meetups, for example, there’s nothing better than having a beer with someone and having a lovely conversation. Everybody there is usually relaxed and open. This also applies for meetings in the Kiwi.com, of course without the beer this time. The best tech discussions I’ve been to were in front of a blackboard with a bunch of other people talking in person. There are tools like Mirror that can somehow simulate it online, but for me, the in-person experience is irreplaceable.

In your spare time you also play piano and chess. How do you enjoy those hobbies? 

I love to play music. I have a violin, and sometimes I play bass. I actually bought a guitar the other day so I can have something to play on. It started when I was eight, something like this. I’ve written some pieces, some songs, but they have Czech lyrics and they are usually made for a specific occasion. I love to be at a campsite with other people, playing the guitar. In Brno there is a gathering every Thursday in our office, and every week we were sitting around the piano just sharing the time together, playing, singing. It was super nice. I really loved this time. 

Regarding the chess thing – during a Python weekend two years ago, we had a chess table and pieces. So we started playing and then a lot of other people came and started watching, some joined, and we somehow made it a tradition that we always have a chess board and pieces at events and we always play.

Last year you moved to Barcelona to work from our office there. How did you end up with that decision and how do you like it so far?

I needed a change, that’s why I moved to a different team at Kiwi.com with a different computer language. I felt that it was a perfect point in my life to try to live for some time in a different country, and combined with the fact that they wanted to hire Typescript developers for their team, it just clicked perfectly. So far, I love it. In the Barcelona Kiwi office, there are people from all over the world, and all of them are just so super nice. I already found a buddy who shares my enthusiasm for type-safe programming and another one introduced me to a local famous boulder so I have people to share my hobbies with. It’s been a great opportunity to meet different people.

Do you want to join our CS team? We’re hiring! If you want to explore our culture, upskill your knowledge and grow with Kiwi.com, take a look at our open positions in R&D!