Building a culture of excellence | David Singleton (CTO of Stripe)

May 4, 2023 Episode Page ↗
Overview

David Singleton, CTO of Stripe, shares insights into Stripe's unique product development, hiring, and engineering culture, including operationalizing "meticulous in your craft" through friction logging, engineerications, and robust incident response, and how AI is impacting their work.

At a Glance
46 Insights
1h 29m Duration
14 Topics
5 Concepts

Deep Dive Analysis

Stripe's Approach to Product Co-creation with Early Users

Stripe's Unique Hiring Philosophy and Talent Attraction

Building a Product-Minded Engineering Culture at Stripe

Stripe's Operating Principles and Meticulous Craftsmanship

Operationalizing Meticulousness with Friction Logging

Strategies for Effective UX Reviews and Product Improvement

The 'Engineerication' Process for Leaders to Stay Grounded

Achieving High Developer Productivity and System Reliability

Impact of AI and Large Language Models on Stripe's Products

Lessons in Managing People and Delegating Effectively

Stripe's First-Principles Approach to Planning and Prioritization

Upcoming Innovations and Product Releases at Stripe Sessions

Recommended Books for Leadership and Product Development

Favorite Interview Question and Product Discoveries

Operating Principles

These are behavior guidelines distilled from the most effective Stripes, serving as less abstract corporate values. They frame feedback processes, guide work, and are segmented into how Stripe works, who they are, and leader responsibilities, with 'users first' being the primary principle.

Friction Logging

A process where an individual puts themselves in a specific user's shoes, goes through a product flow, and meticulously notes down points of difficulty or 'friction.' This helps identify areas for investment in detail and improvement, often done on a regular rhythm to maintain product cohesion.

Engineerication

A practice where a leader, such as a CTO or engineering manager, clears several days to join a team, pick up a small task, and complete it through the team's exact development experience. This helps them understand developer tools, build infrastructure, documentation quality, and overall team friction.

Chaos Testing

A method of injecting errors into systems to ensure they respond in a way that minimizes impact on users. This proactive approach helps identify and fix vulnerabilities before they cause actual problems, contributing to system reliability and resilience.

Selective Test Execution

A system that determines which specific tests are most relevant and material for an individual code change, rather than running the entire test suite. This innovation helps speed up the testing process for individual changes, improving developer productivity.

?
How does Stripe attract and retain high-caliber talent?

Stripe attracts talent through a strong mission to increase internet GDP, a deep focus on user needs, patience in hiring, personal connections between hiring managers and candidates, and offering tremendous learning opportunities where people can stretch into new roles.

?
How does Stripe build a product-minded engineering culture?

Stripe fosters a product-minded engineering culture by having engineers co-create products with early users, forming deep personal relationships with them, and ensuring every engineer embodies attributes typically found in PMs, such as user insight and problem-solving tenacity.

?
How does Stripe operationalize its 'be meticulous in your craft' operating principle?

Stripe operationalizes meticulousness through practices like friction logging, where teams systematically identify and address points of user difficulty, and by prioritizing incident remediations and polish work on roadmaps, ensuring time is reserved for quality improvements.

?
What is the impact of optimizing checkout flows at Stripe?

Optimizing checkout flows, such as migrating users to Stripe's Payment Element or Stripe Checkout, has resulted in a 10.5% increase in the average user's revenue, demonstrating that meticulous small changes can compound into dramatic business impact.

?
How does Stripe maintain high reliability and rapid deployment simultaneously?

Stripe achieves high reliability and rapid deployment by using extensive automated test suites, deploying changes through increasingly realistic environments with small traffic percentages, and having systems that automatically deploy code to production within about 45 minutes after review.

?
How has AI impacted Stripe's product development and internal operations?

AI, particularly large language models, has enhanced Stripe's fraud detection (Radar), enabled new features like AI-powered documentation search and natural language SQL querying (Sigma), and improved internal efficiency by allowing teams to create and share prompt presets for various tasks.

?
What are key lessons for managing people and leading large teams?

Key lessons include rigorously hiring the right people, trusting them with autonomy by default, consciously delegating even when uncomfortable, meticulously managing one's own time to focus on high-impact activities, and consistently modeling the desired culture and values.

?
How does Stripe approach planning and prioritization?

Stripe's planning involves thinking from first principles, learning from other companies, and focusing on specific user segments. They use an 'inverted W' process where teams surface ideas, leaders synthesize a draft strategy, and then teams refine their plans based on the overall direction.

1. Co-create with Early Users

Find and partner with a select group of early users to co-create your product, involving them in shared communication channels and regular feedback sessions, ensuring the product meets their needs before a broader launch.

2. Practice Friction Logging Systematically

Regularly put yourself in a specific user’s shoes and meticulously log every point of friction encountered while using your product, then invest heavily in solving these identified issues to significantly improve user experience.

3. Prioritize Incident Remediations

Prioritize actions to prevent future incidents (remediations) carefully, often ahead of other roadmap work, as learning from failures and preventing recurrence is crucial for maintaining reliability and moving quickly for users.

4. Perform “Engineerication” Sprints

As a manager, clear several days to join a team, pick up a small task, and go through the full development process, keeping a friction log to understand developer tools, infrastructure, and documentation, then share findings to drive improvements.

5. Establish Rapid User Feedback Loops

Create a mechanism to quickly get product iterations into users’ hands and gather their feedback, as this rapid feedback loop is essential for continuous improvement and significantly reduces the risk of going wrong in product development.

6. Prioritize Users First

Make ‘users first’ a core operating principle, forming deep personal relationships with users and putting their needs at the center of all decisions, which guides product development and attracts mission-driven talent.

7. Define Metrics & Review Regularly

For any product team, identify key metrics that truly represent the desired user experience and regularly review performance against them, as this predictable practice naturally guides micro-decisions and time prioritization towards delivering value.

8. Conduct Collaborative UX Reviews

Bring together the product team and cross-functional partners (e.g., support, executives) to walk through the product as a specific user, openly discussing issues logged during the walkthrough to foster shared understanding and address concerns.

9. Automate Rapid Code Deployment

Implement automated code deployment where changes, after passing comprehensive automated tests, are automatically deployed to production within minutes, enabling tight feedback loops where user feedback can be addressed and deployed within a day.

10. Invest in Developer Productivity Teams

Dedicate a team to developer productivity, treating internal developers as users and applying the same product development process (user understanding, feedback, metrics) to build and prioritize dev tools, ensuring engineers are highly enabled.

11. Cultivate a Strong, User-Centric Mission

Articulate a powerful mission focused on helping users at scale, as this attracts product-minded builders who want agency, understand problems deeply, and are motivated to solve them.

12. Hire for Trust & Autonomy

Focus on hiring individuals you can trust with significant autonomy, as this is crucial for scaling an organization where thousands of daily decisions cannot involve top leadership.

13. Model Consistent Leadership Behavior

As a manager or leader, show up consistently every day, modeling the desired culture and values even amidst challenges, as your presence directly sets the cultural tone for your team and organization.

14. Plan Weekly Priorities Consciously

On a regular basis (e.g., Sunday evenings), consciously list 3-5 high-impact priorities for the upcoming week, allowing this list to guide your time and energy rather than letting your inbox or calendar dictate your schedule.

15. Approach Planning from First Principles

When designing planning processes, think from first principles by considering user needs and learning from other companies, rather than defaulting to off-the-shelf systems, especially in rapidly growing environments, to create effective and evolving processes.

16. Implement Inverted W Planning

Use an ‘inverted W’ planning process where teams surface ideas, leaders synthesize into a draft strategy, teams refine their plans based on the draft, and then leaders synthesize again, ensuring alignment and context distribution across a large organization.

17. Use Structured, Work-Like Interviews

Implement structured and consistent hiring loops for all roles, using questions and exercises (e.g., pair programming, written problems) that closely simulate actual work, to effectively evaluate talent and their problem-solving approach.

18. Conduct Thorough Reference Checks

Pay significant attention to reference checks during hiring, especially for critical and leadership roles, to gain insights from thousands of hours of direct experience with candidates and build strong conviction on hires.

19. Grant Trust, Ensure Accountability

Be generous in granting trust by default to new hires, especially for significant roles, but also hold them accountable to prove they can handle that trust, potentially starting them in smaller roles to build confidence.

20. Foster Learning & Growth

Create an environment with tremendous learning opportunities where people can stretch into new areas and learn a lot, as this attracts and retains high-caliber talent motivated by personal and professional development.

21. Empower Teams to Allocate Quality Time

Trust teams to determine how much bandwidth they need to reserve for addressing polish, technical debt, and operational issues, ensuring that quality and reliability are built into their roadmap planning.

22. Move with Urgency & Focus

Adopt ‘move with urgency and focus’ as an operating principle, emphasizing the importance of rapidly solving current user needs to deliver immediate value, even when building long-term infrastructure.

Make error messages from your API link directly to documentation that explains how to solve the problem, as this delights developers during high-stakes moments and helps them adopt your product more quickly.

24. Obsess Over Conversion Flows

Continuously ‘scar’ and tune critical user flows like checkout, identifying and fixing ‘broken edges’ and small frictions, as these meticulous improvements can compound to significantly increase user conversion and revenue (e.g., 10.5% uplift).

25. Meticulously Craft Marketing Pages

Invest significant care and attention into your website and product explanation pages, as this meticulousness helps users understand the value and power of your infrastructure, building trust and attracting those who appreciate high craft.

26. Conduct Company-Wide Product Walkthroughs

Occasionally conduct ‘Walk the Store’ sessions where the entire company reviews critical product flows together, fostering a shared language and understanding of user experience and product priorities across the organization.

27. Anchor Feedback to User Experience

When giving or receiving feedback in high-stakes meetings, consistently anchor all discussions and questions back to the user experience and what you’re trying to deliver for them, keeping the conversation focused and productive.

28. Prioritize Automated Test Coverage

Invest heavily in comprehensive automated test suites and continuous testing, as manual testers cannot cover the vast array of configurations, and robust automation is foundational for rapid, reliable product changes.

29. Implement Phased Production Rollouts

Deploy changes to production starting with a very small percentage of traffic and gradually ramping up, allowing for early detection of problems before they impact a broad user base.

30. Conduct Thorough Incident Reviews

After any incident, obsessively review it to understand not only what went wrong but how to prevent that entire class of issues in the future, prioritizing these remediations on the roadmap.

31. Implement Chaos Testing

Proactively inject errors and failures into your systems (chaos testing) to ensure they respond gracefully without impacting users, continuously evolving your approach to reliability.

32. Optimize Test Execution Speed

Continuously optimize the speed of test execution, using techniques like parallelization and selective test execution (running only material tests for individual changes), to maintain rapid feedback loops as your codebase grows.

33. Enable Auto-Merge for PRs

Introduce an ‘auto-merge’ feature for pull requests, allowing engineers to indicate that once a reviewer approves, the system should automatically merge the change, cutting out human distraction steps and improving productivity.

34. Enable Frictionless Problem Reporting

Implement a simple, frictionless internal problem reporting mechanism (e.g., a ‘crying octopus’ button) in developer tools, allowing users to easily report ‘paper cuts’ which a dedicated team then uses to prioritize their roadmap.

35. Use LLMs for Documentation Q&A

Leverage large language models (LLMs) to read and embed all internal and external documentation, enabling developers to ask natural language questions and receive instant, synthesized answers, improving efficiency.

36. Use LLMs for Natural Language Queries

Apply large language models to data querying tools, allowing users to ask questions in natural language which the AI then translates into complex queries (e.g., SQL), making powerful data insights accessible to non-developers.

37. Share LLM Prompts as Presets

When building internal LLM tools, create and share ‘presets’ (tuned prompts) across the company, enabling various job families to consistently achieve high-quality results and accelerate adoption of AI applications.

38. Offer AI Code Generation Tools

Make AI code generation tools like Copilot available to engineers, as they can significantly boost productivity by handling boilerplate code and test case generation, allowing engineers to focus on higher-level problem-solving.

39. Manage Personal Energy Levels

Consciously manage your own energy by engaging in tasks that bring joy and energy, even if not the most critical, as this positive energy carries over into other necessary tasks and helps maintain consistent performance.

40. Define Target User Segments

For any given product area, be explicitly clear about which specific user segments (e.g., very small businesses vs. multinational enterprises) you are serving, as their needs can vary dramatically and impact product focus.

41. Be Patient in Hiring

Exercise patience in hiring, especially for critical and leadership roles, taking the time to meet many candidates and build personal relationships, even if it means waiting for the right person to become available.

42. Personalize the Hiring Process

Make hiring a highly personal activity, with managers partnering closely with recruiting to deeply understand candidates and articulate why a role offers personal fulfillment and a significant opportunity.

43. Regular Executive Friction Logs

Senior leaders should regularly go through end-to-end product flows and write friction logs (e.g., monthly onboarding), tagging relevant teams to address issues and maintain a cohesive user experience across parallel workstreams.

44. Use Friction Logs for Praise

When creating friction logs, also make a point to praise good experiences and great work, using these logs as an opportunity to recognize team members internally.

45. Be Intentional About Meticulousness

Be intentional about where to apply meticulousness, identifying high-stakes moments or critical user paths where sweating the details will have the most profound impact and delight users.

46. Wire Plans for Quality Time

Design planning processes to inherently reserve enough time for quality and meticulousness, ensuring that the operating principles of ‘users first’ and ‘meticulous in your craft’ are embedded in how work gets done.

The best PMs for developer-focused products, I think, are usually very technical. They're mostly former engineers themselves or maybe kind of current engineers still tinkering on the side, but bringing a lot of user insight and strategy to the problem.

David Singleton

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.

David Singleton

I personally will not be involved in really any of the decisions that matter and happen. Like there are, there are thousands of decisions that an organization of any skill is making every single day.

David Singleton

I always ask folks, okay, so imagine you were their manager, tell me the performance review or the development feedback you give them to help them be more effective.

David Singleton

I think almost anything that you talk about is a value. I mean, it being a value matters, but you need to have a practice behind that. That means that the value becomes real for everyone.

David Singleton

Stripe Billing Product Co-creation

David Singleton
  1. Identify a correct set of early users (e.g., Figma, Slack) with subscription business models already using Stripe for payments.
  2. Form deep personal relationships with individuals operating systems at these companies to understand their challenges and future aspirations.
  3. Bring these users into a shared product development loop.
  4. Establish shared Slack channels for communication.
  5. Regularly show product iterations to users and get their feedback.
  6. Launch the product to a broader audience only when the original alpha group is 'super, super happy' with it.

Friction Logging Process

David Singleton
  1. Put yourself in a particular user's shoes, having a clear mental model of who they are (e.g., an engineer at Atlassian).
  2. Go through the actual process of using the product (e.g., integrating an API, using the dashboard, writing code).
  3. Make careful, meticulous, stream-of-consciousness notes of the experience.
  4. Pay particular attention to places where friction is encountered that the modeled user would find difficult.
  5. Praise aspects of the product that are good and delightful.
  6. Share the friction log with relevant teams and tag individuals who might need to take action on observed issues.

Engineerication

David Singleton
  1. Clear several days (e.g., three or four) from your calendar, treating it like a 'maker schedule'.
  2. Join a specific engineering team.
  3. Pick up a small task, ideally a small feature that can be taken from start to finish and deployed to production.
  4. Go through the exact development experience the team has, understanding developer tools, build infrastructure, review processes, and documentation.
  5. Keep a friction log during the process.
  6. Write up the experience, using it as an aid-memoir and sharing it with the team to demonstrate understanding and inform prioritization.
16.4 times
Average daily deployments to core API On average, demonstrating rapid iteration and continuous delivery.
99.999%
Stripe's uptime Indicating extremely high reliability for business-critical financial services.
1 in 10 people
Global reach of Stripe-powered transactions In the world have transacted with a business powered by Stripe.
10.5%
Revenue increase from checkout optimization For users migrating to Stripe's Payment Element or Stripe Checkout, compared to vanilla integrations.
45 minutes
Time for code to reach production after merge Including automated testing and deployment, enabling rapid feedback loops.
15 minutes
Time for battery of tests to run on code change Run in parallel to human code review, and again after merge.
Monthly
Frequency of developer productivity survey To gather feedback and prioritize the roadmap for the developer productivity team.