More Code with Jason episodes

318 - Adam Dawkins, CTO of Dragon Drop thumbnail

318 - Adam Dawkins, CTO of Dragon Drop

Published 9 Apr 2026

Duration: 00:52:59

Scaling Ruby on Rails projects faces challenges from rigid conventions that hinder flexibility, requiring intentional architecture, refactoring, and modular design to counter pitfalls like short-term solutions, poor testing, and overreliance on inheritance, while promoting collaboration through shared terminology and practical strategies.

Episode Description

In this episode I talk with Adam Dawkins, CTO of Dragon Drop, about building internal tools using Ruby on Rails, the challenges of growing codebases,...

Overview

The podcast discusses the development and challenges of internal software tools, focusing on Adam Dawkins' UK-based company, Drag and Drop, which builds customized internal platforms (e.g., CRMs) for clients seeking solutions beyond standard SaaS offerings. The company relies on Ruby on Rails for its projects, emphasizing its utility in early-stage development but highlighting its limitations as projects scale. Key challenges include Rails opinionated framework structure, which can lead to rigid codebases with "fat models" or controllers, and its tendency to prioritize quick fixes over intentional architectural design. The discussion critiques how frameworks like Rails can obscure deeper design considerations, prompting a need for deliberate software architecture to manage complexity as systems grow.

A central theme revolves around the importance of design in software development, arguing that frameworks alone cannot address scalability and maintainability. The podcast explores strategies to improve design skills, such as building non-web Ruby programs to confront abstraction challenges and learning Ruby independently of Rails to distinguish core language features from framework conveniences. It also emphasizes the shift from prioritizing immediate functionality to fostering code that is easy to understand and modify. Practical examples include refactoring domain logic into isolated classes for testability and using behavioral abstractions (e.g., "CalculatesCommission") over real-world object modeling. Critiques of traditional OO design, inheritance, and OOP tutorials are presented, advocating for abstractions defined by behavior rather than tangible entities.

The discussion also delves into code maintenance, testing, and the cultural challenges in agencies, such as balancing client demands with long-term technical debt. It critiques common misconceptions about testing, emphasizing that tests should define specifications rather than merely verify correctness. The podcast concludes with a broader philosophy on software design, framing it as an ongoing process of iterative refinement rather than a static goal. Concepts like "dull blades" (inefficient code) and the necessity of shared vocabulary in design are highlighted as practical tools for managing complexity, maintaining code quality, and fostering collaboration.

Recent Episodes of Code with Jason

29 Mar 2026 317 - Edward Tewiah, Creator of PropertyWebBuilder

A real estate website toolkit, Property Web Builder, faced UI/UX complexity and monetization hurdles despite AI-driven customization efforts, revealing challenges in balancing technical execution, client preferences, and shifting business priorities.

27 Mar 2026 316 - Adapting to AI in the Agency World with Errol Schmidt

AI tools like Claude and Codex are revolutionizing software development by boosting productivity and shortening timelines, yet raise concerns about agency business models, critique "vibe coding" as unprofessional, explore evolving developer roles with AI handling complex tasks, anticipate job market shifts and obsolescence, emphasize human creativity and judgment, and contrast software's ephemeral value with art's enduring qualities in an AI-driven landscape.

16 Mar 2026 315 - Dave Thomas, RubyConf 2026 Keynote Speaker

Dave Thomass discusses revitalizing RubyConf 2026 through social interaction and unstructured engagement, exploring Ruby's class-based philosophy versus Elixir's functional approach, emphasizing data transformation, abstraction, clarity, variable naming, jargon critique, AI collaboration, systems thinking, and non-technical analogies to simplify complex processes and enhance software design readability.

2 Mar 2026 313 - David Santoro, CTO of Carwow

A podcast discusses the launch of a physical newsletter, *Nonsense Monthly*, and a conversation on startup co-founder dynamics, idea validation, technical leadership, and engineering best practices.

More Code with Jason episodes