Tags: | Posted by paul on 3/5/2010 4:35 PM | Comments (0)

This is the end of my DDD Immersion course blog  series. I want again to thank Eric and Kristian for being such wonderful instructors, and the other course attendees (Anye, Francisco and John) for helping make it such a fun experience.   For example, here are Eric and Anye hamming it up in imitation of the many obviously-posed posters of classrooms that were  on display throughout Learning Tree International and in our classroom (like the one below that shows unnaturally happy people with the caption “Participants troubleshooting PC’s”). A big thanks to both of them for being such good sports and not taking themselves too seriously.

Eric and AnyeDue to client commitments, right up until the last minute I wasn’t sure if I would even be able to attend, but was really glad I was able to eventually clear my schedule and make it happen. Not only that, but having my return flight cancelled(!) on Friday evening 016meant I was able to attend much more of the last day’s class than I had thought (Eric & Kristian were very patient with me sitting in class with a headphone trailing out of one ear while I waited on hold for the airline to answer). It was worth the milk-run flight through Milwaukee the next day, plus I got an extra night at The Jane hotel and a sleep in on Saturday morning.

To make it even easier for future NYC-based course, Eric mentioned that Domain Language is adding some accomodation and training venue information to the training page on their website. For those of us not familiar with NYC – without first-hand, local knowledge of subway schedules and rates etc - it sure helps  to have some recommended hotels for the course. Getting to the venue by subway is the way to go - so long as you keep downtown and uptown straight!

One observation on New Yorkers: don’t expect anyone to return a smile…except when they are shovelling snow after a winter storm, then somehow everyone gets a little friendlier.

DDD Immersion Course - Blog Series Summary

Here are links to the entire series.

  • Part One – Introduction. What is DDD? Ubiquituous language? a Model?
  • Part Two – Building-Block patterns (eg. Aggregate. Domain Event. Creative Collaboration etc)
  • Part Three – Strategic design – Bounded Context and context mapping.
  • Part Four – Strategic design (continued) – Core Domain
  • Part Five – More on supple design (Specification pattern). Implementation concerns. Discussion.
  • Part Six – Design and agile.
  • Part Seven – Final. Course takeaways and other thoughts.

Add links in each entry to the next one, and the whole series in the first and last? Put Next [link] at the bottom of each.

Who Should Attend?

Here are some of my thoughts on the people who are likely to get the most out of the course:

  • Developers with a good understanding of OO development, but new to domain modeling. (those who have taken something like ASDE). Developers that have read the DDD book and want to learn from an expert instructor with their peers in a classroom environment.
  • Application/Software/Solution Architects seeking to provide more value as strategic designers.
  • People wanting to know how to do design on an agile project.
  • Those who have perhaps been DDD practitioners for a while, and want to catch up with the latest in DDD (there are a number of new patterns in the course that are not covered in the book) and bring it together into a cohesive whole. Or perhaps need a refresher on core concepts.

Final Takeaways

The centrality of VO’s in the building-block patterns.

  • This emphasis was not obvious to me in the DDD book (I’m sure that’s despite Eric’s best efforts), but it became very clear in the training.  As Eric put it on the course: “Building blocks are not the central emphasis in DDD, but Value Objects are the thing to focus on in the building blocks.”
  • Avoiding getters and setters on Value Objects.
  • Be biased towards making things Value Objects, at least as a default choice.
  • The general lack of language support for immutability.

Supple design.

  • The power of techniques such as closure of operations, and enforcing and testing for immutability in Value Objects, as means of writing safer code and obtaining a more supple design.
  • “You can’t stop a developer from violating the original intention, but make it harder to not respect the original intention/design.” - Eric

Effective DDD strategic techniques for dealing with legacy systems.

  • Creating a “bubble” within an existing Legacy system that functions as a Bounded Context for some quality design work, realizing that it will likely be absorbed back into the Big Ball of Mud at some later point.
  • Anti-corruption layer – I have used this approach with great success in the past, but need to heed Eric’s warnings more about paying attention to only having translation logic in this layer.

Applying context mapping as a starting exercise in my client engagements

  • In laying out a system and understanding what the contexts are and how they relate to each other.
  • In determining how to organize teams, reducing bugs and in finding and enriching the Core Domain.

Greater emphasis in my consulting on strategic design, and become more familiar with the DDD strategic design patterns

  • So I can identify them when I encounter them, and
  • Know how best to work with my clients in improving their design effectiveness.

A better understanding of what a Core Domain is and how to identify it.

  • I also understand the need for a tight boundary around the Core Domain now, and how best to accomplish this based on the strategic design patterns.

The notion that the Core Domain will – and should be – changing over time, and how to deal with this situation.

  • I expect this will be a key concern of mine in future consulting engagements.
  • Up until now it has been more intuitive (plus what I have learnt from other practitioners). However, now I have a much better grasp of how to do about doing design on agile projects.

Agile and design

  • My opinion is that much of what Eric shared here is closely related to the lean idea of fast-flexible-flow.
    • He described an approach in which design ideas are pulled as necessary (JIT) and iterated on.
    • This means allowing time for creative design work to be done in the Core Domain, so that it can be iteratively and incrementally distilled as an intrinsic part of the agile process.

Making mistakes

  • I am currently reading Managing the Design Factory; a lot of what Eric suggested lines up nicely with Reinertson’s description of information theory. 
  • Innovation can only happen when the designers are pushing the boundaries enough for many small mistakes to be found and corrected.

I see more than ever that there need to be more opportunities for DDD practitioners to connect and network.

  • I will try to start up a DDD meetup group in Denver this year
    • This can only happen if I can clear some other commitments off my list.
    • We have some serious DDD practitioners such as Vaughn Vernon and Randy Stafford based here – it would be great to start sharing this knowledge around the community in a more focused way.
  • I’m going to suggest that the next IASA ITARC conference in NYC (in Oct?) have a DDD track.
    • We certainly had enough DDD practitioners there last year, including Eric and Srini.
    • I know things like this have happened in Europe in the past, having a USA-based space for it this year would be great.
  • What about a Denver-based DDD open-space conference in 2011?

I want to help increase the visibility of DDD Immersion course.

  • As I mentioned to Eric, up until I met him at the IASA ITARC conference in NYC last October, I had no idea that this course even existed .
    • I imagine that I am not the only one.
    • It is the best-kept-secret in the DDD community, and more practitioners and novices need to start taking it.
  • This blog series should at least give a window into what attendees can expect on the course.
  • There are currently several certified instructors world-wide, with classes being offered regularly in London, Paris, Stockholm, Oslo, and New York City.
    • The next USA-based course is in NYC during the first week of May.
    • People interested in taking the course can go to the Domain Language training page.
  • I want to bring Eric to Denver later in the year to deliver the course.
    • If you are interested in seeing this happen then please let me know.
    • I am sure that if we can get enough support for a Denver-based session then I can convince Eric to come.

Further Reading:

  • Managers Guided Tour from Domain Language.
  • The DDD patterns summary book (copies given out in the course) from Domain Language. Go to the DDD Community books page for other resources.
  • I have an Architecture Journal article which introduces some ideas from DDD coming out this month. I’ll update this link once it is published

Go back to Part Six – Design and agile.

Comments are closed