Our clients come to us to solve their problems using software. We listen to their pitch, we read their emails, have a meeting or two, and then we take out our favourite code editor, framework and database, and start pounding at the keyboard. Few weeks, months later, we come back with a solution to all of their problems. Or is it, really? Our solutions should be driven by our clients and what they really need. We need to listen to them, talk to them, understand them. This presentation will show why we should become better communicators, and how we can use Domain Driven Design to bridge this communication gap. Creating an ubiquitous language that we share with our clients, we model their world in ours. These models live in bounded contexts, made out of aggregate roots, domain events, entities, value objects, that are all here to guide us to create better solutions, and write better software.