Are we on the same page?
Headspring's Agile Boot Camp™ for .NET Training Series focuses on the cornerstones of maintainable software, including DDD. Domain-Driven Design is essential for ubiquitous language as it strong-arms the manner in which classes are developed into objects of which subject matter experts, product owners, customers, and programmers will all have a universal and consistent understanding.
Is your current job better than flipping burgers?
Perhaps you once had summertime employment at a restaurant which had a complicated means of communicating orders. You found it confusing that a cheeseburger was represented one way on the menu, another way when punched into the cash register's interface, and a third way yet when scrawled on a paper ticket in shorthand for the chefs. The cheeseburger was just one of thirty entrées, each represented three different ways in the three different systems of documentation, and on top of that, each entrée could have any number of variations such as "extra cheese" which also had to be cross-communicated. The whole of the scope was more than anyone could memorize their first week on the job, and as a result all new hands had a painful ramp-up process.
Is your current work environment any improvement from the bad old days at that summer job? When your team produces is it crafting the same concepts the end users envision or do your "chefs" communicate amongst themselves in their own esoteric "shorthand" while a business analyst tries to translate what they are doing back to the stakeholders? If someone were introduced to your project, how easily could your application be explained? How much waste and rework could be avoided outright if communication didn't have to bridge separate schools of thought?
You may have heard this argument before while also thinking there is really no fix for the problem. There is a solution however and it lies in Domain-Driven Design.
DDD is introduced in Agile Boot Camp™ for .NET Part I. Students will learn about the concept and be instructed on how to create classes in an objected-oriented design in which each object corresponds to a noun in the terminology of the domain experts without grey areas in understanding. Role-playing of Scrum project interactions to iron out the best approach to whiteboarding objects with domain experts (in order to ensure the objects hold appropriate attributes and interact with other objects as expected) is encompassed within the Agile Boot Camp™.