Recently I had the opportunity to sit down with Boris Kayiranga, a skilled senior software engineer based in Berlin, Germany.
In our conversation, he shared with me about coming from humble beginnings, making a breakthrough in tech, and moving to Germany as an African Software Engineer.
Tell us about yourself
My name is Boris Kayiranga, I am a Software Engineer; I have been building software professionally for about five years now; I have worked in different industries including consultancy, fintech, and e-commerce. I specialize in mobile apps but I sometimes also touch the other areas as well. I am currently working as a Senior Mobile Engineer at Flaconi, an online retailer based in Berlin where we are using Flutter to build a mobile shopping experience that serves hundreds of thousands of customers in Germany, France, Poland, and Austria.
When was the first time you interacted with a computer?
I can’t remember quite well, my earliest memory is from around 2002 when I was playing with my dad’s Macintosh Portable. But I was very young so I am not sure what I was doing, I can just remember the bubbly “trackpad” that felt good when I was clicking on it, the clicking sound was very satisfying.
How did you become interested in programming?
It’s actually a weird story somehow: I was fortunate enough to get a personal computer on my 13th birthday, but the only things I was doing with it were graphic design on Microsoft Publisher, playing with Microsoft Paint, and a lot of gaming. Then one day, with one friend, when playing World Of Tanks online, we clicked on an ad that redirected us to Webself which was a Wix-like platform to create your own website, we spent weeks and weeks crafting our website and published it, and it looked awful but it was online and people could access it, that was the first time I was exposed to HTML and CSS, and also the last time for a while because the year after that, I watched the first IronMan movie and it hooked me up into building my own Mark III (IronMan’s first successful armor). So I took maths and physics in high school, and in college, I took Computer Science, but later on, I discovered that some components of the armor just could not be created with the laws of physics.
Meanwhile, I was kind of enjoying the idea of talking with computers through code, so I started to spend more and more time programming and I loved it.
What were your early challenges while starting up and how did you overcome them?
The biggest challenge I had when starting up was definitely sticking with one thing. Technology grows fast and every day you learn about a new programming language, framework, paradigm, etc. As an unsupervised beginner, I obviously jumped on every new trending tool, the problem with this approach is that it will take you more time to be good at any of the tools; that’s how you end up as a junior developer with five years of experience. Fortunately for me, I got an internship at DMM.HeHe later in my first year of college where I got to build a good basis in web development by shipping actual production code for real products used by tons of people.
With the massive amount of information we are exposed to today, this is still a challenge for beginners and I always recommend people to stick with one thing, build a strong basis with it then later on they can switch to something else.
What do you believe was your biggest mistake, as well as your best decision as a Software Engineer?
The biggest mistake for me was to underestimate the importance of a CS degree. This is actually linked to the biggest decision I made in my career (I hope my dad is not reading this 🤫) which was to drop out of college. I still don’t regret the decision though. As a developer, sometimes you feel like a CS degree is a waste of time (spoiler alert: it’s not): You spend days studying about some things that you don’t even use at work. The thing in Software Engineering is that CS concepts have been abstracted a lot to prioritize productivity, and at work usually developers use a framework or a library that helps them produce a lot with a little amount of effort. That is until you face a challenge that the framework does not provide an easy way to solve and you need to dig a little deeper into those layers of abstraction to understand what is going on. With little or no computer science knowledge, it takes way more time and effort to understand what is actually going on. The more you grow as an engineer, the more of those challenges you will face and my strategy is to educate myself even more. The reason why I don’t regret the decision I made is that now I understand the importance of what I am actually learning because I am exposed to the problem it solves. When I am reading a technical book for example I know the application of the knowledge I am acquiring and it makes the action of reading the book even more exciting.
How did you come to find your Flutter development focus?
In 2019 I had the chance to work on a mobility mobile application in Kigali, the project was to build something like Uber where car owners could make money by moving people in the city. I had no experience in how to build mobile applications at the time, my stack was mainly ReactJS and Python, but we had a small team, so we all had to wear multiple hats, so I jumped on the project with two other people. I was pushing for the use of React Native in the project, to be honest, but my teammates convinced me to try Flutter so I gave it a shot and took an online course that gave me a good understanding of the fundamentals; the project was later canceled due to some regulation limitation but I liked Flutter, it gave me the freedom to build beautiful user interfaces across all the platforms with little effort and little to no knowledge of native android and ios, the developer experience was really amazing too so I decided to stick with it for a while and just like that I started educating myself about Flutter, and contributing to open source projects then I found myself working full-time with it.
Any Flutter hot trends we should look for in the coming months?
I would recommend watching the FlutterForward event’s video. There are tons of cool things that are being cooked by the Flutter and Dart teams. For me, the ones I am the most excited about are Web Element Embedding, Support for Pixel Shaders, and all the incoming features of Dart 3. The hot news right now is probably the PUBG team embracing Flutter in some parts of their app, I play PUBG from time to time so it was great to discover that.
How did you code your way to Germany as an African software engineer?
It is a very boring story, to be honest, I pretty much just applied for a job I saw on LinkedIn, went through the interview process, and in the end, I got the offer. There is definitely a huge invisible part of luck in the story because I am definitely not the first African applicant to a Software Engineering job on LinkedIn nor am I the most skilled one, yet many don’t even get an interview.
If someone wants to go the same path as me, I wouldn’t recommend letting it all to luck, rather I would recommend networking with people in Germany who work in the companies or industries you are interested in; this will increase your chances to crack the interview processes or at least to pass the resume screening stage; of course, you should not forget sharpening your skills because the competition is very high, you are competing against hundreds of other candidates from all over the world.
Germany is making it easier for tech workers to move; for example, I don’t have a college degree but that did not affect the visa process at all. That really caught me off guard to be honest because I thought it would stop the whole thing, but to my biggest surprise, the team in charge of my relocation said that wasn’t a problem because I had 3+ years of experience and that was it, I just had to provide recommendation letters from my previous employers as proof that I have been an engineer for 3+ years and voilà. That is just one example of how Germany is trying to make the process easier, there many others. If someone wants to move to Germany as a tech worker I would really recommend collecting a lot of information, because you are definitely gonna need it, living in Germany takes a ton of paperwork and you need to know your responsibilities as an ex-pat; there are some helpful resources online like https://make-it-in-germany.com, https://simplegermany.com(they also have a YouTube channel) and many others.
How would you describe the Tech ecosystem in Berlin?
Berlin is one of the biggest tech centers in Europe and a major tech hub in the world. All FAANG companies have offices here and many tech conferences happen in Berlin. In addition to the tech giants, The city has a very vibrant startup ecosystem, one of the things I noticed after moving here and updating my location on the Meetup app was that hundreds of communities started popping up on my feed: founders, developers, designers, students, AI enthusiasts, etc. All have multiple communities in Berlin and almost every week there is an interesting event happening, I went to a couple of developer events where I met founders and engineers working on amazing projects. It is interesting to see that despite the multiple layoffs happening right now in the tech industry, there are also multiple companies hiring and growing.
This reminds me of what a developer from Egypt living in Berlin told me how in early 2014, some tech companies in Egypt would measure their success on whether or not they can open an office in Berlin or London.
Boris Kayiranga gave a talk about Mobile Application Monitoring and Analytics during a Flutter Berlin event. Uberall HQ, Berlin, Feb 09, 2023.
What should African software engineers be aware of regarding Germany?
The unfair advantage we have as tech workers nowadays is that the job market is internationally in our favor, and Germany is not excluded. Just moving to Berlin has made my LinkedIn bloated with messages from sources and recruiters. If you want to move to Germany or to work for a german company, it’s absolutely possible no matter if you want to work remotely from your country or relocate. If you want to relocate though, there is some extra effort you need to furnish, I think it’s worth it but that’s a personal opinion. As a software engineer, if you have built stuff and have experience in some of the technologies mentioned in a job post, then apply; you don’t need to have all the skills mentioned because that would make the job just boring. And if you fail the interview, you can always keep in touch with the recruiter and learn from your mistakes then reach out to the recruiter again later when you feel that you have grown.
In terms of your first salary, how much is your current take home?
Compared to my first salary as a Software Engineer, my current pay is about 22 times what I was getting at the time, but compared to my last job in Rwanda, it’s about 6 times. To be fair, my previous job in Rwanda was paying quite well considering the location, the pay was higher than the average salary for a Software Engineer in Rwanda.
My take-home pay in Germany is still higher than what I was getting in Rwanda, but significantly lower than the gross pay though; taxes in Europe are high, very high. Depending on how much you are being paid, your take-home salary can be as low as 50% of the gross pay, but that comes with many advantages too plus the cost of living is not as high as in other big European cities like London or Geneva. You can use www.brutto-netto-rechner.info to calculate your take-home salary in Germany and get a detailed breakdown of where your money is going.
What professional advice would you give to people in the early stages of starting a software engineering career?
Build Stuff! Engineering is the application of scientific principles to design and build solutions to problems. The more things you build, the more exposure you get to the actual tools, and that’s how you develop expertise and skills. What you build does not matter, what matters is the process and the knowledge you acquire while building it. You can build a web scraper for example, there are tons of them already but what matters is that now, you know that to build a web scrapper, it’s necessary to parse the web page in order to get the HTML tags and that knowledge can be reused somewhere else to build something with more value.