Justin Searls - The Empowered Programmer - Rails World 2024

Justin Searls

Learn key traits and practices for building sustainable Rails apps from Justin Searls. Covers architectural choices, testing strategies, and dev philosophy for empowered programming.

Key takeaways
  • Rails helps solo developers build ambitious features by providing smart defaults while allowing flexibility when needed

  • Key traits of an “empowered programmer”:

    • Courage to tackle risky features early
    • Discipline to say no to unnecessary complexity
    • Efficiency in choosing the right tools/approaches
    • Resilience in planning for long-term maintenance
    • Meticulous attention to details
    • Dexterity in knowing when to deviate from conventions
  • Architectural recommendations:

    • Use email-based authentication for simplicity and reliability
    • Leverage ActiveStorage for handling complex file uploads
    • Embrace Hotwire/Stimulus for interactive features without heavy JS
    • Consider import maps to avoid complex build processes
    • Use Tailwind CSS for maintainable styling
    • Implement fragment caching for performance
  • Testing best practices:

    • Use Playwright instead of Selenium for more reliable system tests
    • Address flaky tests early - they indicate brittle implementations
    • Ensure tests work reliably across different environments
  • Development philosophy:

    • Start with the riskiest features first
    • Store only essential data permanently
    • Optimize for future maintenance
    • Focus on user experience over technical purity
    • Make deliberate choices about what features to exclude
    • Build for long-term maintainability
  • Success metrics should focus on:

    • Reducing future technical debt
    • Maintaining predictable costs as usage grows
    • Delivering genuine user value
    • Building sustainable, maintainable systems