A Day in the Life: Alex Phillips (Engineering Manager, Yelp)
Alex describes life at Yelp, including coordinating Hackathon, working on her team’s development, and overcoming the challenge of handling ambiguous situations.
What has been your journey in tech so far?
My journey began with playing lots of video games as a kid! And as I got older, a lot of the gaming evolved into a desire to learn how they worked and how to create them. In high school, my budding curiosity in game development and how computers worked pushed me to take a couple of computer engineering classes where I found the material scratched a personal itch. It was a pretty awesome feeling to have a tangible way to solve interesting problems.
While it felt like a leap of faith at the time, I went on to study software engineering at the University of Ottawa (Canadian in the house!) and it set me on this path that I truly adore.
Early in my career, I had a variety of internships that later became full-time gigs, in different disciplines of software engineering; and notably at companies and teams both big and small. This gave me a valuable perspective on what worked and what didn’t for different team sizes, dynamics, and goals.
When I finally landed at Yelp, it was really everything that I was looking for at that time as a backend engineer. From there, I’ve had wonderful mentors and high-growth opportunities in our Restaurants and Marketplaces organizations to support my move into being an Engineering Manager!
What has been the biggest challenge you’ve faced moving into your current role?
One big challenge that I face and continue to manage is making decisions in situations with high and varying levels of ambiguity. A key part of supporting a team is empowering them to work together towards something (i.e. a goal, mission or direction). However, to provide that something, it likely means making a decision without perfect information. Granted, humans rarely work with perfect information, but as an engineer I was used to being able to work with more concrete variables and reliably static development environment.
In particular, when working on a team where the product may be in a high growth stage, sharing context and setting targets with dynamic information is more important than ever. It allows everyone on the team to make decisions in alignment — regardless of the role they are in or the task they are working on.
We work hard to create a culture that adapts gracefully when circumstances change. We’re always learning new things as we go and always making forward progress. Building a culture that embraces change can be hard, but it’s important!
To overcome this I use a process that basically goes like this: be real about goals and intent, get vulnerable because your team is more powerful than you, get their opinions, allow contribution and then come back with a clear direction. And then after some action has been taken, reassess. The process of continuous improvement is a great way to instill confidence in the face of ambiguity.
Briefly describe your stack and workflow
SeatMe came to Yelp as a Python Django application, and Nowait came as a PHP application. In the past few years, we’ve made a lot of progress building new functionality consistent with Yelp’s service oriented system architecture.
Yelp’s typical stack prioritizes well-encapsulated services that enable teams to leverage consistency of conventions but also build applications that are specific to their use case, so it’s been rewarding to adopt more of this architecture.
Monolith decomposition is a tough task, and I don’t see a total rewrite in our future, but something that keeps us focused is our tech roadmaps. These roadmaps are different than product roadmaps: they assess the state of technical debt and outline high-level improvements and support we should be prioritizing to keep the tech debt in check.
What does your typical day look like?
Yelp engineering managers tend to prioritize supporting the people on our teams first and foremost. (This means I savor the time to code during our Hackathons.) My day typically consists of a handful of 1:1’s with the engineering team and other colleagues in different departments. My team has folks located at our headquarters in San Francisco and distributed all over the US. I’ll generally try to spend some more time via video conference with our remote team as I don’t get to see them in the hallway to catch up on general life updates.
Depending on the time during the quarter, I can also be contributing to quarterly planning, working on career conversations with the engineering team or doing more recruiting activities.
One of the highlights of my job in recent years has been to help out organizing our Engineering-wide Hackathon and participating in Awesome Women in Engineering (AWE) events. AWE is our employee resource group that builds a strong community for women in engineering. They do some exemplary work to connect, develop and support our women and allies in engineering through a variety of programming. It’s always a blast to be involved with
Our team collaborates extensively during the day on Slack — both through text-based chat and video calls. Since we do have several remote engineers on the team, jumping on an impromptu call to work through a code review, having a discussion or a scheduled meeting can be extremely effective to communicate efficiently and successfully.
I keep organized with my calendar — I will live and die by Google Calendar. This is the app I use most frequently because I also block time in the day to work on individual tasks, not just meetings. I have a central to-do list and a note-taking app to make sure I don’t forget 1:1 details or to actually schedule time to work on a task in the future.
What’s the best and worst part of your job?
Team Development is 100% the best part of my job. Working with code is great, but what makes my role intriguing is how people are incredibly complex, so when someone reaches their goal, sees growth in themselves, or breaks through a problem they’ve been working on for a while, it’s so exciting.
People rarely ever respond the same; in code, you mostly work with a predictable model. Input A should produce intended output B. If that doesn’t happen it’s a bug. With people, with input A, you don’t know what output you’ll get and the success conditions are different each time!
The hardest part can be the context switching associated with so many variable situations. Sometimes it’s energizing to work on complementary situations at the same time, but sometimes tasks are unbalanced or thrash from emotionally taxing to rigidly routine. This is where personal balance really helps out; having space for hobbies and other outlets allow me to clear my mind and prepare myself to get back into gear! This is where the Yelp value of ‘Be unboring’ really manifests in my life.
What is the best piece of advice you’ve received?
“Do you need to be doing that?” — Almost every manager I’ve had.
Generally, I think to succeed as an Engineering Manager, you need to enjoy supporting people and teams, being a leader, working on a diverse set of tasks, etc. I found it can be really easy to ‘say yes’ to help out, do that CR, or take on new opportunities. I’ve been working on being intentional with my work, asking myself ‘Can this experience provide development for others?’ or ‘Should I be doing this?’
What is your most useful resource (book, blog, newsletter)?
This answer is colored with the fact I like talking to people. Most useful resource? People, talk to more people. People are the best resource. Everyone can teach you something. My brother is in medical school right now and I’ve learned a lot from him on how he prepares to have tough conversations. Completely different subject matter, but a tough conversation is a tough conversation and I’ve learned from his perspective. As with any resource, I think the most important part of consumption is the critical thinking that goes along with it.
What’s one thing you’d like to learn, develop or work on in 2019?
“Should I be doing this?” :)