Skip to main content
SP

Steve Polito

Steve Polito is a Ruby on Rails developer with deep expertise in open source contribution, software design, and modern web development techniques. Through his podcast appearances and technical work, he's established himself as a pragmatic problem-solver who excels at breaking down complex development challenges into manageable components. Polito is particularly known for his insights on vertical feature slicing, strategic open source contributions, and leveraging frameworks like Hotwire to create progressive, user-centric web applications. He demonstrates a nuanced approach to software development that emphasizes clean code, efficient problem reproduction, and building applications that balance technical elegance with practical functionality. His work, exemplified by projects like BotCasts, serves as both a functional solution and an educational resource for developers seeking to improve their craft.

4episodes
1podcast

Featured On 1 Podcast

All Appearances

4 episodes

AI Summary

→ WHAT IT COVERS Steve Polito discusses the major rewrite of Suspenders, Thoughtbot's Rails application generator gem that existed since 2008. The conversation covers using AI for onboarding, the technical architecture shift from Rails engine to application template, and how the gem packages Thoughtbot's Rails conventions including RSpec, FactoryBot, Heroku deployment, and strong migrations into a single command. → KEY INSIGHTS - **AI-Assisted Onboarding:** Use Claude in plan mode to identify which existing specs to examine first when starting new projects, rather than having it write code directly. Ask the AI to flip the script and question your feature approach, then distill those questions for stakeholders across time zones, reducing wait time from hours to minutes while maintaining human validation. - **Consultants as Question Askers:** Professional consulting centers on asking the right questions early, especially for new features that establish future patterns. Use AI to surface edge cases and considerations not in acceptance criteria, then validate with product stakeholders. Understanding what you don't know matters more than demonstrating existing knowledge, particularly when onboarding to unfamiliar domains. - **Suspenders Architecture Evolution:** The gem shifted from inheriting Rails generator classes to becoming a simple wrapper for Rails new that passes three options: Postgres database, skip test framework, and an application template file. This rewrite removed 5,000 lines of code, added 1,000, and reduced generation time to eight seconds while making contributions significantly easier. - **CI Testing Generated Apps:** Configure continuous integration to actually run suspenders new, generate an app, scaffold a resource, and execute the test suite inside the generated application. This prevents the common failure mode where the gem's tests pass but apps generated by the tool have broken CI, ensuring end users receive working applications from day zero. - **Two-Commit Audit Trail:** Generate an initial commit containing everything Rails new produces, followed by a second commit showing only suspenders modifications. This creates a clear diff for teams to audit what the gem adds, enables easy customization of specific settings, and provides valuable context for future git blame investigations when questioning configuration choices months later. → NOTABLE MOMENT The discussion reveals how thinking about prose and arguments as dependency graphs enables structural editing. Each premise becomes a node with dependencies, and valid writing paths must follow topological sort order where you only visit nodes after their dependencies. This separates edits that change the graph structure from those that merely reorder the traversal through unchanged dependencies. 💼 SPONSORS None detected 🏷️ Rails Development, Open Source Maintenance, AI-Assisted Coding, Software Architecture, Developer Tooling

AI Summary

→ WHAT IT COVERS Steve Polito discusses BotCasts, a Rails podcast player application that demonstrates Hotwire capabilities through progressive enhancement, semantic HTML, and Rails conventions, serving as both functional app and interactive tutorial. → KEY INSIGHTS - **Progressive Enhancement Foundation:** Start with semantic HTML using forms and links that work without JavaScript, then add Hotwire features like keyboard shortcuts by programmatically clicking existing elements—the enhancement becomes almost trivially simple when built on solid foundations. - **Turbo Over Stimulus:** Solve most interactive features using Turbo Frames with query parameters and form state management rather than writing custom JavaScript controllers. Stimulus serves primarily as polish for small interactions, while Turbo handles asynchronous page updates through HTTP conventions. - **Tutorial Architecture:** BotCasts uses curated Git commit history as its teaching method, allowing developers to either review diffs, check out branches to code along, or simply reference the source code—providing multiple learning paths without maintaining complex test scaffolding. - **State Management Pattern:** Manage application state through URL query parameters and form fields rather than JavaScript state objects. For example, use show_avatar=true in URLs to conditionally render components server-side, making state shareable and functional without JavaScript enabled. → NOTABLE MOMENT The white elephant gift exchange resulted in both participants unknowingly bringing birding field guides—Stephanie contributed a humorous guide to dumb birds and received two traditional guides, while her counterpart got her book, creating an unexpected perfect swap. 💼 SPONSORS None detected 🏷️ Hotwire, Rails Conventions, Progressive Enhancement, Turbo Frames

AI Summary

→ WHAT IT COVERS Steve Polito joins Joel Quenneville to explore decomposition as a fundamental developer skill, covering how to break down features into vertical slices, separate branching from business logic, and apply atomic thinking to stories, commits, and code structure. → KEY INSIGHTS - **Vertical Slicing:** Ship features as thin vertical slices that deliver user-facing behavior rather than horizontal layers like models then controllers. This approach informs implementation decisions through actual user interaction patterns and prevents shipping dead code that provides no immediate value to users. - **Triangle of Separation:** Apply three principles to break down complex code: write at single abstraction levels, separate branching logic from business logic into different functions, and push conditionals up the decision tree. This forces extraction of reusable functions that can be independently composed and tested. - **Scope Reduction Tactics:** Negotiate with stakeholders to simplify initial deliverables by removing modals in favor of inline displays, shipping calculated values before detailed breakdowns, or placing features behind flags. This reduces PR size from weeks to days while maintaining shippable value and enabling faster priority adjustments. - **Churn-Complexity Analysis:** Identify refactoring targets by finding files with both high complexity and high change frequency. Extract duplicated business logic into service objects based on responsibility patterns like synchronous versus asynchronous execution, or presentational versus data manipulation concerns to reduce technical debt. → NOTABLE MOMENT The realization that Elm's maybe type system forces separation of null-checking logic from business logic led to a broader insight: all conditionals can be extracted from implementation code, creating confident functions that assume correct paths while composition handles branching separately. 💼 SPONSORS [{"name": "JudoScale", "url": "https://judoscale.com/bikeshed"}] 🏷️ Code Decomposition, Vertical Slicing, Refactoring Patterns, Software Architecture

AI Summary

→ WHAT IT COVERS Steve Polito shares strategies for contributing to open source projects like Rails during regular client work by identifying documentation gaps, bugs, and creating reproduction scripts without dedicating evenings or weekends to contributions. → KEY INSIGHTS - **Issue reproduction scripts:** Use Rails issue templates with bundler inline to create isolated test cases that replicate bugs in minutes, enabling faster triage and helping determine if problems stem from the framework or user error before opening issues. - **Documentation contributions:** Transform existing work into open source contributions by copying pull request descriptions that explain undocumented behaviors into Rails guides, requiring only fifteen to twenty minutes of additional effort to benefit the broader community beyond your team. - **Search before submitting:** Check closed pull requests and issues for your problem first to understand historical context and previous attempts at solutions, preventing duplicate efforts and learning why certain approaches were rejected by maintainers in mature projects like Rails. - **Separate issues from solutions:** Open issues focused solely on describing problems without proposing solutions, then use comment sections to explore approaches and link separate pull requests, allowing others to suggest alternative fixes and keeping conversations organized for future reference. → NOTABLE MOMENT Steve discovered a Rails testing bug that still passed after modifying expectations, used an issue template to replicate it locally, opened an issue with reproduction script, submitted a pull request, and backported the fix to client code while linking everything together. 💼 SPONSORS [{"name": "WorkOS", "url": "https://workos.com"}] 🏷️ Open Source Contribution, Rails Development, Documentation, Software Testing

Explore More

Never miss Steve Polito's insights

Subscribe to get AI-powered summaries of Steve Polito's podcast appearances delivered to your inbox weekly.

Start Free Today

No credit card required • Free tier available