7-9 DAY LEARNING JOURNEY
Software design and architecture for software developers
Join a focused 7 to 9-day learning journey designed for software developers to master software design and architecture. The course starts with a 2-day workshop on Domain-Driven Design (DDD), teaching teams how to model domains collaboratively using techniques like EventStorming and Example Mapping to improve communication with domain experts. This is followed by a 2-day session that delves into the essentials of team-driven software architecture, where you’ll learn about the architecture’s role in software development cycles. The curriculum progresses with practical workshops where you’ll apply tactical DDD patterns and principles of responsibility-driven development, rounding off with strategic insights into refactoring for deeper domain insights and techniques for upgrading legacy systems without halting feature development.
In the optional last two days, participants have the chance to engage in open discussions and advanced explorations of DDD in the context of software architecture. This educational package is a blend of theory and hands-on practice, providing developers with the skills to create and evolve robust software systems as part of a dynamic team. It is ideal for developers and architects aiming to improve their strategic design skills and for those looking to bring structure to complex projects with innovative solutions.
Domain-Driven Design for Software Teams
Start your explorative journey into Domain-Driven Design, discovering the benefits of collaborative domain modelling alongside stakeholders and software teams. This 2-day workshop introduces collaboration techniques such as EventStorming and Example Mapping. These tools not only transform your approach to software design but also significantly enhance communication between domain experts and software teams. This improved communication allows software teams to concentrate on the core problems they need to solve.
Team-Driven Software Architecture
During this immersive workshop, we’ll delve into the core of software architecture, examining its structure, essential decision-making processes, design principles, and the defining characteristics that can guarantee quality. We will deconstruct these concepts into comprehensible sections and demonstrate how they can be integrated into a team’s software delivery lifecycle.
Applying Tactical Domain-Driven Design patterns
During this workshop, we take the output from the domain modeling session from the first day, and use it as a foundation for crafting our software model. We’ll apply responsibility-driven development principles and collaborate using CRC cards to ensure that each candidate class of our design is purposeful and clearly defined. By emphasizing continuous collaboration with domain experts, we maintain a strong alignment between code and model throughout the workshop. With the model whirlpool method as our compass, we chart a course from defining bounded contexts to implementing tactical patterns with Test-Driven Development (TDD) in Java or C#. By the conclusion, you’ll not only have coded with advanced DDD patterns but also developed a mindset for solving complex design challenges in a maintainable and scalable way.
Deep Dive into Model-Driven Design: Refining Domain Models in Code
Embark on a journey with ‘Deep Dive into Model-Driven Design: Maturing Domain Models in Code,’ an intensive workshop that immerses Java and C# developers in the transformative process of Eric Evans’s modeling whirlpool. This workshop is not just an exploration but a deep dive into Part III of Evans’s groundbreaking work on Domain-Driven Design (DDD), specifically designed for those looking to advance beyond basic concepts like aggregates, entities, and value objects.
Disentangling Legacy Software with Domain-Driven Design
Learn how to disentangle a legacy software systems and keep on releasing new features.
More information soon!
(Optional) Domain-Driven Design for Software architecture
Normally a 2-day workshop, but we removed the overlapping content from the learning journey to make it into an optional 1-day workshop where you’ll learn how you and your peers can design anti-fragile systems. It’s more than just technical expertise; it’s about nurturing a creative space where those building the software actively shape team organisation and architectural decisions. The approach is holistic, merging human dynamics with technical precision, empowering teams to design and architect their own systems.
(Optional) Open-space day
This optional last day of open-space serves as the pinnacle of our educational journey together. On this day, you — the participants — have the opportunity to shape the agenda with the issues and ideas that resonate most with you. Bring your own topics or own uses cases to the forefront, whether you’re keen to re-examine previously discussed material through new case studies or eager to delve deeper into specific areas of interest. This open day is not just about exploration but also about receiving direct feedback from the trainers and fellow partipants.