Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyCon Taiwan Keynote - Behind the scenes of Fas...

PyCon Taiwan Keynote - Behind the scenes of FastAPI and friends for developers and builders

Avatar for Sebastián Ramírez

Sebastián Ramírez

September 08, 2025
Tweet

More Decks by Sebastián Ramírez

Other Decks in Technology

Transcript

  1. @tiangolo • 🏠 Homeschool • 💻 Computers • 📹 Video

    edition • 🎹 Music production • 🎨 Graphic design • 🕸 Web development • 🤖 Systems for my parents' small business ◦ 😬 (which they didn't need) 🤓 Homeschool
  2. @tiangolo • For me • For my team • For

    the product • For everything... 󰞵 Solve a problem
  3. @tiangolo • For me • For my team • For

    the product • For everything... 󰞵 Solve a problem
  4. @tiangolo • 🤓 Solve a technical problem • 🙋 A

    problem important to you • 📖 Study the tools • 👷 Sometimes no courses, only manuals, docs • ✨ SOLVE A PROBLEM ✨ 󰞵 Solve a problem - power user first 🤓
  5. @tiangolo 󰞵 Solve a problem • ✨ Solve a problem

    • ✨ Solve a problem • ✨ SOLVE A PROBLEM ✨
  6. @tiangolo ⚙ Build what needs to be built • ✨

    Solve a problem • 🔍 Not solved yet? • ↩ Previous problem? • 🧱 Use other building blocks, open source • 🥞 Current abstraction layer too low? • ✏ Cost of learning much lower? • 🍒 Convenience much higher?
  7. @tiangolo ⚙ Build what needs to be built • ✨

    Solve a problem • 🔍 Not solved yet? • ↩ Previous problem? • 🧱 Use other building blocks, open source • 🥞 Current abstraction layer too low? • ✏ Cost of learning much lower? • 🍒 Convenience much higher?
  8. @tiangolo ⚙ Build what needs to be built • 🥞

    Current abstraction layer too low? • ✏ Cost of learning much lower? • 🍒 Convenience much higher? ⚖ Tip the scale ✨ Trip the scale ✨
  9. • 🥞 Current abstraction layer too low? • ✏ Cost

    of learning much lower? • 🍒 Convenience much higher? @tiangolo ⚙ Build what needs to be built ⚖ Tip the scale ✨ Trip the scale ✨
  10. @tiangolo 🐥 Optimize for user, not maintainer • 🥽 Point

    of view of user • 🏗 Design UX first, build internals to fit it • 🍕 Autocompletion depends on types • 📣 Inline errors depend on types • 📑 Explicit parameters, not **kwargs
  11. @tiangolo 🐥 Optimize for user, not maintainer • 🥽 Point

    of view of user • 🏗 Design UX first, build internals to fit it • 🍕 Autocompletion depends on types • 📣 Inline errors depend on types • 📑 Explicit parameters, not **kwargs
  12. @tiangolo 🐥 Optimize for user, not maintainer • 🥽 Point

    of view of user • 🏗 Design UX first, build internals to fit it • 🍕 Autocompletion depends on types • 📣 Inline errors depend on types • 📑 Explicit parameters, not **kwargs
  13. @tiangolo 👔 Standards • 😴 Reading might be boring •

    🔀 Free interoperability • 😱 Be aware of non-used standards • 👀 Be aware of standards de facto
  14. @tiangolo 🐣 Capture a smart newbie • 🌱 Fresh eyes,

    nothing is obvious yet • 🕳 Find voids of info • 🥽 Adopt a newbie's point of view
  15. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache"
  16. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache"
  17. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache"
  18. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache"
  19. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache" • 🍝 If duplication needed, keep it close • 🔄 Reduce out of sync
  20. @tiangolo ➖ Reduce info duplication (cache invalidation) • 🐑 Not

    the same as code duplication • 🔧 Variables, configs • 🪞 Information duplication is a "cache" • 🍝 If duplication needed, keep it close • 🔄 Reduce out of sync
  21. @tiangolo ➕ Reduce ambiguity (naming things) • 🐑 Avoid different

    things with the same name • 📝 In code, docs, configs
  22. @tiangolo ➕ Reduce ambiguity (naming things) • 🐑 Avoid different

    things with the same name • 📝 In code, docs, configs
  23. @tiangolo ➕ Reduce ambiguity (naming things) • 🐑 Avoid different

    things with the same name • 📝 In code, docs, configs
  24. @tiangolo ➕ Reduce ambiguity (naming things) • 🐑 Avoid different

    things with the same name • 📝 In code, docs, configs
  25. @tiangolo 📝 Write good docs - 1/2 • ↩ What

    needs to be explained before? • 🕸 Graph of concepts • 📖 Explain everything • 📝 Re-read, re-write, clean, trim down • 🐑 Reduce duplication of concepts • 🚲 User's minimum effort • 🚀 …to get maximum value
  26. @tiangolo 📝 Write good docs - 2/2 • 💅 Space,

    graphics, emojis, notes • 📑 Consistency for terms and concepts • ✒ Style for terms and concepts • 👷 Enable power users • ✏ Docs driven development • ✅ Test example code in docs
  27. @tiangolo 📝 Write good docs - 2/2 • 💅 Space,

    graphics, emojis, notes • 📑 Consistency for terms and concepts • ✒ Style for terms and concepts • 👷 Enable power users • ✏ Docs driven development • ✅ Test example code in docs
  28. @tiangolo 🏰 Premature abstraction is dangerous • 🚤 Premature optimization

    • 🏰 Premature abstraction • 🥞 Reduce constraints and abstraction layers ◦ A class ◦ that calls another class' method ◦ when it could be a function • 👔 Harder to detect, looks engineery • ☑ Should have a reason
  29. @tiangolo 🧬 Optimize evolution, not architecture • ♻ Better being

    able to refactor • 👔 …than pristine first architecture • 🪟 Types ◦ Mainly inputs and outputs of functions ◦ dataclass / Pydantic fields • ✅ Tests • ⛔ Limit ◦ Magic kwargs ◦ Import strings ◦ Magic strings
  30. @tiangolo 🫓 Simple is better than complex • 🐍 Zen

    of Python • 🥵 Achieving simple is harder than complex • 🏰 "Building complex is easier" • 💪 Put the effort, build the simpler stuff • 😎 That's the price of cool products
  31. @tiangolo 📎 Workload • 🙋 Open source by one or

    two developers • 🫂 Community is made of specific individuals • 🤖 Automate
  32. @tiangolo 🔖 Issues • 🐤 > 90% is user errors

    • 🐛 If allowed, declared as bugs • 📎 Not enough info • 📃 Use templates for questions / issues
  33. @tiangolo 🐶 Drive by PRs • 📂 Many files •

    🌿 Multiple features at the same time • ⛔ Tests failing • 🫙 No tests covering the feature • 🎯 No clear objective • 🙋 No use case • 🧭 Out of scope • 🔮 PRs vs future plans • 🐶🎂 Cake vs Puppy PR — Will McGugan
  34. @tiangolo 🔬 Drive by reviews • 💅 About style •

    🙋 Code structure with personal opinions • ➕ Asking for extra changes or features • 🌳 One line change / 1000 lines to review • 📝 Docs with what to review • 🎯 Solves the problem? • ✅ Has tests?
  35. @tiangolo 🏋 Yes gain, yes pain • 🐘 The bigger

    the impact ◦ ...the higher the chance of bitter people ◦ ...weirder the haters ◦ ...weirder complains • 🤷 That's success • 🌑 Dark places ◦ HackerNews ◦ Reddit ◦ Some Forums
  36. @tiangolo 🏋 Yes gain, yes pain • ☕ (I do

    drink lots of coffee) • 🎁 Your attention is valuable • 🏆 Reward your attention carefully • 👀 Brings visibility / importance
  37. @tiangolo 🎭 Culture • 🫅 Don't convince entitled annoying people

    • 👹 Keep toxic people away • 🦖 Bad ones fall on their own • 🛡 Protect the community • ⚔ Take action when needed • 🌿 Most people are good • 🏗 Just build things • ✨ Solve a problem
  38. @tiangolo 🏦 Sustainability • 🤝 Sponsors are friendly • 🍫

    Small sponsorships make you happy • 🥗 ...but don't sustain • 💰 Sizable, recurrent sponsorships are rare • 📦 Mainly receiving something extra in exchange • 🫙 ...it's a transaction, you're selling something • 📺 Open source becomes distribution, marketing
  39. @tiangolo 🚌 Bus factor • 🚌 "what happens in case

    X get hit by a bus" • 🙋 One or two open source developers ◦ …the case for most projects ◦ …even the biggest ones • 🐸 Worrying about poisonous frogs • 🪥 …vs washing your teeth
  40. @tiangolo 🚌 Bus factor • 🚌 "what happens in case

    X get hit by a bus" • 🙋 One or two open source developers ◦ …the case for most projects ◦ …even the biggest ones • 🐸 Worrying about poisonous frogs • 🪥 …vs washing your teeth
  41. @tiangolo 🚍🎟 Bus ticket factor • 💰 Who's paying for

    the ticket • 🎟 What is the bus ticket • ✈ Airplanes have only 2 pilots ◦ 🎫 …lots of tickets • 🪙 Some value / objective ◦ 😌 Satisfaction ◦ 🏆 Recognition / job perks ◦ 🫙 Sell something