Crafting Design
Join Sandro Mancuso to learn design principles and techniques that lead not just only to well-crafted code but also well-crafted solutions!
About
This is a hands-on course for developers that are comfortable writing code but want to be better at designing software. In this course about software design, you will learn to:
- design well crafted solutions
- produce software that is responsive to changing requirements and new functionality
- avoid the pitfalls that lead to legacy code
Who should attend
This course is designed for software developers that:
- have experience in developing software commercially
- are familiar with at least one Object Oriented Language (such as Java and C#)
- are able to understand Java (the codebase and exercises are in Java)
- are comfortable using TDD to build software
- understand mock objects and know how to use a mocking library
Why attend
You should attend if you want to:
- Learn design techniques applied in successful projects
- Use TDD as a design tool, applying Outside-In TDD
- Drive out a flexible design
- 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 entire 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
Expected outcomes
- Learn how to design better solutions
- Keep not just your code, but also your design, clean using Test-Driven Development
- Become comfortable in mapping business requirements to software components
- Build software that reflects business requirements
Topics covered
- Four elements of simple design
- Mapping and visualising business concepts in code
- SOLID principles
- Testing and refactoring legacy code to express business domain
- Expressing design and architecture in code
- Outside-in TDD
- Interaction Driven Design (IDD)
- DDD and supporting architecture types (i.e. layered, hexagonal and event driven)
Prerequisites
Developers must:
- Bring their own laptops
- Have a development environment consisting of: Java 8, favourite IDE, maven 3.x, a unit testing framework
- 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.
Practical details
- Included: welcome coffee, lunch and coffee breaks
- Training language: English
- Attendees will receive a certificate of participation
Need more information? Contact us and we’ll help you choose the right course for you.