Justin Searls - The Empowered Programmer - Rails World 2024

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