I'm currently a founding engineer at a startup, and with the company's prospects looking shaky I decided, on a whim, to put in an application for an Engineering Manager job at Google.
I wasn't counting on an offer. My understanding is that most people need a few tries before they get through Google's interviews, and I hadn't prepared at all before applying, so I was starting from behind. That drove me up the wall for most of the loop.
The first two interviews were Googlyness and System Design. Having managed people for years, hypothetical scenario questions don't frighten me, since I've lived through (for better or worse) a great many real ones. System design was what scared me, because nothing I've worked on was ever built at scale. To get ready I asked Claude to come up with questions, and it also handed me a framework to follow.
System design didn't feel good, yet I got through and was sent on to the next set.
That set consisted of a code review, a second system design, and a behavioural interview. The code review and the behavioural felt pretty comfortable. Once more, years of going through PRs and sorting out people problems helped me more than any studying. If code review makes you uneasy, my suggestion is to choose Golang: it's a tiny language, so runtime errors and unidiomatic code stand out fast.
The design round is where things went wrong. The task was about complying with IP bans: some country supplies an API that tells you whether an address is blocked, and your system has to turn those connections away. I leaned on assumptions I never verified. I simply took IPv4 as given without asking whether IPv6 mattered, and at one stage I pulled a count of load balancers out of nowhere. Twice the interviewer had to set me straight on what the problem actually was. Afterwards the feedback said my assumptions were shaky, and that I should have been steering the conversation and improving the design step by step, which I failed to do. Underneath it all, I had no practised system design structure that I trusted, and I felt lost. The knowledge was there, I just couldn't put it on display.
I was fully braced for a rejection email. What arrived instead was the recruiter telling me the rest of the feedback was good and that they'd like me to do the system design over. Retakes were news to me, so one poor round in the middle of a loop isn't automatically the end of it.
That time I prepared seriously. I took the approach laid out in an online system design course and practised its sequence until it ran on autopilot: start with requirements, then the non-functional ones, followed by entities and APIs, then the back-of-envelope estimation, the high level design, and finally the deep dives. I also used Claude again, but in a different way. I had it play the interviewer, and then mark my transcripts strictly against a rubric, instead of just supplying questions. Knowledge wasn't the gap, since Kafka, Redis and Postgres have been part of my working life forever. Behaviour was. I made myself follow a single rule: any figure I use must either have been asked about, or been announced out loud as an assumption.
The problem on the second attempt was a worldwide multiplayer board game service, something like online chess, with player matching, leaderboards and 10 million DAU. Before drawing anything I got all of my questions out, worked through the numbers aloud and used them to defend my database pick, and kept hold of the structure the whole way. When the interviewer wanted to know the bottleneck, I pointed at the weakest part of my own design before he did and patched it on the board. The feedback was entirely positive. So whatever your gut tells you about how it went, an hour after a design interview, don't trust it!
Right now I'm at the team matching stage, with a handful of EM openings in Dublin. What I'd tell anyone heading in: lead the interview rather than being led, voice every assumption even if it seems painfully slow, and don't describe your own work as hand wavy while you're in the room. When your interviews finish, if you kept to a solid structure you've most likely already hit the grading rubric. Stop replaying it in your head and just wait for the recruiter.
Discussion
Loading comments…