Welcome to The Rabbit Hole, the definitive developers podcast. If you are a software developer or technology leader looking to stay on top of the latest news in the software development world, or just want to learn actionable tactics to improve your day-to-day job performance, this podcast is for you.
02. TDD
After starting off the episode with a teach-and-learn moment about leaky abstraction, we move onto the core focus of the episode: TDD. TDD, or test-driven development for the uninitiated, is “an evolutionary approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring” (definition from Agile Data).
If you don’t completely understand the concept of TDD from that description, or if you have lots of questions now, don’t worry! That’s what this whole episode is about. We’ll talk about TDD in great detail, addressing the ways in which it’s counterintuitive and can be tricky at first.
More importantly, we discuss how TDD can offer incredible value and make things ultimately easier and simpler, even though it may not feel that way at first. It can ease the demand on your brainpower, and even reveal your own assumptions. Finally, we discuss why TDD may not be relevant in certain environments.
Listen in to hear more about TDD and what it can do for you!
In This Episode:
[00:22] - We have a teach-and-learn moment about leaky abstraction.
[02:28] - Working with someone who has never done any front-end work can be a great experience.
[03:35] - We learn what the definition of TDD is, and why it’s counterintuitive.
[07:33] - How do you decide to use TDD? Or is it something that you use all the time? The consensus is to use it all the time, or close to it.
[11:01] - Part of starting with TDD is understanding the first step. This may mean you need to spend some time “mucking around” before you even know what to test.
[14:16] - One of the times when it’s hardest to do TDD is when you don’t know how to test something.
[15:25] - We hear about the potential value of creating a stash as a reminder, and the possibility of making a spike branch. The guys then joke about whether stashing behavior translates to desk organization.
[18:32] - After a short break, we hear more about an early experience with TDD.
[21:09] - Pairing with someone junior to you offers value that’s easy to underestimate. It makes you stricter on yourself and encourages you to be more concerned with best practices.
[22:07] - We hear about the experience of getting into TDD on your own. We also learn that TDD can reveal your own assumptions.
[24:03] - Developers need to hold a lot of information in their heads while trying to solve a problem. TDD is a great way of preventing things from accumulating in RAM, so to speak.
[26:38] - The guys talk about the pros and cons of remembering the moment you discovered TDD.
[29:41] - We hear which programming languages the panelists prefer to do TDD in.
[32:40] - There’s a bunch of front-end stuff that isn’t testable.
[33:57] - Have the panelists seen the Martin Fowler talk “Is TDD Dead?”?
[36:45] - The small applications that college students tend to write for their courses aren’t a realistic representation of what happens when you do this for a living (in terms of the necessity of using TDD).
[39:22] - Google recently released an API called Actions on Google.
Links and Resources:
Introduction to Test Driven Development
The Art of Agile by James Shore