RubyConf Reflections — The Importance of TDD with Elise Shaffer

In this conversation live from RubyConf San Diego, Andrew and Julie sit down with Elise Shaffer, host of The Ruby on Rails Podcast. They kick things off with sharing conference experiences, the joy of reconnecting with friends, and the unique energy the in-person events bring. The discussion shifts to the concept and practice of Test Driven Development (TDD), its benefits, and how it aids in problem-solving during coding.  An interesting point is discussed about whether tests or code should be written first, and whether it’s okay to write tests after the code.  They also dive into the handling of tests on legacy codes within Rails. The conversation wraps up with gratitude to the organizers, speakers, volunteers, and attendees at RubyConf. Press download now to hear more! 

[00:00:24] Elise shares her conference experience mentioning enjoying the sessions and seeing friends from previous conferences, and Julie and Andrew share their joy of being in the company of friends, the conference atmosphere, and food.  

[00:01:39] Elise shares the number of Ruby and Rails conferences she’s attended and her most memorable one which was Steel City Ruby, highlighting the value of smaller conferences and tight-knit communities. 

[00:02:45] They discuss the difference between in-person and online conferences, agreeing that in-person events offer more energy and interaction. 

[00:03:50] The conversation shifts to memorable conferences as Andrew reminisces about his first conference experience at RailsConf in Pittsburgh. Julie talks about her first conference, RailsConf 2022 in Portland, where she met Elise and Andrew and where Ruby for All was conceived.

[00:06:12] Andrew asks Julie about her rise in popularity withing a year, moving from a newcomer toa recognized member of the community. The group jokes about autographs and fame within the Ruby community. Elise shares her role in the community, especially with the podcast she hosts. 

[00:09:33] Elise and Andrew discuss the technical aspects of testing and continuous integration within software development. She explains her background in Ruby and Rails, where she focused on testing and its challenges in larger applications, and she discusses strategies for testing and the importance of testing not every permutation but preventing major issues, 

[00:12:46] Julie asks Elise to explain parallelized testing.  Elise details using CircleCl or other runners to break up many tests across multiple workers to speed up the process.

[00:13:56] Elise explains what Test Driven Development (TDD) means to her, and Julie asks whether TDD is always applicable, like when fixing a bug rather than creating a new feature. 

[00:15:30] Elise wishes TDD was still popular and stresses that TDD is a skill that must be developed. She describes the advantages of TDD, particularly in large applications, where having a robust test suite allows for faster development and less worry about breaking something inadvertently. 

[00:18:58] Andrew challenges the concept of TDD, suggesting that for a talented engineer, tests might seem like a waste of time.  Elise responds by emphasizing that TDD is a thinking tool that aids in understanding the problem. 

[00:20:59] The discussion turns to reviewing tests.  Elise explains her approach to reviewing pull requests by checking the problem solved, reviewing commits one at a time, and comparing her list of tests with the submitted ones, placing higher importance on the tests than the code itself. 

[00:24:02] Elise and Andrew compare their personal styles in reviewing code and the importance of preparing commit messages for review. Julie is curious how Elise and Andrew manage their commit history and whether they use the command line for combining commits. Andrew mentions using interactive rebase. 

[00:24:47] If you’re interested in getting into TDD, Elise tells us she’s working on a course about test driving in Rails applications coming out on early next year , but also recommends reading two great books: Test Driven Development: By Example by Kent Beck and 99 Bottles of OOP by Sandi Metz.

[00:25:33] Julie questions how to handle TDD in a legacy codebase with complex and nested tests. Elise suggests pairing with someone more knowledgeable to break up the tests into smaller, more manageable files. 


Panelists:
Andrew Mason
Julie J.

Guest:
Elise Shaffer


Sponsors:



Links:


  • (00:24) - - Introduction and conference experience
  • (01:39) - - Memorable conferences and tight-knit communities
  • (02:45) - - In-person vs. online conferences
  • (03:50) - - First conference experiences
  • (06:12) - - Julie's rise in popularity and fame in the community
  • (09:33) - - Testing and continuous integration in software development
  • (12:46) - - Parallelized testing and speeding up test processes
  • (13:56) - - Test Driven Development (TDD) and its applicability
  • (15:30) - - Advantages of TDD and its role in understanding problems
  • (18:58) - - Challenges to the concept of TDD
  • (20:59) - - Reviewing tests and pull requests
  • (24:02) - - Managing commit history and using interactive rebase
  • (24:47) - - Recommendations for learning TDD
  • (25:33) - - Handling TDD in legacy codebases

Creators and Guests

Andrew Mason
Host
Andrew Mason
Senior Product Developer at Podia, co-host of the Remote Ruby podcast, and co-editor of the Ruby Radar newsletter
Julie J
Host
Julie J
Software developer at Codecademy
RubyConf Reflections — The Importance of TDD with Elise Shaffer
Broadcast by