The talk focuses on Test-Driven Development (TDD) and behavioral design patterns, particularly emphasizing the importance of object communication and mocking in software design. The speaker discusses how exposing object communications through tests can help identify design problems and SOLID principle violations. He argues that mocks should be used as design tools rather than just for test isolation, and presents several case studies showing how proper mocking practices can lead to better software design.
The talk discusses software development costs from three perspectives: cost of introduction (writing new code), cost of change (modifying existing code), and cost of ownership (maintaining code). The speaker emphasizes the importance of understanding these costs when deciding whether to write custom code or use existing packages/tools, and advocates for only taking ownership of code that truly needs to be owned and changed frequently.