The Bike Shed
Episodes
-
399: Scaling Code Ownership and Accountability
August 29th, 2023 | 34 mins 16 secs
Stephanie experienced bike camping. Joël describes his experience during a week when he's in between projects.
Stephanie and Joël discuss the concept of code ownership, the mechanisms to enforce it, and the balance between bureaucracy and collaboration. They highlight the challenges and benefits of these systems in large codebases and emphasize that scaling a team is as much a social challenge as it is a technical one.
-
398: Developing Heuristics For Writing Software
August 22nd, 2023 | 34 mins 7 secs
Want a cool cucumber salad? Joël's got you covered. Stephanie has evolved and found some pickles she enjoys.
Experienced programmers use a lot of heuristics or "rules of thumb" about what makes their code better. These aren't always true, but they work in most situations. Stephanie and Joël discuss a range of heuristics, how to use them, how to come up with them, how to know when to break them, and how to teach them to more junior devs.
-
397: Dependency Graphs
August 15th, 2023 | 42 mins 53 secs
Stephanie is consciously trying to make meetings better for herself by limiting distractions. A few episodes ago, Joël talked about a frustrating bug he was chasing down and couldn't get closure on, so he had to move on. This week, that bug popped up again and he chased it down! AND he got to use binary search to find its source–which was pretty cool!
Together, Stephanie and Joël discuss dependency graphs as a mental model, and while they apply to code, they also help when it comes to planning tasks and systems. They talk about coupling, cycles, re-structuring, and visualizations.
-
396: Build vs. Buy
August 8th, 2023 | 33 mins 57 secs
Joël has been fighting a frustrating bug where he's integrating with a third-party database, and some queries just crash. Stephanie shares her own debugging story about a leaky stub that caused flaky tests.
Additionally, they discuss the build vs. buy decision when integrating with third-party systems. They consider the time and cost implications of building their own integration versus using off-the-shelf components and conclude that the decision often depends on the specific needs and priorities of the project, including how quickly a solution is needed and whether the integration is core to the business's value proposition.
-
395: Human Connection in a Virtual (Work) World
August 1st, 2023 | 30 mins 59 secs
Stephanie had a small consulting win: saying no to a client. GeoGuessr is all the rage for thoughtbot's remote working culture, which leads to today's topic of forming human connections in a virtual (work) environment.
-
394: Submitting a Conference Talk Proposal from Start to Finish
July 25th, 2023 | 38 mins 53 secs
Joël recently had a fascinating conversation with some friends about the power of celebrating and highlighting small wins in their lives. He talks about bringing this into his work life. May Stephanie interest you in a secret she learned regarding homemade pizza?
RubyConf is coming! Who's submitting talks?! It's hekkin scary. Don't fret! Joël and Stephannie are here to help. Today, they discussed submitting a conference talk proposal from start to finish.
-
393: Is REST the Best? APIs and Domain Modeling
July 18th, 2023 | 33 mins 49 secs
It's updates on the work front today! Stephanie was tasked with removing a six-year-old feature flag from a codebase. Joël's been doing a lot of small database migrations.
A listener question sparked today's main discussion on gerunds' interesting relationship to data modeling.
-
392: Managing Changing Business Requirements
July 11th, 2023 | 39 mins 14 secs
Joël has a fascinating discovery! He learned a new nuance around working with dependency graphs. Stephanie just finished playing a 100-hour video game on Nintendo Switch: a Japanese role-playing game called Octopath Traveler II. On the work front, she is struggling with a lot of churn in acceptance criteria and ideas about how features should work.
- How do these get documented?
- What happens when they change?
- What happens when people lose this context over time?
-
391: Learn with APPL
July 5th, 2023 | 40 mins 45 secs
Stephanie went to her first WNBA game. Also: Bingo. Joël's new project has him trying to bring in multiple databases to back their ActiveRecord models. He's never done multi-database setups in Rails before, and he doesn't hate it.
Stephanie shares bits from a discussion with former Bike Shed host Steph Viccari about learning goals. Four elements stood out:
Adventure (try something new)
Passion (topic)
Profit (from recent learnings)
Low-risk (applicable today)= APPL
Stephanie and Joël discuss what motivates them, what they find interesting vs. what has immediate business value, and how they advocate for themselves in these situations. They ponder if these topics can bring long-term value and discuss the impact that learning Elm had on Joël's client work.
-
390: The Truth about Truthiness
June 27th, 2023 | 39 mins 58 secs
Joël's new work project involves tricky date formats. Stephanie has been working with former Bike Shed host Steph Viccari and loved her peer review feedback.
The concept of truthiness is tough to grasp sometimes, and JavaScript and Ruby differ in their implementation of truthiness.
- Is this a problem?
- Do you prefer one model over the other?
- What can we learn about these design decisions?
- How can we avoid common pitfalls?
-
389: Review Season
June 20th, 2023 | 33 mins 45 secs
Stephanie just got back from a smaller regional Ruby Conference, Blue Ridge Ruby, in Asheville, North Carolina. Joël started a new project at work.
Review season is upon us. Stephanie and Joël think about growth and goals and talk about reviews: how to do them, how to write them for yourself, and how to write them for others.
-
388: Empowering Other Departments Within a Company
June 13th, 2023 | 34 mins 11 secs
Joël has a bike shorts update; Stephanie has a garden one.
Often, power is centralized within the dev team. This is usually because they are the only ones able to execute. Sometimes this ends up interfering with team processes and workload. Joël is a fan of empowering other teams to do things themselves.
-
387: RubyKaigi 2023 with Mina Slater
June 6th, 2023 | 31 mins 22 secs
Stephanie is joined by a special guest, fellow thoughtboter, Senior Developer, and marathon trainer Mina Slater.
Mina and Stephanie had just been traveling together for two weeks, sponsored by WNB.rb for RubyKaigi in Matsumoto, Japan, and together, they recount their international adventure!
-
386: Value Objects Revisited: The `Tally` Edition
May 31st, 2023 | 41 mins 8 secs
If you're in the market for bicycle shorts, Joël's got you. Stephanie just returned from RubyKaigi in Japan and shares details of her trip.
Recently at thoughtbot, there have been conversations around an interesting data modeling exercise. Joël and Stephanie discuss the following:
- Value Objects vs. Hashes
- Doing Math on Compound Numbers
- Monoids and Folding
- Naming Concepts in Code
-
385: The Boring Parts of Tech
May 23rd, 2023 | 24 mins 41 secs
Joël is joined by thoughtbot Software Developer and Dirt Jumper Daniel Nolan. Dirt jumping is BMX-style riding 🏍️ with really enormous dirt jumps.
But for a person who loves excitement in his spare time, for Daniel at work, it's not the new and shiny that interests him. When he dives into something, the "boring" parts of tech are what he finds most fulfilling. He wants to know the "why," and in this conversation, he explains how it sustains his career.
-
384: Not All Numbers Are Numbers
May 16th, 2023 | 37 mins 56 secs
Joël gives a recap after attending RailsConf 2023 in Atlanta, Georgia (and yes, there was karaoke! 🎤 🎶). Stephanie plugs the The Tightly Coupled Book Club Podcast from friends and fellow thoughtboters Aji and Mina Slater where they're reading The Rails Guides from cover to cover and treating it like a book club and having a discussions about the documentation as they read it together.
Stemming from a Twitter thread by Joël, their main topic focuses on not all numbers being numbers. So: if someone is submitting a phone number through a form:
- How would you store that in the database?
- Would you store it as a string? Because sometimes it comes with some extra formatting.
- Would you normalize it and try to store it as an integer because it's a number?
Thoughts, Dear Listener?