This week we interviewed Matthias Endler, Software Engineer at Trivago. He explained us why he chose this career path and his secrets to become a successful Software Engineer.
What led you to become a Software Engineer?
When I was young, I used to play a lot of 8-bit games, and I wanted to know how they work. Like many other programmers of my generation, I started to write my own games. I learned about user input, drawing on the screen and playing sound by reading the Microsoft Basic manual on my Computer; we had no internet. Later on, I experimented with programs to prank my little brother, like replacing sound files in the game “Black and White” so that you could hear a voice whisper his name from time to time or a program to remote-control his mouse and CD-drive. Up to this day, I enjoy tinkering with computers
and use them in playful/creative ways.
What recommendations would you give to any colleague who would like to thrive in your job?
To become a good engineer, you need two things: passion and patience.
Passion first. Software Engineering is a vast field, and there is so much to discover. Your motivation to learn should come from within. If it feels like a drag, take a step back and find something small that fascinates you and then stick to it until you get better.
Second, you need patience
. You don’t have to be the brightest light bulb in the room, but with persistence, you will succeed in the end. For example, read through the manuals for tools you use every day – no matter if it’s frameworks, programming languages, or command line tools. Read it thoroughly and don’t cut corners! This might slow you down in the beginning, but it will pay off tenfold in the long run, because you will have a better understanding of the concepts and the limitations of each tool.
What do you like the most about your job? What do you like the least? What are the main challenges?
Aligning with other departments is sometimes challenging. I guess communication is a hard problem to solve. On one side you don’t want to exclude anybody from important decisions, on the other hand, it’s difficult to find out who might be affected by a technical change on a global level.
Therefore, technical decisions need to be well documented, and that’s a bit tedious sometimes. One thing we’ve learned while rapidly growing the company and scaling up the engineering teams is that it requires constant ongoing effort to maintain our awesome engineering culture
. I think the way we tackle technical problems here is quite unique because we put a lot of emphasis on collaboration and open discussion.
Establishing that mindset in newcomers and living it every day is important. Especially when things go wrong, we want to put the focus on learning and knowledge sharing.
What are the tools you find indispensable in your job?
Robust hardware, fast internet, a modern shell, my text editor (hey fellow vim users!
) and a quiet place to work.
After all, those things are just tools
. I’m curious to see what my answer will be ten years from now.
How do you think your role will evolve in the future? Which skills will you need and how do you stay abreast?
To predict the future, you need to learn from the past.
Trends like Microservices, Machine Learning, or Cloud computing are based on old ideas, and you don’t have to know everything to stay on top. Don’t get distracted by shiny new technologies. Instead, focus on the underlying concepts. Learn how to learn – how to teach
. I’m moving more towards a developer-advocate role where I support teams with knowledge, help with challenging infrastructure problems and cultivate a healthy engineering culture. If you’d like to help me with that, why not apply
Special thanks to my colleague Oksana Dykan for taking the awesome photos of me and my colleagues.