Software engineering skills for Europe

Johann D Harnoss | Imagine
Imagine
Published in
21 min readJan 11, 2019

An Imagine Mini-Course by Leandro Lages (Delivery Hero) — update 2022

This could be the place you work. Turns out, software engineering looks the same wherever you are.

Meet your instructor. Leandro Lages

Leandro Lages

Leandro is an engineering manager. He holds a degree in Computer Science from Universidade Federal do Pará, where he studied until 2003. Originally from Brazil, Leandro came to Berlin in 2015. He built engineering teams for two Berlin-based unicorns, Delivery Hero * and GetYourGuide.

Leandro has worked as an instructor back in Brazil and has always enjoyed teaching. As an engineering manager at Delivery Hero, part of Leandro’s job is to ensure that all engineering team members grow & develop their skills. This includes mentoring them in their careers and teaching work habits that help them succeed from technology and a team culture perspective.

This is his story.

Course overview — click to jump to each section

  1. My journey from Brazil to Europe
  2. Getting ready for an engineering job in Europe
  3. Deep dive: Backend
  4. Deep dive: Frontend
  5. Deep dive: Mobile
  6. Deep dive: Data engineering
  7. Deep dive: Data science
  8. Deep dive: QA testing

1 | My journey

Hello, my name is Leandro. I work as an engineering manager at Delivery Hero here in Berlin. I’ve been living here in Berlin for three years and during these three years, I interviewed more than one hundred people. I’ve been working with technology for almost twenty years. I started in 2000 on e-commerce in Brazil, and since then I’ve been developing my engineering skills and now on a different track, which is as a Manager.

Mini Course #1/8 | Meet Leandro

I started my career in Brazil as a developer where I learned new technologies. I started with PHP3, and since then PHP4, PHP5 and now 7. There, it’s a completely different market. Even at that time, 2001–2007, was a different moment. We didn’t have any startups yet, we are like more .com boom. And, yeah, there in Brazil I was close to the community, mainly I’m from the north of Brazil and there I was like managing a meetup group where we talked about different technologies for web technologies. At that time, front-end and back-end were not separated, so you needed to manage front-end JavaScript, to CSS, HTML and also back-end language, in this case PHP. Also, that time I played a little with ASP, which is like the first version of Microsoft for web on top of VB script. And yeah, that’s a little bit about me.

After ten years working in the north of Brazil, I decided to move to Sao Paulo in the south of Brazil. It was an internal move, so for me was very challenging. The first time living alone, at that time I was single so it was a completely different experience for me. It’s exactly where I started like my financial independence. And it was exactly the same time we started having startups around the world. 2007, 2008, and there I worked in a company for three years but after that, I moved to a fantastic startup in Brazil where I worked for 5, 6 years and it’s where I started as a senior developer and I started going to a tech lead position in Brazil. Since it was a small startup we built a platform for marketing, called SiteApps. It was a behavior targeting tool so it allows us to create different audiences on the website.

And there I started having a different passion which is entrepreneurship and developing a product. So, I tried to combine both my engineering product skills and after working 5 years, since it was an international startup, even in Brazil we could start speaking English and for me, it was like very, very good chance to learn about startups. After 5–6 years we were focused on the long tail (results in the future) but since the company changed the strategy a bit, we decided to shut down a startup and focus on different projects in the company. The company was not just that startup, the startup was a project inside the company, so we focus on the corporate and short-head (short-term results).

It was exactly at this time that I decided to, I wanna try something different. I already had that experience in Sao Paulo in the startup scene, so I make myself stronger in the sense that I learned English, I was more confident about my English and I decided to have an international experience.

I was trying to choose different countries for that experience. I decided that Berlin would be the best place for me.

Why? The Visa is easier and the city has a very good work-life balance. I wouldn’t like to move to another crowded city like Sao Paulo where we had traffic jams and if you don’t take care of yourself, the life quality balance would be not as amazing as in another city like Berlin. So Berlin, it’s fantastic during summer. We have very good public transport. It’s a new startup scene, also around the world. So, I decided to, I had some connections that I could do some interview process and yeah, I came here for my first company as a senior software developer.

Back to Brazil in that company I was almost playing as a CTO, I was taking care of product entrepreneurship aspects and also technical aspects and leading the team. And I was afraid honest to continue that role outside, so I decided to go as a senior software engineer, also because the last two years in that company I was a little bit far from technology, and you know that technology changes a lot and I decided to move for Berlin as a senior software developer.

There, in this startup where I was, I was like in a team of 4 people, we didn’t have a manager. So as the most experienced I started somehow being also the manager. We are like hiring a perfect manager, so I was also trying to make the product together with engineering, so after 3 months there I became a tech lead. It was a more natural transition because it’s how I was working in the company. And, yes, after 2 years working there, I became a technical lead at the company. And the technical lead at that company, it was 75% technical aspect, architectural decisions, and 25% managing people.

So after 2 years, I started looking for different challenges because I liked to improve my soft skills, and managing people and as a senior software engineer, you have two paths to go. One is more managing people, orstrategizing the product. It’s also technology in lower scale and you can also go to a technical path which is 75% technology and of course you need to have soft skills to lead and have a good communication with your team members.

I decided to change and I move it to GetYourGuide to work as an engineering manager. Here, in Europe engineering managers, although you have both technical and people management and strategy path I decided to also try to learn new things.

I personally believe that as human beings we have to challenge ourselves.

And it was completely out of my comfort zone leading people, but for me at least this is how I learned, it’s how I put myself in situations that I don’t like or make me off of my comfort zone, but I have to be very very open to face new challenges. It’s not easy, most of the times you can have some defeats, you can failure but the most interesting thing is how you can get up and learn from those failures. And this is exactly how you grow. And yeah, this is me and a little bit about my experience here in Berlin, and looking forward to share more about that. Thanks!

2 | Getting ready for an engineering job in Europe

Well, let’s talk a little bit about the engineering lifestyle. Engineering habits, how can we survive in this world that changes all that time.

As an engineer there are some basics that you need to master. One of them is algorithms.

Mini Course #2/8 | Getting ready

I know that most of those algorithms, data structures we learned during university. It seems that we don’t apply them so much which might be true at some scale but this is where you can also learn easily other technologies and how can you understand one day that if you have a very, very huge technical challenge, those are some basics that you as a software engineer needs to know.

And to be honest, it’s part of a lot of hiring processes in Europe and all around the world. At some level, some companies of course, they are stronger in algorithms than others because probably their business model requires that you need some more stronger algorithms. Some others, they just like, they put a low level algorithms tests just to make sure that you are there to learn.

Apart from that, the basics which are algorithms and data structures I believe that you need to focus on some technologies and some architectural patterns. So basically you need to know some. Uncle Bob, some authors and some references on the topic, so Martin Fowler, Uncle Bob, they are software engineers that are very strong in the community. They basically define patterns and how you create clean code and clean architecture and this is also need to be something that you need to always be, have a very good basis on top of that.

Design patterns, SOLID principles are hot topics that all software engineers they should know.

Apart from that, I also believe that we also have that situation about any specific language, if I should learn one framework or not, I believe that yes, you should be like know frameworks but

you need to understand what you have behind those frameworks, how they get there, what problem they solve.

For me at least, when I started developing in 2001, 2002, at that time we mixed up CSS, HTML, SQL queries on the same file so we didn’t have so many references for that so after some time, the MVC pattern arrived and I decided to create my own framework on top of that. To create my own framework it was very nice, made me a little bit stronger and understand what are the problems they solve but after that Zend framework other frameworks arrived and it was very interesting because I said I cannot compete with them but I learned what I need to learn when I started to build them. So I learned design, software design.

This is very important, how you design your software and a framework allows you to separate the concerns between different classes and objects so take a look at object-oriented programming and now we have also functional programming in some languages. It is both them have different patterns, and you as an engineer there is one thing that you need to know.

There is no silver bullet, there is on technology that you want to solve all the problems. That’s why it’s very, very important for you to know some theory, to understand what happens behind that. Don’t be trained on just one framework.

This is exactly why I believe some, some people fail. Because sometimes they are too focused on one specific framework. So they go to a company which has Spring/Bolt for example for Java or Zend framework or Symphony, the can not go easily for another framework and sometimes you just, because of that you are just being at this trade in the framework.

Yes, it’s very good to know the framework to be very expert on them but don’t forget to be an expert in what problem they solve. This is usually why people fail in interviews.

Also, the hiring process… It’s very interesting to talk about that. Here in Germany you have a lot of different startups.

You have startups which are at the beginning of their career in their moment, and you have a startups which are like with funding and they are in a growth moment. This is usually very different how they hire. And also, it’s also very, very important that you as an engineer, you need to understand in which kind of environment you want to be.

Usually startups which they are at the beginning of their career, they are more keen to have risks on hiring process.

So basically they facilitate a little bit the hiring processes so you basically do some algorithms, some culture questions just to align and just to know which are the things you already did. So at that time they are not so focused on quality of the work, they are more focused on getting things done because this is why the difference why they will survive or not and those companies I already worked in some of them. And of course, my code, the design of my code was not that great at that time. But this is exactly where you learn things, right. So you can not learn and start doing good things when you start learning. When I was in startups back to Brazil, these kinds of things I start like my coding style being not so much well designed. So that’s fantastic.

After the company grows, you grow together with the company so this is where you start learning new things and this is exactly the opportunity to have to go to that company and to learn more in a high-scale moment or if you feel like more confident, you go to another company which is a little bit higher.

A little bit bigger, and there the process is a little bit different. So usually this companies, they are… they don’t want to take risks in the hiring process, so they have very strong technical challenges, so you usually… they don’t like people usually who are focused on one framework only. Sometimes they require that, but during the hiring process they don’t focus on the framework.

Usually, even if your company, you have like a framework well defined. They are not only opened for those kind of talents, because talents today…it’s the most important thing how fast you learn, what you can bring to the company. And also, thos companies focus on soft skills.

So companies that are in a growth moment, usually they also require soft skills from you. How usually you deal with your peers, how do you like to share your learnings, how do you like to mentor people, how are you also able to be mentored by someone and learn from them. So, soft skills are very important.

Mainly, here in companies like that where you have too many people and it’s growing all the time, you need to have communication skills. You need to know how to give feedback, how to be assertive when you ask questions, so this is also a very good skill set that you need to be aware of. And there is a lot of literature on that. There is 16 personalities website where you can find what is your personality, what are the points that you need to understand more.

I think also Medium is a very, very good platform. So topics like leadership, you have the topic of leadership in business in startups. Those topics are amazing. I also recommend those topics from leadership also for engineers because it’s how you grow. Also, Medium for startups, the technology topics there are very important, mainly the ones for the architecture and design that I mentioned previously. Some hot topics like apart from the MVC architecture which is somehow… was an architecture that was used for CRUD’s or for back office systems, now we have Hexagonal architecture, domain-driven design which are architectures that are trends now-days.

So there are a lot of YouTube channels where you can learn about microservices, domain-driven design, how you can like grow the structure of the company today to allow autonomous teams and how they can work together with product managers and this exactly good thing to learn about.

Links I recommend:

3 | Deep dive: Backend

Let’s talk about back-end technologies and the market here in Berlin.

Mini Course #3/8 | Backend

So, I believe that usually engineers, of course we will always have a preferable language, mine is PHP for example but one of the gaps that I see is like using PHP as a silver bullet for everything else. There are some specifics of the language and how the language runs in a web server, that it’s different in other languages. Like how it’s memory consumption, and how you have the global variables in different ways, how a request is handled in PHP rather than Node.JS or Python. I believe that to cover those gaps, one of the things that you need to learn as a back-end engineer is always keep an eye on all the technologies that are around. Try to take one path project for example, or even, even better instead of path project, use what I mentioned in a previous video — data structures. Try to implement data structures, like stacks, queues and sorting algorithms, and everything that you learned in the university in all those different languages.

Here in Berlin, the back-end languages most popular in the startups at least are PHP, Python, Ruby, using also Ruby on Rails and Node.JS, and also some companies, they are playing with Go language. So, also you have a strong market for Java, SCALA and also Kotlin.

Kotlin although it’s used mostly in mobile apps, it’s also a language that can be used in back-end, even front-end. You can use a Kotlin. So this is usually how the market is, I think one thing you need to know about those languages and it’s also a good opportunity for you, it’s go to meetups also in your city. Try to learn from other meetups. Some meetups publish videos online on YouTube so also in Berlin you can also see the topics if you go to the Meetup.org, the url that you have, you can also find some back-end meetups that you have here in Berlin and how they are like dealing with some trending topics like microservices, domain-driven design, hexagonal architecture.

So as I also mentioned before, master some frameworks that’s good, but know how they work. And the ability to learn different things is what makes a great candidate, different from a good candidate. But don’t worry, you’re people in the beginning of the career. They can and they are very keen to learn so take your time to learn different back-end technologies.

Focus on one technology, master, create a pet project, create data structures and algorithms to make you learn, it will also prepare you for probably interviews that you might face. The ability to combine the theory with practice is essential when working with back-end technologies here in Berlin.

Links I recommend:

That’s it!

4 | Deep dive: Frontend

And what about JavaScript? How is the front-end scenario here in Berlin?

Mini Course #4/8 | Frontend

This is an observation that I’ve been making here in Berlin, I’ve been doing. Basically going to meetups, during the hiring processes of front-end engineers.

One thing that I observed a lot to this date is this fight between frameworks. Vue.JS, React, Angular which framework should I learn. My advice is yes, learn all of those frameworks but essentially, be good in JavaScript.

Plain Vanilla JavaScript, companies don’t use it but this is how you are going to write good and great software, how you’re going to design your solution. That part is even better than learning the framework itself. The framework, what you need to know about them is when to use what they are… the stronger points of each framework and what are the drawbacks and which use case you probably would use those frameworks. The community behind the framework is important. Yes, it’s important but understanding the caveats of those things is the most important thing.

So, don’t go and be “I’m a React developer!”, or “I’m a Vue.js developer!”, think about “I’m a JavaScript developer!”

Learn the language itself, how you can also apply the data structures concepts, how you can also implement data structure and algorithms on JavaScript and pure JavaScript and that would be what also will allow you to play a bit on Node.js side. Today we talked a lot about isomorphism in applications, so the same codes that you run in the back-ends you can also run in the front-end because we have single page applications, and all these concepts that JavaScript frameworks are bringing together. So, to know that, you need to have a very strong basis on JavaScript itself.

And yes, learn those frameworks but don’t be dependent on them. Use them in your favour. Think everything that you can do with them, also create a pet project, define some initial project that you can do and also in GitHub there is a concept called Awesome JS so you can search for…I’ll put the link below but you can search for Awesome JavaScript, Awesome Reacts, Awesome Vue.JS, so usually those links have the concepts of in a nutshell everything you need to know about Vue, React, JavaScript and those are very good checklists and concepts that it would help you to strive in your career.

Links I recommend:

That’s it!

5 | Deep dive: Mobile

Yeah, let’s talk about mobile development also here in Berlin.

Mini Course #5/8 | Mobile

Yes, mobile development is also trend here in Berlin. One observation that I also can see here in the market is between Android ecosystem and also iOS ecosystem. And one of the things that I’ve been observing here and this is

something that you also need to be aware of in this career is the movement on the Android side from Java to Kotlin as a language and also on the iOS side from Objective C to Swift.

And, yeah, you can ask me should I learn Java or should I learn Kotlin, and should I learn Objective C or should I learn Swift. It’s always good to know everything of course, at least the main points of the language.

But if you want to begin your career on the Android side, I would say go and focus on Kotlin itself. It’s a language that also runs of top JVM and it’s a language that it’s more used today. It can also be used for back-end and front-end and other things.

If you go for Android development, try to learn Kotlin.

And the same for iOs.

Objective C is difficult to read, it’s a different language that you are used to, but I believe that Swift is a language that is easier to read

So I would also focus on iOS. Another point is not focus on the language. Many first startups here in Berlin even if it’s startups at the beginning of the career or also startups which are in a growth moment, bot of them,

you also need to understand the product and UX design.

So, those topics, UX design and Product and entrepreneurship are topics that you need to combine with your engineering skills and also read about them and combine them with the engineering skills for Kotlin and Swift and this is a good target for your career. That’s it!

6 | Deep dive: Data engineering

Let’s talk now about data engineering and the market in Berlin.

Mini Course #6/8 | Data engineering

Data engineers, it’s probably one of the main roles that we have here that are quite new for a startups. Before, I imagine that just corporate companies or big companies, they were leveraging the usage of data engineering and they were not…the focus was not so great.

So, basically what I’ve observed here in Berlin is basically two paths here. You can play as a data engineer for product and you can play as an engineer for platform.

So when you play for platform itself, you focus more on infrastructure and you need to be very, very skilled in a lot of different topics like MapReduce and how you make the data available, how can you define the analytics pipeline and structures. For people who want to go for data engineering on the infrastructure and platform side, I believe that you also need to understand how also both of the big cloud companies work and how their infrastructure works on top of that. AWS and also Google. I will put the links for below for how Google and AWS run and they have the products there.

So you can do those kinds of technologies, I believe it’s good to have some kind of specialization so you can go there and make sure that you are an expert on those topics. So for those kind of Google and AWS path that you want to take, I believe that having certificates are a good way to also leverage you knowledge.

If you go more for the data product side, this is usually where you have to have good analytics and also the entrepreneurship skills to define how can you leverage the data, how can you collect the data and combine them with business. Also, on the data product side, this is usually where you have search and recommendation so there is also a way to be search relevance engineer, how we can leverage search and also you can go and be an expert on that topic. So you need to learn ElasticSearch, Solr and other databases that are very good for product side.

So you also need to be very strong in data modeling, so you need to be very strong in SQL and other databases like Cassandra, how can you model different databases from entity relationship to NoSQL databases so yeah, if you’re going that direction, for sure you can play on the product side, not only on the infrastructure side.

So, basically those are the two paths that I see as an engineer manager and also where I can see the companies here in Berlin and the direction they are going to. That’s it!

7 | Deep dive: Data science

Let’s talk about the data science world here in Berlin.

Mini Course #7/8 | Data science

This is also a very similar to data engineer, it’s a topic that exists for long time. During the 90s, we had a lot of theory on top and also companies applying machine learning and data science, but now the startups are leveraging the power of the tools we have.

From the machine learning side, it’s also you need to have very strong mathematics and statistics backgrounds. And also you need to leverage some programming languages like R or Scala and also Python.

Those languages, they have libraries that you can easily plug in some machine learning algorithms and models. And also for the data science point of view. It’s also important to know how Google and AWS, similar to the data engineers, are leveraging their infrastructure and make app scale, how you can use Google cloud and AWS services on top of machine learning.

You can see for example Alexa. Usually behind that, you have a very strong API’s on machine learning that you can also leverage in your product. So focus on your mathematics.

Also machine learning engineers and data science, there is not such a huge difference between them. So usually data science and machine learning engineers are in some companies under the same departments. So usually, who is data science although there is a strong focus on mathematics and building models. They somehow also develop and place on some data engineering side. And it’s the same for the data engineer. The information is there and that’s…

today we have so many resources to learn, so usually also data scientists…they don’t go only for the mathematician approach, they are also hands-on and leverage the technologies (cloud solutions) that we have in Google and AWS.

I put a link here as a reference to know a little bit more about machine learning and data science. The interesting thing is usually startups which are in a growth moments which are huge number here in Berlin. They are fighting for a very good data scientists. So, focus on blog posts and also conferences on top of that. Be in trends with technology and also how Google and AWS recent technologieshas two times now, are using those technologies.

And read a lot. Read a lot and the difference between machine learning, data science and regular back-end or engineers is how you’re going to leverage that for the customer.

Discover how can you take all this theory and apply it to a real world problem. And that’s where also as a data science you need to play a very good role, focus only on the customer and to leverage those technologies.

That’s it!

8 | Deep dive: QA testing

Finally quality assurance.

Mini Course #8/8 | QA testing

QA engineering is a very interesting topic. Today we live in a world that is changing a lot. Some companies they don’t even have QA engineers more in the company. And some still do.

The role of the QA engineer is changing.

Of course we still have companies where the manual approach is still there. You have your testing scenarios and all your mocked tests and manual tests that you have but the focus is changing to automation. And sometimes, software engineers need to also build those automations.

So you have also, you need to be very strong on behaviour driven design and unit test, functional tests, moq tests, and all kinds of tests that you have but most important one is also about security.

Some QA engineers, they are also working on security of the applications. And some companies where security are very important, mainly FinTax, they also look for QA engineers who have strong focus on security.

So, yes, you can try to play and hijack some websites around to test and also learn a lot on top of that.

I’ve put some links and references of engineers that I know here in Berlin and they have like blog post and they talk about that. So, as I said, it’s an interesting topic,

I believe that personally QA engineers have their space, but I also think that QA engineer should not only be focused on tools itself. They need to think a little bit more about products as a whole.

Touching topics like security and also customers and why not also play as back-end engineers or even front-end engineers if needed. So, yeah, that’s my opinion about QA engineers and also how the market is working here in Berlin.

Thank you!

That’s it. We hope you enjoyed the read. Now it’s time for action. As always, we are rooting for you. Keep us posted.

— Your friends at Imagine. Apply now.

— This post is part of a longer series. Read more.

— Like what you read? Give us a few gentle claps.

--

--

Johann D Harnoss | Imagine
Imagine

PhD @SorbonneParis1, MPA/ID @Harvard, @celtics fan. Economic migrant.