Note: this is a past event Check out the current event!

Sandro Mancuso

Software Craftsman / Managing Director at Codurance at Codurance


Does TDD really lead to good design?
Thursday 17:05 - 17:50

Your rating:

"TDD is a design tool." That’s what Sandro has said for years. But not anymore. After working with different teams and in different organisations, and also carefully inspecting how he works, Sandro changed his mind about the role of TDD in software design.

In this talk Sandro will explain the pros and cons of the two main styles of TDD when it comes to software design, he'll discuss why some developers can test-drive well-crafted code while others can’t, and he'll also explain how to reason about design decisions.


Crafting Code (2 days)
Tuesday+Wednesday 9:00 - 17:00
Clean code
Your rating:


This course is designed to help developers write well-crafted code—code that is clean, testable, maintainable, and an expression of the business domain. The course is entirely hands-on, designed to teach developers practical techniques they can immediately apply to real-world projects.

Why attend?

Software Craftsmanship is at the heart of this course. Throughout, you will learn about the Software Craftsmanship attitude to development and how to apply it to your workplace.

Writing Clean Code is difficult. Cleaning existing code, even more so. You should attend if you want to:

  • Write clean code that is easy to understand and maintain
  • Become more proficient in Test-Driven Development (TDD): using tests to design and build your code base
  • Focus your tests and production code according to business requirements using Outside-In TDD (a.k.a. the London School of TDD)

Clean code necessitates good design. In the process of driving your code through tests, you will learn how to:
  • Understand design principles that lead to clean code
  • Avoid over-engineering and large rewrites by incrementally evolving your design using tests

Once you have an understanding of the principles at work, we will apply them to Legacy Code to help you gain confidence in improving legacy projects through testing, refactoring and redesigning.

  • TDD lifecycle and the Outside-In style of TDD
  • Writing unit tests that express intent, not implementation
  • Using unit tests as a tool to drive good design
  • Expressive code
  • Testing and refactoring Legacy Code
The course is fully hands-on and developers will be writing a lot of code.

Software developers that:
  • are familiar with at least one Object-Oriented language
  • are able to understand Java or C#
  • legacy code exercise will be done in one of the following languages: Java, C#, PHP, Scala, or C++
  • can write and execute unit tests using a framework (such as JUnit, NUnit, etc.)
  • have a basic understanding of mock objects

Developers must:
  • bring their own laptops
  • have a development environment consisting of: their favourite Object-Oriented language, a unit test framework, a mocking library
  • be able to create projects, build source code and run test cases in their development environment
In addition, a distributed version-control system such as Git is desirable.


Software craftsman, co-founder of Codurance, author of The Software Craftsman, and founder of the London Software Craftsmanship Community (LSCC). Sandro has been coding since a very young age but only started his professional career in 1996. He has worked for startups, software houses, product companies, international consultancy companies, and investment banks.

During his career Sandro had the opportunity to work in a good variety of projects, with different languages, technologies, and across many different industries. Sandro has a lot of experience in bringing the Software Craftsmanship ideology and Extreme Programming practices to organisations of all sizes. Sandro is internationally renowned by his work on evolving and spreading Software Craftsmanship and is frequently invited to speak in many conferences around the world. His professional aspiration is to raise the bar of the software industry by helping developers become better at and care more about their craft.