About IDDD Workshop

iddd_book_cover_over_workshop_class

Go beyond the theory of DDD and see how teams can actually use DDD to accelerate their strategic initiatives in a way that helps them design for the business’ competitive advantage. Emphasis is placed on software development as a craft by embracing best practices of design in source code that works within the framework of agile processes, and de-emphasizes attempts to solve real strategic business software initiatives by throwing technology at the problem.

The event is best for senior and mid-level software developers and architects interested in software craftsmanship and learning domain modeling using the Domain-Driven Design (DDD) approach.

iddd_event_driven_modeling

The IDDD Workshop is facilitated by me, Vaughn Vernon. I am a veteran software craftsman with more than 30 years of experience in software design, development, and architecture, and I am the author of the book Implementing Domain-Driven Design published by Addison-Wesley. (Get a great print and ebook bundle deal when you order the book here.) I understand the ups and downs of software development with the challenges of improving our craft in a fast-paced industry. This keen understanding drives me to help others overcome the obstacles we frequently face. I want you to succeed with Domain-Driven Design by improving your skills and depth of knowledge.

I am a thought leader in simplifying software design and implementation using innovative methods. I’ve been programming with object-oriented languages since the 1980s and applying the tenets of Domain-Driven Design since my Smalltalk domain modeling days in the early 1990s. My experience spans a wide range of business domains, including aerospace, e-commerce, environmental, geospatial, insurance, medical and health care, SaaS, and telecommunications. I consult and speak internationally, and have taught my IDDD Workshop on multiple continents.

Yes, I teach both public and private workshops. If you prefer an on-site workshop over one offered to the public, please contact us for details, including pricing and availability.

You can find my blog here VaughnVernon.co, and you can follow me on Twitter here @VaughnVernon. Don’t miss this interview about my book, Implementing Domain-Driven Design.

Vaughn’s course not only solidifies fundamental DDD concepts, but also supplies the confidence needed to put this knowledge into practice. Having your development team attend this class will teach them to efficiently solve complex problems in an elegant and extensible manner.

Harry Brumleve, Software Architect, Quark Software, Inc.
Editor at InfoQ.com

 

I very much liked the focus on stratic design with enganging team excercises. Vaughn covered all current DDD concepts in very structured way.

Christian Deger, AutoScout24

 

The IDDD Workshop was very useful to our team. Considering the scope of the subject matter, the IDDD Workshop thoroughly covers implementing Domain-Driven Design. As a result, we are now applying what we learned to our new project. We had the IDDD Workshop held on-site in our office, which was very convenient for our developers.

Golnaz Sepehrband, Software Engineering Team Leader, Click Travel Ltd.

 

Having attended Vaughn’s IDDD Workshop really helped me gain a much deeper understanding of Domain-Driven Design and how to use it in practice. Vaughn is an excellent speaker/teacher with profound knowledge and insight which he is able to articulate in a way that makes perfect sense. I very much recommend this IDDD Workshop to anyone who wants to not just learn about DDD but also wants to know how to use it in practice.

Jacob Klærke Mikkelsen, Architect & Enterprise Development Expert

IDDD Vision

iddd_vision_workshop_class

The IDDD Workshop is a hands-on class that I have custom developed for mid-level and senior software developers and architects. As a student, you will receive advanced software design instruction and solve real-world design problems as you learn together with others. The class encourages you to share your own problems and gain experience from class interaction. Problem spaces used in exercises include a Scrum-based Project Management application within a SaaS environment, and a Stock Trading system that supports algorithmic trading. You will also create your own brand new DDD Bounded Context that is event-driven and integrates with the existing SaaS products.

iddd_workshop_exercises

I have found that often the cost of training for improving our much needed skills can be prohibitive to a vast number of developers. With the IDDD Workshop, I am making a difference. By keeping the price of the IDDD Workshop low, cost should not be a barrier to improving your skills. Since this training opportunity is so urgently needed by so many, registration fills quickly. We usually experience sellout classes. Because you want to improve your software design techniques, please register soon. I am confident that the training will stir your thinking and desire to improve your craft and put the techniques to work immediately.

time_arrowWith all the other obstacles removed, shouldn’t you invest the time necessary to improve your craft by learning how to implement using DDD? It is my sincere hope that you will accept my invitation to improve your craft. I promise to do everything possible to help you.

Regardless of whether you’re a seasoned DDD practitioner or just getting your feet wet, get ready to experience what practicing Domain-Driven Design on your team could be like. Backed by a real-world example that binds theory to practice, you get to familiarize yourself with strategic design, the importance of “language in context,” tactical patterns, architecture, etc. The curriculum includes ample time to get your questions answered, turning the whole into a bespoke experience at times. This is an ideal opportunity to connect with like-minded peers and share both problems and solutions.

Yves Reynhout, Technical Lead at CSC
Co-Founder, Belgian Domain-Driven Design Group


Domain Driven Design is a tremendously powerful architecture and mindset specifically purposed to deal with complex software problems. I have worked on a larger project implementing DDD as the architecture/methodology for the better part of a year but have been frustrated by its complexity. This course taught me many concepts as well as filling in holes in my understanding. As the result, I am not only more skilled in DDD, I am more confident in using it in my development efforts.

Mike Zandin, Senior Software Engineer, Quark Software, Inc.


I just completed Vaughn’s IDDD Workshop and believe it is time well spent. Vaughn follows closely the concepts and storyline in his book, but is able to slow down and help all attendees through any difficulties with the material. It is hands on, there are useful programming exercises that are non-trivial. But it is nice that Vaughn fully supports both .Net and Java approaches (he even broke out Scala) and you will leave with in-depth understanding of the strategic as well as tactical patterns of DDD in the programming language of your choice. If you are trying to get your head around DDD and want a patient, gifted instructor, I highly recommend Vaughn Vernon and his class Implementing Domain-Driven Design.

Tom Stockton, Enterprise Architect, MAXIMUS


When I learned that Vaughn was coming to Europe for the IDDD Workshop I didn’t hesitate for one second to register. It was the best workshop I have attended in my life. All the aspects of DDD are talked about and put into practice. It goes from building the Ubiquitous Language, through all the strategic patterns to the implementation with tactical patterns. What struck me is the interactivity of the Workshop. Vaughn continually gives you many tips taken from his rich experience that are very valuable in real world applications. He was available for everyone and answered all the questions. Definitely it’s the workshop you have to attend if you want to understand how to build real business value software.

Tomasz Jaskula, Coding Architect, Software Developer, Consultant

Implementing Domain-Driven Design 3-Day Workshop

iddd_workshop_3_day_window_models

The 3-day Workshop that rapidly unlocks the secrets to implementing DDD, both strategically and tactically. This Workshop is specially designed for mid-level and senior software developers and architects.

Day 1: Getting Started, Strategic Design, and Architecture

The goal of Day 1 is for you to get grounded with a DDD mentality that will free your mind from data-driven approaches. This is necessary to grasp the thrust of developing a Ubiquitous Language within a Bounded Context, the hallmark of DDD. From there you will be ready to embrace strategic design using Subdomains, Bounded Contexts, and Context Maps. Finally Day 1 crosses over to architecture, preparing you to employ Ports and Adapters, Event-Driven, and other powerful architectural tools as you develop a new SaaS-based Bounded Context in classroom exercises. This new Bounded Context is a Core Domain where you will next learn tactical modeling skills in Day 2.

Getting Started with DDD

Understand the essence of DDD. Form the right mentality for powerful software modeling. Develop a Ubiquitous Language for your project. Learn how to use a test-first approach to craft intention-revealing interfaces. All this lays a foundation for moving forward with DDD.

Domains, Subdomains, and Bounded Contexts

Grasp the core concepts of DDD strategic modeling, and put them to use. Learn to vigorously gather core concepts and separate irrelevant ones. Learn why strategic design is so essential. Develop the ability to determine when your domain models are composed correctly and when they required more rigorous design.

Context Mapping

Learn how to integrate with other systems using DDD and straightforward design techniques. Context Maps are not just drawings. Use them as a project thinking, learning, planning, and integration tool.

Architectures that Support DDD

See how seven architecture styles and patterns can be used to support your DDD projects. We will look at the following: Layers; Dependency Inversion Principle; Hexagonal; SOA; REST; CQRS; Event-Driven Architecture for Pipes and Filters, Long-Running Processes, and Event Sourcing; Actor Model.

Day 2: Tactical Design

In Day 2 we switch our focus to tactical design, giving you the aptitude to make proper finer-grained modeling decisions within a single Core Domain. Whether its the use of Entities, Value Objects, Aggregates, Domain Services, or Domain Events that best fit your specific modeling situation, you will put each of the tactical tools to use in your own Core Domain project. As the day progresses, you will learn the advantages of using each of the tools, and when another tool could provide a better set of tradeoffs.

Entities

There will almost always be at least some Entities in your domain models because of the need to manage change over the life cycle of mutable objects. Understand how to properly employ this necessary modeling tool, but also why you should use these less often than you may think. Rather than overusing Entities, learn how to best use them only when a domain concept must change over time.

Value Objects

Embrace this invaluable, functional modeling tool, which you should use as often as possible. You will learn the Value Object characteristics and why using Values where possible is a safer way to design. Using a test-first approach you will learn by modeling several different concepts as Values.

Aggregates

Demystify effective aggregate designs with the use of a set of simple rules. Learn how to design objects for correct transactional consistency, performance, and high scalability.

Domain Services

Add powerful stateless operations to your model when its use is appropriate. The modeling techniques cover both domain-specific services and those of a more technical nature, often used for integration.

Domain Events

Learn how to model, publish, and consume the facts of what happened in a domain model. You will see how Domain Events have far reaching impact on your designs across the enterprise. Here you will gain an understanding of how to publish and consume Events using both REST and messaging.

Modules

Understand the importance of and techniques for organizing concepts within a single domain model. Why go to all the trouble to carefully craft domain objects but without proper modularization using your Ubiquitous Language?

Factories

See when and how to use factories to support the creation of domain objects.

Day 3: Aggregate Persistence, Integrating Bounded Contexts, Application

During Day 3 we bring all the parts together to form an application. We look at different ways to persist Aggregates using object-relational mapping, document databases, key-value stores, as well as by employing Event Sourcing. We then take a deep dive into applying Context Mapping techniques as we return to strategic design, but this time by developing integration solutions between your new Core Domain and other Bounded Contexts in the SaaS-based enterprise. Finally we give attention to other parts of the application, such as the user interface, using CQRS, and developing Application Services as your API. With all this background you will be better prepared to move forward with a DDD project of your own, or to make greater strides on your current DDD strategic initiative.

Repositories and Event Sourcing

Consider two primary approaches to persisting and reconstituting your domain objects. You will learn how to persist and retrieve your Aggregates using both SQL and NoSQL databases with examples for O-R Mapping, Grid, and MongoDB. You will also learn how to use Event Sourcing as both a persistence approach and to publish Domain Events for broader consumption.

Integrating Bounded Contexts

Employ RPC, REST, and messaging to realize your Context Maps in code as you integrate multiple Bounded Contexts of enterprise applications. Understand the complexities and challenges of distributed computing environments, and how to deal with them. An important lesson that is reemphasized is to model each Bounded Context cleanly and separately from those with which you integrate.

Application

Learn how the components that surround your domain model comprise a whole application. Consideration is given to User Interface strategies and the Application Programming Interface (API) using Application Services. Here you will learn how to apply CQRS from Domain Events published from your Event Sourcing store.

The IDDD Workshop was an open, truly interactive class with several workshops, a great atmosphere and a lot of vivid discussions, both during and after hours. As most of the people who join these classes are truly passionate about software development, you not only get to know the principles of the blue book better, but you also get the opportunity to meet, chat and extend your professional network more then you can imagine, both with speakers and with attendees. In fact, I still meet some people from that event on a regular basis. To recap, if you ever have the opportunity to attend, please do. You will not regret it.

Tom Janssens, Builds software and helps organizations to get better at building software


I want to thank you for this course. I believe you introduced some very interesting and innovative ideas about DDD, not only from a theoretical point of view but also with a very practical approach. I feel that you communicate in a very clear and easy to understand manner and I think this and your professional experience were key factors in transmitting your extensive knowledge.

Sara Pellegrini, Independent Information Technology and Services Professional


Vaughn’s IDDD Workshop is a very valuable use of one’s time. The group works through the strategic and tactical patterns of DDD within a defined Bounded Context experimenting with patterns, code, and language. The experience has been invaluable to me and to my team in particular. We have adjusted our way of doing DDD and after two sprints we can already see the ease of describing, implementing, and testing each feature. It definitely helped increase our velocity and the quality of the product. Thank you for a great workshop!

Antonio Drusin, Blackbaud


Seven4n (http://s4n.co) is a company that designs and delivers software specialized on building applications for complex domains such as insurance, government, e-commerce, among others. We contacted Vaughn Vernon for an IDDD Workshop with our architecture and software development team. The Workshop gave us great insights about DDD in real-world projects and answered questions about the relationship between DDD and distributed systems; the concepts behind DDD and some of the most influencing architecture styles. Vaughn’s experience and knowledge gave us the necessary elements to apply all the DDD concepts in a profound way, making our clients more pleased with the applications we built.

Yuji Kiriki, Partner, Seven4N, Bogotá, Colombia

Managing Domain-Driven Design 1-Day Workshop

iddd_managing_ddd_1_day_workshop

Short lectures, exercises, and innovative game-play lead you to a clear understanding of how to leverage DDD, putting it to use on your Agile project. It’s a class that is well balanced for business experts and technical stakeholders alike.

What to Expect With DDD

Explore the business value of using DDD, and become well informed about when to use DDD and when not to use it. Learn to participate in a DDD project as a domain expert by helping to develop a Ubiquitous Language. Understand how to find the right domain expert(s) and the need to support developers in their efforts as a close-knit team. Learn about the importance of proper software test when using DDD, and how agile development can work on a DDD project.

Taking a Strategic Approach to Developing Business Solutions

Here we will look at common legacy and other project situations that can challenge your ability to succeed, and why using a strategic approach is so important. This module weaves in the business vision and why it is vital to follow the course that is most important to the business initiative. Techniques are presented as tools for recognizing where the pre-existing and supporting software is, and how to leverage it to develop your core business vision. Discussed is how to prioritize software as core, supporting, and generic, and where to allocate developer resources based on abilities.

Managing a DDD Project

Every project manager knows the urgency of staying on task and on time. What techniques and tools can be used to accelerate your DDD effort? How will your developers choose their architectural mechanisms? How will they provide project estimates that you can count on? How will the team time box domain modeling efforts? How frequently will domain experts need to participate in design discussions with with developers, and how much time will it require at various stages in the project? How can you use a common agile project management framework to keep the project moving forward at the correct pace, but without stifling the creativity of the domain modeling effort?

Common Problems that You Will Face, and How to Overcome Them

Every software development project faces the challenges of the real demands of the business and business stakeholders that do not align with the goals of the development team. This module addresses the need to get buy-in from the business and to heavily weight the team developing the core DDD product(s) with the proper capabilities in order to ensure their success. Here we probe various common business challenges and how to work around them.

Moving Forward With DDD

We wrap up this workshop by reviewing the big picture of DDD and how you can succeed with it by ensuring that your priorities are focused on the business.