Learning Domain-Driven Design