Currently I am preparing a workshop on Domain-Driven Design to inspire my colleagues to have certain principles in their head when working on software projects. This is quite a challenge, since it is not just a set of steps to follow, but a way of thinking, a mindset. According to the definition of the Domain-Driven Design website, Domain-Driven Design is:
Over the last decade or two, a philosophy has developed as an undercurrent in the object community. The premise of domain-driven design is two-fold:
- For most software projects, the primary focus should be on the domain and domain logic; and
- Complex domain designs should be based on a model.
Domain-driven design is not a technology or a methodology. It is a way of thinking and a set of priorities, aimed at accelerating software projects that have to deal with complicated domains. To accomplish that goal, teams need an extensive set of design practices, techniques and principles.
The key concept of the workshop is: “focus on the Domain Model”. When software developers are developing a software application, I want them to remember this workshop, and be triggered of this core concept of Domain-Driven Design. According to Wikipedia, the definitions are:
- Domain: a field of study that defines a set of common requirements, terminology, and functionality for any software program constructed to solve a problem in that field.
- Model: a pattern, plan, representation (especially in miniature), or description designed to show the main object or workings of an object, system, or concept.
Now these definitions do cover the meaning quite well, but it is not very sticky. They’re rather abstract and conceptual. So, just giving these definitions is probably not enough to have a vibrant memory of the core concept of the workshop. It will stick much better if it is simple, unexpected, concrete, credible, emotional and has some story (I highly recommend you read Made to Stick).
Now, my idea does not necessarily comply with all of those, but do you think software developers will remember to think of the (Domain) Model when they see this?

Tags: Communication, Domain Driven Design, Presentation, Software
Good Model!
Have you seen Joel Spolsky’s keynote on last year’s RailsConf?
http://blip.tv/file/1164086
Maybe you should include a male model so as not to be accused of being a male chauvinst pig…
No I haven’t. Thanks for the link! And I may consider a male model as well, but not at the expense of a female model… I guess I’ll have both then