In the series “Job Profiles”, we talk to various members of the InterNations team about their position and the work that they do.
For our latest profile, we’ve had a chat with Gourav, an expat from India and a member of our DevOps Team.
When did you join InterNations? And what is your role in our team?
My official job title is DevOps Engineer. Since I started working at InterNations in January 2020, I’ve now been part of the team for about eight months.
DevOps is short for “Development and Operations”, a huge field of its own that includes various branches of engineering. In a nutshell, our team is responsible for maintaining and upgrading the infrastructure on which the InterNations platform runs. My own responsibilities come with a specific focus on continuous integration and deployment. This means I help build and maintain the infrastructure that allows our developers to regularly release new features or updates on InterNations. This process extends to releases for every part of the InterNations platform — our desktop website, our native apps for Android and iOS, and our brand-new single-page web app.
Can you explain exactly how this integration and deployment process works?
Normally, whenever software engineers develop an application or a feature, it needs to go through certain steps before it can be released for actual use. These processes are called CI (continuous integration) and CD (continuous deployment). During these steps, the application or feature is tested before it is released “into the wild” — that is, before it’s deployed on a platform where end users can interact with it.
The first step is the “initial release”. This means that the feature update or bug fix is released into a local test environment (aka stage environment), where the developers can test it again. The stage is supposed to be as close as possible to the so-called production environment used by our actual customers. Software engineers can use the stage to check if whatever new functionalities they’ve built are working as intended. After those tests are done, we can proceed with the “production release”. Here, the software environment is the actual website or app that our members can access. We might have a few more tests after the production release as well.
Both the stage and the production environments run on our servers. It’s my and my team’s job to maintain all servers and databases involved in the testing and release process. There are a variety of tools you can use to manage this process. Here at InterNations, we use an open-source software called Jenkins, one of the most popular CI/CD tools on the market. Right now, I’m modifying this tool, so it can be maintained and developed “as code”, which will give us greater control over our app release steps.
What happens if something goes wrong during this process? What if some tests don’t work?
There are quite a lot of reasons why a release might fail, but here are the three most common scenarios we frequently face.
First, a certain step in continuous integration might require specific data from our databases. Sometimes, however, this data is unavailable for some reason, and then we have to restore it for this step to work. The second reason for a failed release might be the infrastructure itself. If the server on which a particular step of the release process is supposed to run is offline or unavailable, then we need to fix it as soon as possible. And the third explanation is simply that the code written by our software developers might have some bugs.
In DevOps, we handle the first two scenarios ourselves. But in the third case, we just report back to the software engineers that there might be a bug in their code. It’s not a DevOps issue to change the code — it is our job to make sure that both the infrastructure on which the code runs and the Jenkins system are up and running.
Why did you choose this career path? Did you study computer science, for example?
That’s a funny story, actually. I got a bachelor’s degree in engineering rather than computer science — in electronics, to be precise. However, when we had an on-campus career fair at my university, BPUT, there weren’t many electronics companies there to recruit soon-to-be graduates. So, I thought, Why not give something different a shot, and I signed up for an interview with an IT company for an area I had some skills in. I was really surprised — and felt really lucky — when they ended up offering me the job, even though I wasn’t graduating in computer science. That’s how my journey in IT began, and I still had a lot to learn.
I started out as a self-taught systems engineer. My main role was to build and maintain the actual systems — the servers — to run a platform on. I worked as a systems engineer in India for seven years, first at a consulting company, then in the pharmaceutical industry, and finally at a multinational corporation that specializes in enterprise software. Later on, I also switched to more of a DevOps role; apart from running and maintaining the systems, I worked on automation tools for the continuous integration and deployment process.
You just mentioned that you worked in India for several years after graduation. Had you ever lived abroad before moving to Germany for your current job?
No, coming here to join InterNations was the first time I’d left India to live and work abroad. Some of my colleagues at my previous job were looking for new career opportunities, and one of my friends had landed a job in Copenhagen. He was the one who encouraged me to consider leaving India. He told me about the different way of life and great travel opportunities in Europe, which sounded really exciting, so I decided to give it a try. When I was searching for an international position, I came across the job ad from InterNations that was a very close match to what I was looking for — and here I am.
That said, I’d already felt a bit like an expat in Bangalore, where I had moved to for work. The language and culture of the “Silicon Valley of India” are completely different from the part of the country I grew up in. Bangalore is located in the southwest, in the state of Karnataka, and I’m from a small town about 20 km from Bhubaneswar, the capital of Odisha, a state on the east coast. The official language in Bangalore is Kannada, but my mother tongue is Odia, a language that’s not related to Kannada at all. So, coming to Germany wasn’t a completely foreign experience for me, since I’d already been in an unfamiliar environment in my own country! But, of course, I still had to adjust to a very different life in Germany, and it was tough at times.
So, what was it like for you to move to Munich?
During my first few days in town, I managed to get lost on my way to work (twice!), even though it’s only a five-minute walk from public transportation to our office. I didn’t speak German at all, the street names were unfamiliar, and the street signs just looked weird to me; so, I was rather confused at first. And I still find it odd that so much is sent by mail here and that Germany relies so much on paperwork. It’s such an advanced country in other respects, but I’m always surprised at how little you can get done electronically.
Oh, and I do miss Indian food sometimes. Even if you move to a different state in India, like I did, the food will still be very similar — but here it’s a totally different cuisine. I’ve tried a couple of Indian restaurants in Munich, but unfortunately, I haven’t managed to find any yet that serve good authentic food. I could probably cook way better myself, but I’ll keep looking!
On the plus side, I’ve picked up a nice new hobby since I’ve moved here. I’ve started mountain biking! I live in Deisenhofen, a pretty quiet suburb, and I can easily get from my place to various bike paths in and around Munich. There’s a forest right behind my house, so I usually ride through the woods and along the Isarradweg (the bike path along the Isar River) on the weekend. Even the lockdown in spring didn’t feel all that severe to me — I could just take a stroll in the woods or ride my bike in the evening.
That sounds pretty great to me! Last question: What do you like best about working at InterNations?
When I applied for the job at InterNations, I was looking for a role with a very specific focus on Jenkins. My goal was to grow in the field of DevOps engineering. Here at InterNations, I get to handle the entire platform myself, with great support from our other DevOps Engineer, our team lead, and even from our CTO. This is something I really appreciate about my current job — I’m on my way to becoming an expert for all things Jenkins. That was my goal when I thought about switching jobs, and InterNations has provided me with this opportunity. It has really lived up to my expectations.
The best thing about InterNations, in general, is that I get to work with all different kinds of people in the same team — people from different countries and cultures, with different mindsets and backgrounds. For example, my colleagues from the DevOps Team that I work most frequently with are both German; so, I wasn’t sure what to expect at first. I think most Germans are, in fact, very direct and straightforward. If you need something or want to do something, you just have to speak your mind and not beat around the bush, and they’ll be really supportive. This is something I’ve learned from my colleagues, which I’ve come to appreciate, but it took me a while to adjust. Now I am really grateful for my teammates.
My closest friends outside my own team are colleagues from Bangladesh and Nigeria. Back home, I didn’t have the opportunity to be part of such an international team, so I very much enjoy experiencing diverse cultures just by showing up to work every day.
Image credit: InterNations / iStockphoto / private (Gourav Pattnaik)