- Steve McConnell - Code Complete: A Practical Handbook of Software Construction 💲
- Martin Fowler - Refactoring: Improving the Design of Existing Code 💲
- Joshua Kerievsky - Refactoring to Patterns 💲
-
Ian Cooper - TDD, where did it all go wrong [1:00:37] Takeaway: A test case per class fails to capture the ethos of tdd. The trigger for a new class is implementing a new requirement. Only test the surface of a module. Unit tests run in isolation from other tests, not other modules. Databases, file systems stop tests being isolated from each other. Tests should not depend on implementation details. Don't mock out your internals. Mock the port to the adapter not the adapter itself.
-
Sebastian Daschner - Make writing tests more joyful [1:01:58] Takeaway: Test code quality matters. Write reusable test components to decouple implementation and behaviour under test. Writing BDD/Gherkin tests forces that separation. Care about fast feedback cycles. Separate running docker containers for testing from the tests themselves. Write reusable, idempotent test scenarios. Don't let easy to write tests using things like automocking slow down your tests.
-
Venkat Subramaniam: Succeeding with TDD: Pragmatic Techniques for effective mocking [1:02:09]
- Humanising Reviews Takeaway: Use questions to elicit feedback rather than statements. Explanation of some reasons people fight against having their code reviewed as well as reviewing other's code. Explanation of how the culture of your organisation will effect the uptake of code review. Code review is not to criminalise the person who wrote the code, that is counterproductive.
- Paul Hammant, Steve Smith - Trunk Based Development Takeaway: Great introduction to trunk based development. Github repo here
- Michael Feathers - Working Effectively with Legacy Code💲
- Marianne Bellotti - Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)💲
💲 - paid for content