TDD Revisited - Ian Cooper - NDC Porto 2023

Understand TDD's true principles and benefits in this talk, where Ian Cooper shares insights on embracing simplicity, gradual exploration, and rapid feedback to create quality, maintainable code.

Key takeaways
  • What you need to understand TDD is the principle that you only write production code in response to a test.
  • Tests are not driving design decisions, rather they are following a given requirement’s acceptance criteria.
  • The aim is to keep the implementation simple and not to the point of overwhelming, where issues will arise.
  • TDD is about gradual exploration of a problem, not using contracts.
  • The more time spent on code, the more time spent explaining it.
  • Fast feedback is crucial for effective TDD, ensuring the learning process is efficient.
  • The idea of exploration in TDD is suitable for those who are terrified of change, yet they tend to overcomplicate designs.
  • For some developers, testing is the process of reassurance, a way to gauge progress.
  • No one wants to go back to the old school of “coders who hack away at code without care”.
  • Rapid feedback is so important that it can be overwhelming, but it’s necessary to prevent code from becoming too complex.
  • The results we’re looking for are quality code and a single design.
  • Some developers love BDD, but it’s important to understand it and not just follow it blindly.
  • Some frameworks and tools are problematic because they can make our code more rigid, rather than more flexible.
  • Allowing our code to change without impacting others is known as “autonomous” code.
  • Once upon a time, testing was not a topic for conference talks.
  • Martin Fowler’s definition of refactoring is a change made to the internal structure of a system.
  • Customers write acceptance tests, making them hard to get wrong.
  • James Shaw, the creator of FIT, believed in testing on a high level.
  • Using outside-in testing decreases the chances of having tests break frequently.
  • Exploring working software is an experience developers tend to love.
  • The conference talk is about understanding how testing can help code be more flexible and maintainable.
  • Ian Cooper and Martin Fowler have made significant contributions to their respective areas in the software development industry.
  • The principles of TDD include using tests as a form of design, exploration, and reactivity.