I am fortunate enough to be on Lyft’s Team to deliver rider and driver delight as we seek to reconnect people through transportation and bring communities together. I’ve worked on many of Lyft’s critical projects, including splitting the app for drivers and passengers, our IPO, expanding to Canada, Bikes & Scooters, and many more.
Recently I was asked to think about some foundational principles that I have gathered after nearly 4 years at Lyft and 13 years working in TPM. With the help of some amazing mentors (Amy Farrow, Peter Morelli, Carlos Whitt, Amish Kagalwala, Sgreene, Nicholas Muldoon, and Nate VanDusen) as well as the Lyft TPM management team this post is where I’ve landed. This is the first in a series of posts on how Lyft TPM operates to deliver for our teams & customers. With the principles in place, I will then focus on optimizing flow and demonstrate how we applied both the principles and flow to one of Lyft’s biggest programs as a real-world example in a future post.
The principles below are the foundation for a high performing TPM organization and they are the same principles that enable us to deliver on Lyft’s mission to improve people’s lives with the world’s best transportation.
1. Customer obsession
We know our customers well, we are engaged with them and get feedback from them frequently and consistently. We know their use cases, pain points, as well as their dreams, wishes, and desires. Our customers and partner teams believe we understand their needs and have their best interests in mind. Customers include riders, drivers, partners, cities, and employees. We thrive to delight our customers!
We take full responsibility, accountability, and ownership of programs and portfolios to deliver customer delight throughout the entire project lifecycle — from ideation to ship, and maintain. We start with the business outcome, value proposition, and high-level view and then dive deep into the details, leaving no stone unturned. We do this by:
- Setting clear and measurable OKRs and driving continual accountability against those OKRs
- Agreeing and iterating on working agreements for our programs and portfolios to ensure we identify customers and stakeholders
- Implementing DACI (Driver, Approver, Contributors, Informed) framework
- Continually grooming a healthy product backlog
- Producing and iterating on product / technical / science specifications
- Limiting the work-in-progress (WIP) to optimize flow
- Aligning on standards ahead of time including a definition of ‘done’, test strategy, experiments & rollout plans
- Maintaining program health with a defined schedule and shipping cadence, gantt tracking (where appropriate) for super large programs and using execution tracking (JIRA and/or GSheets). We regularly check progress and team health against program health
- Documenting a clear communication plan with escalation paths for effective risk management
- Holding regular retrospectives to learn and iterate as we go
Our sense of ownership expands beyond initial execution. We take pride in having clear & crisp documentation to ensure visibility, accountability, alignment, and ease of scaling — something that has become even more important to support remote working across large distributed multidisciplinary teams. We utilize data, goals, and metrics to measure progress and adapt. Our communication is succinct, accurate, and backed with data; from one-pagers to status reports we have a clear call to action. When a program ends (ships/canceled/disbanded), ownership of the features and services shipped as part of the program is transferred to the run the business team, nothing is orphaned or dropped.
3. Technical depth
A healthy TPM organization has a deep understanding of our focus areas and spends time understanding the problem space, ensuring requirements and technical specifications are complete, and fully addressing the program objectives. It’s important to be curious, pressure test assumptions, experiment, and ship as soon as possible to validate those assumptions.
We respectfully challenge prioritization to ensure the most critical problems are addressed first. We take an all-encompassing view; we see the forest and understand the relationship between the trees. Through our deep understanding of the technical space, we help identify new opportunities and dependencies to ensure the right teams are included in programs and portfolios upfront to ensure they are part of the planning process from start to finish. We dig deep into datasets, build dashboards, and understand the details of the program specifications, code, tool, and processes thoroughly.
4. Teamwork, alignment, and cross-functional collaboration
We make relationships a priority. We deliver by empowering and inspiring our colleagues, rather than pushing to hit deadlines. We create working agreements to facilitate healthy discourse, listen, and use inclusive discussions to resolve conflicts and bring teams closer together. The end goal is always to deliver delight for our riders, drivers, partners, cities, and employees.
We lead by example on everything we do to inspire confidence, demonstrate competence, and run a tight ship. We do this by getting multiple teams aligned on one cross-functional shared goal as we strive to understand the diverse perspectives of our program and portfolio of teams. We are force multipliers: we bring people together to deliver way beyond their own capabilities . We celebrate success together and when problems come up, we ask, “how can I help?” We work with teams in conflict or struggling with a program goal to deliver clear recovery paths and align our teams, partners, and leadership on the recovery plan. We get our hands dirty and muck in to help.
5. Growth mindset
In everything we do, we create and grow psychological safety so we, the teams we work with, and partners can learn and grow. We are obsessed with retrospecting to drive continuous learning, improvement, and our own professional growth. We all have both mentors and mentees to make ourselves and others great and hold each other to a high bar. We don’t want to let our teams down. We stay humble and constantly ask for constructive feedback.
6. Simple & scaleable
Lyft TPM teams take complex problems and break them up and dilute them down into simple, elegant, and scalable solutions. Plans change, so we must be adaptable and agile to business needs. We achieve this through iterative delivery, learning, automation, and experimentation by shipping to get data and feedback allowing us to quickly adjust.
We start small with P0 prototype(s) and then MVP(s) to prove our hypotheses and then build on them week-after-week adding in P1s and P2s to reach full capability. We embrace lean principles and agile methodology to keep it simple and ship small increments quickly — when we fail we fail fast, learn, and change course.
We manage to impact & outcomes. We keep the trains on the track and on time to spot risks ahead of time which allows us to respond and avert issues before they happen. When risks do materialize, we use a combination of diverse ideas from the team and data to present a clear call to action to get delivery back on track. We do this by:
- Building diverse and inclusive program teams
- Limiting the amount of work in progress (WIP) at once
- Breaking down work into small vertical chunks to support iterative shipping to prove our assumptions
- Carrying little technical debt
- Maintaining 100% test passing
- Always listening to our customers
We have tenacity and grit to work relentlessly to make programs and portfolios successful. We are meticulous planners, but we understand that the only constant is change and frequently update our plans based on learnings and changing business needs.
8. Portfolio approach
We take on complex, cross-functional initiatives, and company OKRs to deliver the most value against the highest business priorities. Large, complex, and highly cross-functional programs are where we add 10x the value. At Lyft we exercise good judgment in terms of when to work on outside projects which align with company values, whether giving team members an opportunity to volunteer with an organization they believe in or to work on exciting Open Source projects.
We fully utilize our talents working on interesting and challenging problems in an effective system, working on a great team with teammates that we like, to make customers happy. This means we have much more fun at work! As a result, we are motivated, more dedicated, and much more productive.
Coming soon: a post about how I used these principles to optimize flow and deliver on a large cross-functional program at Lyft.
I would love to hear your feedback and thoughts: @JWalpole!
As always, Lyft is hiring! If you’re passionate about developing state of the art products and services or building the infrastructure that powers them, read more about them on our blog and join our team.