101 advice for backend engineers

What languages, frameworks & tech do you need to succeed in Germany?

A conversation with backend engineer Khaled from goeuro.com and Leandro, engineering manager at GetYourGuide.com. Hosted by Egyptian Techies in Berlin & Imagine Foundation e.V.

Johann: Welcome Khaled and Leandro. Great to have you here. Who are you, and what do you do?

Khaled: My name is Khaled. I work at GoEuro.com, a travel company. I’m a software engineer.

Leandro: My name is Leandro, I work as an engineering manager at GetYourGuide, it’s an online travel agency. We sell activities and tours around the world.

Johann: What are the skills required, skills, technologies, languages, tools to find and do a great job here in Germany?

Khaled: So, I work in back-end and also encounter some front-end but I can only speak of the back-end. So, back-end-wise, the most common thing is JAVA and there are some projects that work with Node.js.

So ideally you know Java. This is starting from Java 8 all through Java 11, we work with everything and the mindset will be that I only develop software but I also know how to operate it as part of the DevOps. So we can start from requirements part to running your project to deployment on AWS or a Google Cloud, and maintain it. Make sure that you know the types of deployments, the canary, the blue-green and how to roll out features.

From the language perspective, knowing a functional programming language like Scala, Closure, Kotlin even are quite nice and knowing some languages like Java, that’s widely known.
And also languages similar to, or frameworks like Node or JavaScript for back-end that’s also very useful.

Johann: How about Go or Ruby?

Khaled: Go is also getting very popular but it’s mostly heading towards the DevOps part because most of the people use it to bootstrap and also write some kind of factors. It’s really nice and even in GoEuro, by trying to go toward Go I will bet, however most of our services are written in Java and some other small services in Scala and some other frameworks that relate to Scala.

Also, knowing scripting like Python or Bash is very handy if you want to accomplish certain tasks or do some batch processing.

Also, if you have an edge for something like ElasticSearch or Apache Solr that have a really big demand in Berlin.

If you know ElasticSearch pretty well, you can land in various teams that are trying to create a better search and better recommendation systems, so if you are aware of information retrieval systems like Solr cloud, Solr, ElasticSearch, you are very attractive.

Johann: So, Leandro, you’re next. You’re an engineering manager. Anything that you’re expecting people to know to thrive in big engineering teams?

Leandro: I think from engineering point of view, we need developers and engineers to know exactly about design patterns, how we apply SOLID principles, and basically in GetYourGuide, everything that was said here is also relevant for front-ends. The only point that I would like to add is:

There are still a lot of companies that use PHP as the main language. Many use Symphony 4 as a framework. and it’s not because it’s PHP that you can’t develop good code, you can also apply SOLID principles, you can also Dockerize your application.

Also some other topics like Domain Driven Design, which takes care of everything that’s been said here on the problem space which is like have this mindset of end-to end so you understand the problem you’re trying to solve, to better create the architecture. This is a very interesting thing, don’t only focus on the framework. Also try to focus on the end-to-end because this is what drags your choice on architecture.

Johann: Great! And we keep on hearing about microservices architecture, Docker, etc. Can you stress the importance of that?

Leandro: Yes, sure. The main purpose for me is as you also pointed out, as your codebase grows — your company also grows. And sometimes we do changes in our organizations and don’t do changes in our code.

Microservice is not like “one solution fits all”. Microservices needs to be done carefully because it comes with other complexities. It’s impossible to have a an application that has a well defined modules where you can use the SOLID principles to do that.

The main point with microservices is to know these standards and how to apply them and the drawbacks of that solution.

So read about microservices and always try for each article that says microservices are good, know there are other that say microservices are not good. Everything depends on the problem you are trying to solve. At GetYourGuide specifically we are preparing a different structure that allows the teams to create the services and decide if they want if it’s a micro or it’s a API basis solution, engineers need to decide the pros and cons of all solutions.

Johann: Good, thanks for your time and detailed advice. Thank you very much.

A special thanks to our partner Egyptian Techies in Berlin for their contributions to this article.

This post is part of a longer series. For more visit us here: https://medium.com/imagine-foundation