Crafting & Design code with Sandro Mancuso

Learn how to craft & design code with a master craft

Course overview

Intensive, 3-days, hands-on crafts & design coding workshop with Sandro Mancuso

Thorough and exhaustive, 2-days, hands-on Craft-code Workshop. Short lectures and practical exercises lead you to a clear understanding what mean a 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.

The third and final day is dedicated to software design at the application level (internal structure, layers, components, delivery mechanism, core domain) and also at micro services level using business requirements to drive their design (define the responsibility of each service, how services collaborate, their internal and external visibility, number of services we need to create, etc.) Developers will work in groups of 4 and come up with design solutions that later are shared with the wider group.

Many design discussions during exercises focused on real-world scenarios.

The Workshop will be given by Sandro Mancuso the author of the book The Software Craftsman.

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.


First and Second day

  • 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
  • Introduction to SOLID Principles and Domain-Driven Design

The course is fully hands-on and developers will be writing a lot of code.

The third final day

  • Principles of Domain Driven Design.
  • IDD – Interaction Driven Design.
  • Structure projects in a way that expresses what the application does and what it is about.
  • Differences between layers, hexagons, features, and components.
  • Modeling behaviour using Outside-In Design.
  • Identifying services from business rules.
  • Express design and architecture in code, but keeping your domain clear
  • Understanding Impact Mapping and how a services architecture can be derived from it.
  • Audience

Software developers that:

  • Are familiar with at least one Object-Oriented language
  • Are able to understand Java 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.

Sandro Mancuso
Architect, Software Developers

Interested in our services now?