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

May 4, 2023 1h 29m 46 insights Episode Page ↗
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.
Actionable Insights

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.