‘Putting the Domain Model to Work’
3-Day Immersion Workshop

Finding and exploiting domain models is key to success with large software systems. By cultivating a strong connection between the language used by experts, users, and developers, the right kind of models can dramatically accelerate the process of translating the customers' needs into working software. Strong domain modeling coupled with programming best practices such as exploiting design patterns, refactoring, and test-driven development yield a principled yet practical approach to the development of large software systems.

This course will aid participants in striking a healthy balance between digging into their subject matter and addressing technological issues, which, while unavoidable, cannot be allowed to dominate the development process for commercially viable systems.

Each morning of this intensive class is spent in lecture and classroom exercises, and each afternoon in a “lab”, doing hands-on coding projects that reinforce the morning’s lessons. The end of each day is a retrospective discussion bringing out the main points of the day’s experience and relating them to the earlier days and to the participants’ own work.

Prerequisites

Required

Knowledge of object modeling and design.
We encourage a mixed class, including some managers and analysts. Even so, at least half of the attendees must have programming skills on the target platform (Java or C#).

Recommended

Familiarity with J2EE, .Net or other framework for large scale application development. Familiarity with design patterns.

Recommendations for Follow on Mentoring

This class will have a much greater impact on the project if it is followed up with mentoring, to help team members anchor it in their own work, and to help them over the practical obstacles that frustrate, and frequently stop, people doing these things for the first time. Valuable new ideas fail to take hold for lack of some practical detail.

We recommend this course be followed by at least two weeks of hands-on work with the team, which should start no more than 2 weeks after the end of the class. Typically, we recommend a ratio of at least one mentor per 10 developers (or one per team, whichever is more).

Target Audience

Intermediate to advanced developers. Also, analysts and development managers are encouraged to participate. (However, non-programmers must comprise less than half the class.)

Course Outline

Day 1 Morning: Ubiquitous Language

 

Day 1 Afternoon Lab: Expressing a Model in Software

 

Day 2 Morning: The Model Discovery Process

 

Day 2 Afternoon Lab: Supple Design

 

Day 3 Morning: Making Enterprise Frameworks Work for You

(This module is usually focused on the technology family the team uses. This example is for a J2EE project.)

 

Day 3 Late Morning: Context Mapping

 

Day 3 Afternoon Lab: Multi-Subsystem/ Multi-Team Design

 

Preparation for the Class

In order to tune the class to the level and circumstances of the participants, we will ask some of your developers to fill out a brief (10-15 minutes) on-line questionnaire to give us an idea of their proficiency level in the class prerequisites. We will also have the team leader answer a few questions about the project's goals, history and processes.

Since it is essential that participants be free to discuss their real project challenges in the classroom, we make any needed nondisclosure agreements prior to the class.

Finally, we recommend buying each attendee a copy of the book, Domain-Driven Design, as part of the package. This is the text book for the course and makes a very valuable reference in the following months.

Follow-on Mentoring

This class will have a much greater impact on the project if it is followed up with mentoring, to help team members anchor it in their own work, and to help them over the practical obstacles that frustrate, and frequently stop, people doing these things for the first time. Valuable new ideas fail to take hold for lack of some practical detail.

We recommend at least two weeks of hands-on work with the team, starting no more than 2 weeks after the end of the class. A typically ratio is at least one mentor per 10 developers (or one per team, whichever is more).

more »
 

Note: This course is offered in two forms: one for Java/J2EE; one for C#/.Net