David Singleton is the CTO at Stripe, where he oversees engineering and design teams. Since joining Stripe, David has helped grow the technology org across the U.S. and developed new engineering hubs in Singapore and Dublin as well as Stripe’s fifth hub, remote engineering, across the globe. Before Stripe, he spent 11 years at Google, where he was VP of Engineering, leading product development and coordinating more than 15 different hardware partnerships.
Find the episode transcript and David’s references here.
How Stripe’s unique hiring process has helped them build an incredible team ▶️
- Stripe has a compelling mission that resonates with talented people - To increase the GDP of the internet by building economic infrastructure. This attracts people who want to work on something meaningful and take agency in solving complex problems.
- Stripe takes a patient, personalized approach to hiring. Managers invest time to identify needs, get to know candidates deeply, and build relationships over time.
- Stripe provides tremendous learning opportunities and career growth. People often take on new roles and pick up new skills. There's support for stretching into unfamiliar areas.
- Stripe emphasizes teamwork and collaboration. The culture is about people working together, not competing. At Stripe, work is seen as a team effort rather than a zero-sum game.
- Stripe gives talent a lot of autonomy and agency. People are empowered to come up with their own solutions based on user needs. Instead of top-down directives, Stripe trusts employees to identify issues and develop innovative solutions.
An example of a relentlessly curious and passionate employee ▶️
Jeff is the PM for our Atlas product, and he's a great example of someone who cares a lot about learning exactly how the world works.
- Understand your users' pain points: Jeff dug into the details to understand the frustration of needing to get an Employer Identification Number (EIN) from the IRS to start a business, to then birth the idea of Atlas.
- Don't accept the status quo: Jeff kept asking "Does it have to be this way?" about the IRS process, rather than accepting it as is. People who don't settle for "that's just how things are done" can uncover better ways of doing things.
And I think that's exactly a great example of how being curious, having this relentless passion to solve problems for users and then just keep plugging away at a problem delivers this great result and in a environment where you can learn a lot from each other.
Structured hiring loops at Stripe ▶️
- Consistency in interview structure: Stripe evaluates all candidates in a consistent way by using structured interview loops, which allows interviewers to benchmark candidates across a spectrum of responses, and reduce overall bias.
- Real-world simulations: The interview exercises try to mimic real work as closely as possible. Engineers complete coding challenges similar to actual problems Stripe solves. PMs tackle written exercises modeling real PM work. This provides a window to how candidates approach actual job responsibilities.
- Collaboration is encouraged: Interviewers want to see how candidates think and work in a collaborative setting. Engineers can ask their interviewers questions during coding, and PMs can discuss their written cases.
“It's actually kind of pair programming and candidates are welcome to use Google to search for Stack Overflow to search for answers. We don't care. We just want to see the outcome”
How Stripe built a product-minded engineering culture ▶️
- The early engineers were very product-focused even before hiring dedicated PMs. They deeply understood users' needs. This allowed Stripe to build great products even with few PMs initially. David believes every single engineer could also have been and essentially also was acting as a PM.
- Stripe had users like Figma and Slack closely collaborate on new products like Billing which ensured the product solves real problems, which became a Stripe philosophy to have customers try products early on proactively and create a process around that before launching publicly.
- A cross-functional approach to product development: “Stripe’s product teams involve not just PMs and engineers, but also partners, legal, risk, etc. early on Sometimes folks from our partnerships team are part of the kind of early development phase of a product”
Stripe’s operating principles ▶️
- Setting core principles and values early on: Stripe's founders established operating principles - being "users first" and "move with urgency and focus" that captured what made the company successful in its early days, allowing it to scale effectively.
- Sweat the small stuff in your craft: Stripe put A LOT OF thought into details like helpful error messages in their API, which they considered a product of its own.
“Something that really delighted me was that when I started integrating the product, there were parts of the experience where I was stuck...because something that the team at Stripe had done was we made the error messages coming out of our API link to the piece of the docs that told you how to solve the problem."
How Stripe uses “friction logging” to build a meticulous product culture ▶️
About Friction Logging: https://dev.to/stripe/how-we-use-friction-logs-to-improve-products-at-stripe-i6p
Stripe doesn't take a generic view of "the user." They get specific by pretending to be a particular user persona, like an engineer integrating Stripe's billing API. Then they diligently address each friction point, which adds up to a dramatically better overall experience.
So for instance, I might be integrating the Stripe billing API and I might put myself in the shoes of an engineer at Atlassian, which is one of the world's largest SaaS platforms and using actively Stripe billing for automating all the revenue today, I might put myself in the mindset of that person.
- Little changes that have big revenue effects. For eg, Stripe optimized their checkout UI elements, reducing latency and clicks. This boosted conversion rates and revenues by 10.5% for users who upgraded to Stripe Checkout.
- Marketing as an opportunity to demonstrate your careful approach. Since Stripe's core technology is behind the scenes, their marketing carries the burden of conveying quality.. This builds confidence in their unseen infrastructure.
How to operationalize friction logging ▶️
- Regular friction logging to identify areas for improvement: David himself runs a Friday Fireside meeting where he “walks the store”, where they talk a product experience and go through the full experience of a critical flow and talk about how it reflects different business priorities and what the user is actually experiencing. This has fostered a shared language around users' needs, and reinforce craft and quality values.
- Template to guide the friction logging process: Stripe has a public template that outlines the key details to capture - goal, user persona, detailed flow and commentary. Leaders conduct their own friction logging on broader experiences to maintain alignment across their organizations and helped scale the practice (Related, checkLessons from scaling Stripe | Claire Hughes Johnson (ex-COO of Stripe))
How to set PMs up for success ▶️
Stripe’s operating principles set the foundations for PMs to succeed.
- Prioritizes fixing problems and improving reliability: Invest time to understand why things went wrong and prevent future issues (Post Mortems). This means prioritizing "instant remediations" over other roadmap items when needed. It also prevents bigger problems down the line.
- Build flexibility into roadmaps: Stripe has a culture where teams reserve bandwidth in their plans to address friction logs and other unexpected issues. There's no set percentage, though teams set their own buffers.
There's no top-down rule on time allocation. Teams decide how to best balance planned work with reliability improvements and remediations. “It varies by team and varies by stage of product. So there is no Stripe kind of like we will reserve 50% of our time to do this stuff. That wouldn't make any sense”
Advice for presenting to CTOs ▶️
Pre
- Focus on the user experience: When preparing for high-stakes meetings like a UX review, put yourself in the shoes of the user. Understand their goals and needs, and use that as an anchor when responding to questions or feedback. For example, if asked about a design choice, you could say "We made this button blue because testing showed it helped users more easily locate the checkout flow."
- Set expectations ahead of time: Making it clear you want an open and constructive discussion focused on users can prevent misaligned expectations.
- Provide context for feedback: Giving broader context prevents team members from over-indexing on small remarks. It focuses feedback conversations on what matters most to the user rather than minor details. For eg, "I noticed the checkout button color contrasts poorly with the background, making it hard to find. Since we know ease of checkout is critical for users, how about we explore some color options."
Post
- Solicit feedback: After important meetings, follow up with attendees to understand how they felt it went. You can send a quick email saying "Thanks for the discussion today. I'd love any feedback you have on how I could make our next meeting even more productive."
- Practice makes perfect: The more you role-play and prepare responses ahead of time with the user in mind, the more natural you'll sound during the actual discussion.
How to get better at building products ▶️
- Iterate closely with users: "If you have a mechanism to listen to users, get something in their hands quite quickly and then get their feedback on it to run it back through a feedback loop, you're very unlikely to go wrong."
- Speed up the cycle from idea to getting user feedback: “Look for ways to shorten the time from when you have a new concept to when you can get it in front of users and get their feedback” If you don't have a tight feedback loop with users, make building one a priority. Many products are built without ongoing user feedback loops.
Stripe’s “engineerications” and the importance of getting into the weeds as a leader ▶️
- Getting deep into the details as an engineering leader is important for guiding teams effectively. David calls this "engineerication" - clearing your calendar to join a team, pick up a small feature, and go through the full development process. This builds empathy and understanding of real challenges your engineering teams face.
"We ask all of our managers to be kind of the editors in chief of their teams plans. And I think the only way to do that is to get the right loop for yourself to understand what is actually going on the ground."
- Empower engineers to drive productivity. Stripe surveys engineers monthly to hear pain points directly and uses data to guide investments in dev tooling/workflow. Engineers closest to the problems are enabled to drive solutions.
- Hands-on learning is powerful - even as CTO, David wasn't afraid to learn Ruby from scratch while engineericating. Being humble and willing to learn goes a long way. He was scared of losing credibility as CTO without Ruby experience, but appreciated his buddy's help in learning on the job.
Auto-testing and other strategies to improve shipping speeds ▶️
- Automated testing is critical. Stripe has extensive automated tests that run on every code change before it can be deployed. This catches issues early. To scale testing, they selectively run only the most relevant tests on each change.
- Use staging environments. Changes go through progressively more realistic testing environments before full production rollout. This allows catching issues before exposing customers.
- Incrementally roll out production changes. New code is slowly rolled out to a small percentage of traffic then ramped up. This minimizes blast radius if issues arise.
- Have robust incident response. When issues inevitably occur, have strong systems and culture for rapid resolution and learning from incidents.
"We really obsess about reviewing them carefully and identifying not only what would've stopped this thing happening, but how could we prevent this whole class of issues in the future.”
- Continuously improve processes. Regularly evolve deployment, testing and incident practices to drive improvements. Changing user needs require constant velocity.
Improving developer productivity ▶️
- Automate deployment processes to reduce manual oversight. The auto-deploy mechanism removed the need for engineers to manually monitor deployments, freeing them up for other tasks. “literally being able to be fingers on keyboard on something else while your change is going live and it's going to automatically monitored, that was a big improvement in our productivity.
- Optimize code review processes. An "auto-merge" option in pull requests allowed changes to be automatically merged once approved. “We have a little tick box that you can tick on your pull request. That's what you call an individual change that an engineer produces that is auto merge, which means once the reviewer says this is good, I don't need to come back and look at it again, the system should just take over”
- Make incremental improvements that compound. Small optimizations like improving the code review process can ladder up to big productivity gains over time.
- Provide self-service options. By enabling engineers to bundle their changes with others' for deployment monitoring, David gave engineers more autonomy and flexibility.
- Leverage tools to customize and enhance workflows. Stripe uses GitHub Enterprise for code review but built their own custom experiences on top of it. Evaluate existing dev tools and see where you can customize experiences to fit your processes better.
How AI has impacted the way Stripe builds product ▶️
- Stripe has been using machine learning for years in core products like Radar for fraud detection. The shift to transformers and large language models like GPT has further improved these systems.
- Stripe supports AI startups by providing easy revenue models, subscriptions, and financial tracking. This allows AI companies to focus engineering resources on innovation versus building financial systems.
"One big difference between AI startups and others is it's actually quite expensive to operate an AI startup in terms of the compute resources. Like running this stuff in these GPU machines is quite expensive. So typically these companies need to have a monetization model from day one. And I'm really excited to say most of the AI on these is running on Stripe." (OpenAI uses Stripe)
- Stripe is applying large language models like GPT-4 internally to improve documentation, allow natural language queries of data, and increase team efficiency. They quickly built an internal GPT-4 model to maintain security and governance over sensitive data, while still providing teams access to generative AI.
Why David is excited about Copilot ▶️
- Copilot can generate boilerplate code and test cases, allowing engineers to focus on more complex problems and improving code quality. David found it increased productivity at Stripe.
- Some engineers enjoy writing code manually and see Copilot as taking away that enjoyment. But David believes over time engineers will appreciate offloading repetitive tasks to focus on bigger challenges.
“I was talking to an engineer and he's just like, I like the active writing code and it makes me sad that this is doing this for me. So he turns it off.”
- Copilot learns from the code it's exposed to, so it can perpetuate best practices and code standards used at companies like Stripe. This allows it to integrate seamlessly into existing workflows.
As AI assistants evolve, engineers may need to shift some of their focus from writing code to higher-level system design and integration. Companies will have to help engineers develop these skills.
Lessons from managing people ▶️
- Hire the right people and trust them. Focus on bringing in talented people you can trust with autonomy.
"I personally will not be involved in really any of the decisions that matter and happen. There are thousands of decisions that an organization of any skill is making every single day."
- Prioritize your time wisely.
"I actually write a list for myself of, you asked me a question at this podcast, which is like, what would be great success for this podcast from your perspective? I basically think about that for my week every Sunday night."
- Model the culture and values. As a leader, how you show up matters. Exhibit the culture you want through your consistent behavior.
"I try very hard to show up very consistently every day, even though there will very frequently be things that are going wrong and are bad and are hard."
Planning and prioritization based on first-principles thinking ▶️
- Gather outside perspectives when designing planning processes. Stripe learns from other companies like Amazon to help shape their practices.
- Keep the end user for each product area at the center when making plans. Understanding target users helps teams prioritize the right things. Stripe serves both tiny startups and huge enterprises, so each team must focus on their distinct users' needs.
- Use an "inverted W" approach to align company and team priorities. Stripe starts with team plans, synthesizes them into company plans, then realigns team plans. This top-down, bottom-up flow allows broader strategy and on-the-ground needs to inform each other.
“We typically have teams surface what their immediate thoughts are on the most important things to do. We'll then have a group of product leaders get together and try to synthesize the most important parts of that into a kind of draft overall company strategy, and then take that back down to teams."
What’s next for Stripe ▶️
- Stripe is launching new revenue and financial automation features that will help companies manage complex billing scenarios. This allows companies to model things like discounts, add-ons, and pricing changes over multi-year contracts.
"For instance, you might sign a deal where it has a discount in the first year, and then there's another product that's being used in the second year, and then something else happens in the third year. You can now model all of that in Stripe Billing, and we're going to be showing how you can do that in the dashboard at Stripe Sessions next week."
- Stripe Connect now enables platforms and marketplaces to customize and embed Stripe's management UI into their own dashboards. This gives them the power of Stripe without as much engineering work.
- Stripe is incorporating large language models like GPT-3 into its products to automate more processes for users. This includes areas like fraud detection and revenue analytics.
Lightning round ▶️
Q: What are two or three books that you've recommended most to other people?
A: High Output Management by Andy Grove, Build by Tony Fidel, Scaling People by Claire Hughes Johnson
Q: What's a favorite recent movie or TV show?
A: YouTube videos on AI, especially Andre’s channel
Q: What's a favorite interview question you like to ask?
A: "Which leader that they’ve worked with do they admire most and why?" And then asking how they would give that leader feedback to improve.
Q: What are some favorite products you've recently discovered that you love?
A: Mid-Journey for AI generated images
Q: What's your favorite image that you've created?
A: A wolf in a purple velvet cloak in front of a campfire and shack in a forest with a nebula behind, for his daughter's book cover
Q: What's something relatively minor you've changed in your product development process that has had a tremendous impact on your ability to execute as a team?
A: Adding a "crying octopus" 🐙 emoji button for developers to easily log problems
This is a human edited summary of the podcast episode with David, by Gaurav Chandrashekar (@cggaurav, productscale.xyz). To listen to the full episode, go here.