How do you design applications to be testable? Is test-driven development sufficient? When and how should I use mocks? How do higher levels of testing such as system test fit into the picture?
This talk provides an overview of how design and architecture are at the centre of producing good products. Drawing from a wide range of applications in multiple languages, this talk provides some core principles for designing valuable and testable products.