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

2025-10 PyCon Brasil keynote - Behind the scene...

Avatar for Sebastián Ramírez Sebastián Ramírez
October 31, 2025
16

2025-10 PyCon Brasil keynote - Behind the scenes of FastAPI and friends for developers and builders

Avatar for Sebastián Ramírez

Sebastián Ramírez

October 31, 2025
Tweet

More Decks by Sebastián Ramírez

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