Software Design Essentials
Design patterns, SOLID, clean and hexagonal architecture and domain-driven design: how to structure code so it stays easy to change.
7 lessons1 h 15 minIntermediate
What you'll learn
0 of 7 lessons complete
Who this is for and what you will be able to do
Who this is for
Developers who can write working programs and want to structure them well: for larger codebases, for reviews and for design interviews.
After this course you will be able to
- Learn design patterns efficiently, and know when not to use them
- Apply the SOLID principles to spot and fix rigid, fragile code
- Recognise and use the common creational, structural and behavioural patterns
- Organise an application with clean and hexagonal architecture
- Model a business domain with domain-driven design concepts
How a lesson works
Interactive diagram
See how each component connects, then run a request through it.
Plain-words toggle
Switch between the technical explanation and a plain-language one.
Practice design
Change a design of your own in the builder and see how it holds up.
Quiz and exercise
Test your understanding before moving on.
Go deeper
These lessons are written from scratch. The books below are excellent next reads.
- Design Patterns: Elements of Reusable Object-Oriented Softwareby Gamma, Helm, Johnson and Vlissidesthe original catalogue of 23 patterns
- Clean Architectureby Robert C. Martinthe dependency rule and architecture boundaries
- Domain-Driven Designby Eric Evansthe book that introduced the approach; Vaughn Vernon's 'Domain-Driven Design Distilled' is a shorter start
- Refactoring Guru: design patterns catalogueby Refactoring Gurufree explanations and examples of each pattern