Welcome to the latest edition of “My Path to Google,” where we talk to Googlers, interns and alumni about how they got to Google, what their roles are like and even some tips on how to prepare for interviews.
Today’s post is all about Mohamed Yosri Ahmed, a Site Reliability Engineer at our Munich office. Yosri’s passion for coding competitions led him to Google -- and now he supports young programmers as a mentor in Google’s own series of coding competitions!
So first off, what is “competitive programming” and what are the competitions like?
In competitive programming, participants put their skills to the test as they work their way through a series of algorithmic puzzles. Competitions are timed, and oftentimes you’re working together with a group of teammates in order to solve difficult puzzles together. Competitive programming is really fun and challenges those who practice it to grow technically and personally.
How did you first get involved with competitive programming?
I was born and raised in Cairo, Egypt. I got my computer science bachelor’s degree from Ain Shams University, which is also when my journey with competitive programming (CP) began. Since then I’ve developed a passion for problem solving and finding solutions to complex challenges and riddles.
What’s your role at Google?
I am a Site Reliability Engineer at the Production Productivity Engineering team. We focus on helping Google rapidly launch reliable services through applying best practices. We get to engage with many teams working in many different areas; this is challenging yet super exciting.
What inspires you to log in every day?
At Google there are always new learning opportunities and the possibilities to grow are endless. Google really cares about its employees’ growth and happiness at work.
Also the impact of my team’s work and the products we build, that affects so many people's lives in many ways, makes me feel grateful and inspired to do more.
How did the recruitment process go for you?
After graduating from college, I got contacted by a Google recruiter following my performance in Code Jam that year. Relocation at that point was not easy for me so we had to stop the process. A couple of months later, I got contacted again by another Google recruiter to explore opportunities. By then, things were clear for me and we decided to move forward and start the interview process. I actually flew from the International Collegiate Programming Contest World Finals in Portugal to do my onsite interviews in France.
How did you join the Site Reliability Engineering team at Google?
After passing the interviews, I proceeded to the next step: software engineer team matching. My recruiter also asked me about my interest in Site Reliability Engineering (SRE) which I didn’t know much about at the time. A Googler SRE friend suggested I check out one of the free online books Google SREs wrote to share their best practices.
How did coding competitions prepare you for SRE at Google?
Competitive programming can help participants develop lots of skills that are useful for SRE, like dealing with ambiguity and being able to troubleshoot abstract ideas without necessarily being the expert.
CP trains us to focus on targets and how to achieve them. The short time limits teaches us to appreciate every moment and to efficiently utilize the resources we have.
Another aspect of similarity is troubleshooting and testing at scale. Both are key skills and responsibilities for SRE in order to be confident about a system and to know why it may or may not work. With tight time constraints to solve different problems and penalties on wrong attempts, CPers develop their testing and troubleshooting skills.
Both CP communities and SRE thrive on communication and collaboration. SREs have huge diversity in their responsibilities and how they approach them. Cross team collaboration during incidents for a common mitigation goal is similar to a CP style where 3 teammates are trying to solve the same problem on a single PC. In this style, coordination of efforts is essential.
In CP, team members may have different strengths in different algorithmic and data structures topics and they join their skills to solve more complex problems. Along the way, we learn to make use of our different skill sets in order to succeed together.
Any other tips you’d like to share with aspiring Googlers?
The path to success is not unique. These paths may cross but they may never be the same for everyone. We should identify our skills and put them into practice to sharpen them. We should always keep on learning and aiming for a better future.