Paul Rayner is one of the world’s leading Domain-Driven Design (DDD) practitioners. He is a developer, instructor, coach and popular conference speaker. He co-founded DDD Denver and is founder and chairman of the Explore DDD Conference. His company Virtual Genius LLC, provides training and coaching in DDD for agile teams. Paul is from Perth, Australia, but chooses to live, work and play with his wife and two children, in Denver, Colorado. He (occasionally) blogs at thepaulrayner.com and tweets with an Australian accent at @ThePaulRayner.
There are different refactoring reagents, each with different effort, frequency and potency. Combined with domain-driven discovery and exploration process catalysts, these refactoring reagents provide code chemistry reactions that transform code towards a rich domain model. This presentation shows the code chemistry of a redesign of the video camera support in Nexia Home Intelligence. Nexia is a large-scale Ruby on Rails application with a customer base using tens of thousands of video cameras.
We’ll walk through examples of obscure production code, and show key code chemistry reactions that transformed the video camera code towards ubiquitous language, a richer domain model, better performance and scalability, and cleaner module boundaries to improve deployment and troubleshooting. Learn how the intersection of Domain-Driven Design (DDD), pair-programming, and TDD enabled us to make significant improvements to the performance and maintainability of the Nexia codebase, while continuing to deliver new customer features.
If you fit into one of these categories, then this workshop is for you – It’s easy to get lost in the patterns and acronyms and miss the essence of DDD. This workshop will provide you with a solid grounding in the foundational ideas, techniques and skills for doing DDD well in your own project context.
The workshop is very hands-on and interactive, will help you connect everything in DDD together and see how it fits and what's most important, and give you practical tools to take away and try on your project. We will be doing some pairing exercises which will require laptops. We will be reading code, but no coding experience is necessary.