Are you working on code poorly designed or on legacy code that’s hard to test? And you cannot refactor it because there are no tests? During this Coding Dojo you’ll be assigned a coding challenge in Java, C#, Ruby, JavaScript or Python. You will face the challenge of improving the design and refactoring existing code in order to make it testable and to write unit tests. We will discuss SOLID principles, the relation between design and TDD, and how this applies to your solution. Reading list: Growing Object-Oriented Software, Guided by Tests; Steve Freeman, Nat Pryce Test Driven Development: By Example; Kent Beck Working Effectively with Legacy; Michael Feathers Agile Software Development, Principles, Patterns, and Practices; Robert C. Martin (C++, Java) Agile Principles, Patterns, and Practices in C#; Robert C. Martin (C#)