14 July, 2020
Text by Edgaras Petovradzius, Junior IT Engineer at the LEGO Group - written in collaboration with Destination AARhus
During the last semester of my Software Engineering studies, I stumbled upon a few relevant job posts on LinkedIn from the LEGO Group. It struck me that quite a few of them were junior positions and featured technologies that are the current hot topics of certain IT circles.
I was surprised. First because tech companies usually expect you to have some years of experience in the field. Second, because large organizations often struggle with innovation in technology, among others because changes have to go through many gatekeepers and meet very strict requirements. But judging from the job ads, it didn’t seem to be the case in the LEGO Group. Here, I would have to rely on “Microservices” software architecture, deploy applications inside Docker containers on cloud solutions like AWS EC2, orchestrate containers with Kubernetes and use a large array of services for monitoring and maintaining these clusters.
I started in the job with yet another surprise: I could choose between MAC or Windows PC. I had heard many stories about developers not having a choice when it comes to hardware and operating system. It would be too optimistic to say that every developer in the LEGO Group is guaranteed that choice, but I ended up using MAC, as it was a better fit with the technologies running on Linux kernel that I was going to use.
It was a step out of my comfort zone, as I had been a Windows user for nearly two decades, and had been writing software on it for a couple of years. However, I firmly believe that challenging yourself and learning things from scratch is an essential part of personal and professional growth, so I jumped right into it. And I would strongly recommend developers to try both, not only to broaden your experience, but also because it opens up a whole new world of possibilities when deploying applications on different devices.
As a new developer, I joined a team working on the Foundation Platform, where I get to be part of something almost from its very beginning. Our team’s goal with the Foundation Platform is to ease developer experience when going from code to productions.
I knew that I was going to work with the container orchestration system – Kubernetes, but I was not sure how. I quickly learned that developers run their applications inside virtual units called containers like those offered by Docker, and that they in turn can be orchestrated as another abstraction layer called cluster like those provided by Kubernetes. This is of course an extremely simplified explanation, but it gives you the idea.
I also learned that I would work with a range of different tools and services for monitoring and maintenance of Kubernetes clusters, such as:
This was exactly what I expected when applying for this position, so I was excited to find out that these tools are indeed in use.
But I was left with two very important questions: What about coding, and how can I grow as a developer?
Well, I wasn’t disappointed here. Almost immediately, I got a few development tasks where I had to code in Python for the backend, utilize AWS Dynamo DB and MySQL database systems for persistence, and develop frontend with React (Typescript). I also used AWS CDK for Python to deploy applications on AWS EC2 instances, and this led me on yet another journey – learning more about cloud services and more specifically AWS. Although it is worth mentioning that we try to be as flexible and innovative as possible, which, from a technological standpoint, means not locking us in one specific cloud provider.
In both my team, and in teams around me, I am surrounded by a vast array of experts in different technologies. This means I can always ask for advice in Software Architecture, Networking, Machine Learning, Data Engineering, .NET Core, AWS, Azure, React, React Native, SAP and many more. I can also request code reviews from experienced developers at any time and get constructive feedback and useful advice.
Being brave and curious is also a core characteristic of the developers I work with. A couple of them, for example, decided to experiment with GO programming language to develop the platform. After a few weeks, they realized that Python would be a better fit, and rewrote the code. You could argue it was a waste of time, but this experimentation resulted in valuable learnings and good practice in how to pivot and be agile in order to make critical decisions.
Having fun is another integral part of working at the LEGO Group. We regularly have hackathons, where team members get together, think of a relevant (usually small scale) problem and try to solve it with help of technology. In our last hackathon, we tried to build a scoring and monitoring system for foosball, which would display if anyone is currently playing, the current score, and give the possibility to invite other players via a mobile app. We used LEGO® MINDSTORMS® sensors to track object movements, Raspberry PI to run the application (inside Docker container), React Native to build the mobile app for displaying the score and getting notifications and finally pushing the results to the AWS SNS.
It was a very motivating experience to see everyone – from Juniors to Lead developers – working together, sharing knowledge and most importantly having fun. And a great example to show that the LEGO Group is a great place to grow – both personally and professionally.