Keep your design clean as your application grows and requirements change
Crafted Design Workshop with Sandro Mancuso is for experienced developers who want to get better at designing well-crafted solutions.
This training addresses design from the most micro level (via TDD) all the way up to defining microservices by analysing business requirements.
After this workshop with Sandro Mancuso you’ll be able to design software that is responsive to changing requirements and new functionalities,avoiding some of the pitfalls that lead to legacy code.
Target audience
Crafted Design is an advanced workshop aimed at software developers who:
Have at least a couple of years of experience developing software commercially
Are familiar with at least one Object-Oriented Programming language (such as Java, C#, or C++)
Are comfortable using TDD to build software
Understand mock objects and know how to use a mocking library
Have a general understanding of different architectural styles, including microservices.
The Trainer
Sandro Mancuso is the Author of the book Software Craftsmanship and the co-founder and CEO of Codurance. Sandro is a pioneer of the Software Craftsmanship movement.
What will you learn in this course?
Learn design techniques applied in successful projects
Use TDD as a design tool, learning about the two main TDD styles (Classicist and Outside-In) and how they differ when driving the design of your code
Drive out a flexible design at different levels, from details of real-world all the way up to microservices
Build software that is not bound to a specific technology or framework by keeping them at the boundaries of your system
Express your business domain in every facet of your application, not just methods and classes
Keep your design clean as your application grows and requirements change
Let your architecture emerge, rather than designing a rigid and unchangeable structure up-front
Learn how to derive a microservices architecture from business requirements and bounded contexts
Learn how to model behaviour instead of state keeping your design more aligned to business goals.
Program
Day 1
Write tests focused on behaviour instead of state
Emergent design through classicist TDD
SOLID principles
BAP – Balanced Abstraction Principle
Use TDD as a design tool with Outside-In TDD
Tell, Don’t Ask
Commands, Queries, and Open/Close Principle compliance.
Day 2
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
Modelling 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 real-world from it.
How it works
Here’s what you can expect to be doing during this highly interactive advanced hands-on workshop with Sandro Mancuso:
The first day is dedicated to software design at the coding level. You’ll be working in pairs on two large exercises, using different TDD styles and comparing their solutions.
Throughout the day there will be plenty of moments for design discussions around the exercises and real-world scenarios.
The second day is dedicated to software design at application level (internal structure, layers, components, delivery mechanism, core domain) and also at microservices level using business requirements to drive their design (such as define the responsibility of each service, how services collaborate, their internal and external visibility, number of services we need to create, etc).
You will be working in groups of 4 and come up with design solutions that later are shared with the wider group. Many design discussions during exercises will focus on real-world scenarios.
F.A.Q.
Tools & Laptop: Should I take my laptop with me? Yes.
Entry requirements: Is there anything I need to do before the workshop Please set up the environment on your machine according to these instructions. In order to be able to attend and fully benefit from this workshop, you’re required to:
Bring your own laptop
Be using TDD regularly in your projects. If you are not very proficient with TDD, you may struggle during the first day of this training. This course is NOT an introduction to TDD
Be able to create projects, tests, and code and run them in your local environment.
In addition, a distributed version control system such as Git is desirable.
A basic/intermediate knowledge of at least one Object-Oriented language would be beneficial.
Teaching language: What language will this workshop be in?
This course will be taught in English.
What people say about this workshop…
Starting from how to apply TDD to a single class until the package and architecture of domain model, Sandro will give you a new fresh point of view, the pros and cons of every single decision that you have to take.Gianluca Padovani
I would recommend this training course to all the coders interested in improving and extending the design toolbox. It has really opened my mind to techniques I didn’t know before and it was a great chance to work with different people to learn something also from them. And Sandro is a really good trainer, which, by the way, it’s probably the main reason why this course was great for me.Francesco Venneri
From unit tests to high-level architecture. A great overview from small to big.Alessandro Melchiori
Co-founder and CEO of Codurance, Sandro Mancuso is a pioneer of the Software Craftsmanship movement.
He specialises in software quality, engineering excellence, and large-scale software modernisation initiatives. With nearly three decades of professional experience, Sandro has worked with organisations ranging from startups to large enterprises across multiple industries.
He is a software craftsman, author, and founder of the London Software Craftsmanship Community (LSCC).
Avanscoperta is a growing community of professionals learning together, exchanging experiences and ideas, exploring uncharted territories.
We carefully select the most relevant topics and the best trainers and thought leaders worldwide with an eye to the most engaging teaching techniques.
Are you ready to learn with us?
Are you interested in this course?
If you have any specific questions, or if you want to receive more information on dates, content or offers
about this course, drop us a line. We'll gladly get back to you!
NEWSLETTER
Get exclusive content from experts in software development, technology, business and design!