The Bike Shed

About the show

On The Bike Shed, hosts Joël Quenneville and Stephanie Minn discuss development experiences and challenges at thoughtbot with Ruby, Rails, JavaScript, and whatever else is drawing their attention, admiration, or ire this week.

The Bike Shed on social media


  • 367: Value Objects

    January 17th, 2023  |  34 mins

    Joël's been traveling. Stephanie's working on professional development. She's also keeping up a little bit more with Ruby news and community news in general and saw that Ruby 3.2 introduced a new class called data to its core library for the use case of creating simple value objects.

  • 366: Componentization and Branching Strategies

    January 10th, 2023  |  38 mins 31 secs

    Happy New Year! It's 2023 🎉 Joël and Stephanie chat about developer resolutions or things they'd like to do this year and then discuss componentization and branching strategies.

  • 365: Career Progression

    December 13th, 2022  |  37 mins 55 secs

    Joël has been thinking a lot recently about array indexing. Stephanie started volunteering at the Chicago Tool Library, a non-profit community lending library for Chicagoans to borrow tools and equipment for DIY home projects!

    It's the end of the year and often a time of reflection: looking back on the year and thinking about the next. Stephanie and Joël ponder if open source is a critical way to advance careers as software developers.

  • 364: Constructive vs Predicative Data

    December 6th, 2022  |  34 mins 7 secs

    Stephanie and Joël attended RubyConf Mini, and both spoke there. They discuss takeaways and highlights from the conference.

    The core idea for this episode is explained in this article: Constructive vs. Predicative Data. This came up recently in a conversation at thoughtbot about designing a database schema and what constraints could be encoded in the schema directly versus needing some kind of trigger or Rails validation to cover it.

  • 363: Deployments

    November 22nd, 2022  |  34 mins 26 secs

    Joël discovered Bardcore. Stephanie planned and executed an IRL meetup for folks in the WNB.rb virtual community group in Chicago and had a consulting win.

    Together, they discuss what deployment processes look like for clients in their current workloads.

  • 362: Prioritizing Learning

    November 15th, 2022  |  29 mins 40 secs

    This week, Steph and Joël discuss investment time and keeping track of things they want to learn.

    How do you, dear listener, keep track of things you want to learn? When investment time rolls around, what do you reach for, or how do you prioritize that list? Are there things you actively decide not to focus on when choosing where to develop deep expertise? Are there things you wish you could spend time on if you could?

  • 361: Working Incrementally

    November 8th, 2022  |  30 mins 28 secs

    thoughtbotter Stephanie Minn joins The Bike Shed as co-host! 🎉

    Joël and Stephanie talk about continuing on a rewrite and redesign of a legacy Rails app and working incrementally.

  • 360: ActiveRecord Models

    November 1st, 2022  |  28 mins 37 secs

    Fellow thoughtboter Sarah Lima joins Joël to discuss an issue Sarah had when she was doing a code review recently: making HTTP requests in an ActiveRecord model. Her concern with that approach was that a class was having too many responsibilities that would break the single-responsibility principle, and that it would make the class hard to maintain. Because the ActiveRecord layer is a layer that's meant to encapsulate business roles and data, her issue was that adding another responsibility on top of it would be too much. Her solution was to extract a class that would handle the whole HTTP request process.

  • 359: Serializers

    October 25th, 2022  |  44 mins 10 secs

    Chris Toomey is back! (For an episode.) He talks about what he's been up to since handing off the reins to Joël. He's been playing around with something at Sagewell that he enjoys. At the core of it? Serializers.

  • 358: Class Methods

    October 18th, 2022  |  40 mins 40 secs

    Inspired by a Slack thread, Joël invites fellow thoughtbotter Aji Slater on the show to talk about when you should use class methods and when you should avoid them. Are there particular anti-patterns to look out for? How does this fit in with good object-oriented programming? What about Rails? What is an "alternate constructor"? What about service objects? So many questions, and friends: Aji and Joël deliver answers!

  • 357: Notetaking For Developers

    October 11th, 2022  |  30 mins 55 secs

    Joël is joined by Amanda Beiner, a Senior Software Engineer at GitHub, who is known for her legendary well-organized notes. They talk about various types of notes: debugging, todos, mental stack, Zetelkasten/evergreen notes, notetaking apps and systems, and visual note-taking and diagramming too!

  • 356: The Value of Specialized Vocabulary

    September 27th, 2022  |  39 mins 20 secs

    Guest and fellow thoughtbotter Stephanie Minn and Joël chat about how the idea of specialized vocabulary came up during a discussion of the Ruby Science book. We have all these names for code smells and refactors. Before knowing these names, we often have a vague sense of the ideas but having a name makes them more real. They also give us ways to talk precisely about what we mean. However, there is a downside since not everyone is familiar with the jargon.

  • 355: Test Performance

    September 20th, 2022  |  42 mins 44 secs

    Guest Geoff Harcourt, CTO of CommonLit, joins Joël to talk about a thing that comes up with a lot with clients: the performance of their test suite. It's often a concern because with test suites, until it becomes a problem, people tend to not treat it very well, and people ask for help on making their test suites faster. Geoff shares how he handles a scenario like this at CommonLit.

  • 354: The History of Computing

    September 13th, 2022  |  31 mins 16 secs

    Why does the history of computing matter? Joël and Developer at thoughtbot Sara Jackson, ponder this and share some cool stories (and trivia!!) behind the tools we use in the industry.

  • 353: Mental Models

    September 6th, 2022  |  38 mins 22 secs

    Mental models are metaphors that help us understand complex problems we work on. They can be a simplified roadmap over an infinite area of complexity.

    How does one come up with mental models? How are they useful? Are they primarily a solo thing, or can they be used to communicate with the team? What happens when your model is inaccurate? Today, Joël is joined by Eebs Kobeissi, a Developer and Dev Manager at You Need a Budget, to discuss.

  • 352: Case Expressions

    August 30th, 2022  |  32 mins 23 secs

    As developers, we care a lot about code quality. How do we know how good is good enough? When do we stop improving code? Alternatively, when working on code that's really bad, how much do you improve it before calling it a day? thoughtbot's Stephanie Minn joins Joël to chat about this and case expressions: We recently discussed these as part of thoughtbot's RubyScience reading group. Are case expressions bad? Are they equivalent to multi-way conditionals? When do you use polymorphism?