“Like with all things agile, we’re looking for a feedback loop, and we’re looking to make that feedback loop smaller.” That’s how Jon Fazzaro, a Software Architect with an avid devotion to craftsmanship, describes the rationale behind Test-Driven Development. Over the past handful of years, Jon has been instrumental in introducing agile principles and practices to Aptera’s custom development practice. And TDD plays a key role in our processes.
“Test-Driven Development,” he explains, “is a way of developing software where you are using code to write tests that verify that your code works. That sounds nutty until you’ve done it.” Now that Jon and the other members of the software team have done a lot of it, they’ve embraced it as the most reliable way to write clean, stable code.
In this week’s episode, James and I talk to Jon about what TDD is, how it works, why it’s important, and how he came to not only embrace it but advocate for it.
Jon helps us understand issues including:
- What TDD is and why it’s not what a lot of people seem to think
- How you get around the question of how to test your test code
- Why Jon began insisting on TDD after first using it on a project three years ago
- Why you sometimes write code you know will fail the test before writing code that you hope will pass
- How TDD leads to stability and predictability, and why those are such a big deal for software developers
- How significant the barrier to entry is when you’re first getting started with TDD
- What the difference is between unit testing and integration testing
- What role automated testing plays in DevOps and continuous deployment
- Whether Quality Assurance people are losing their jobs to automated testing setups
- Whether you can use tests you’ve coded for one project with another project
- Who writes the test code for the code you’re writing—or if it’s the same person doing both
- What tools you use when you’re doing TDD
- How developers committed to TDD can persuade their bosses it’s useful
- How TDD helps you avoid entropy to create clean code—and why clean code is so important to ongoing stability
- Whether you need to allot more time to projects when you’re using TDD (or agile for that matter)
- What happens with legacy code when you’re doing TDD or automated testing
- Why Jon likes Uncle Bob Martin’s videos on clean code—and how he defines clean code
- How TDD can help you become an emotionally whole developer
Jon’s knowledge about agile software development is as deep as his commitment to passing on what he’s learned. At first, you may not consider software craftsmanship the most exciting of topics, but listen in and you’ll get a sense of why so many of us have come to be completely fascinated by it.
We’d love to hear your thoughts and questions too. You can reach us at: email@example.com.
Other popular content like this: