PyCon UK

Registration Office

Domain-Driven Design (DDD) Patterns in Python

Robert Smallshire, Austin Bingham

Saturday 15th, 11:30 (Room K)
Saturday 15th, 14:30 (Room K)
Sunday 16th, 11:30 (Room K)
Sunday 16th, 14:30 (Room K)


A workshop (3 hours)

This is a two day workshop.

Domain-Driven Design (DDD) is an approach to software development that emphasizes high-fidelity modeling of the problem domain, and which uses a software implementation of the domain model as a foundation for system design. This approach helps organize and minimize the essential complexity of your software. Python, as a highly productive, easy-to-learn, lightweight programming language that minimizes accidental complexity in the solution domain. This two day course will teach you the fundamentals of DDD, in the context of Python.

Attendees will learn about the following topics, the contexts in which to apply them, and techniques for implementing them in idiomatic Python 3: Entities and Values, Aggregates, Domain Events, Repositories, Projections and Domain Services, and Event Sourcing. We promote a clean architecture which clearly separates the high-value domain model from generic infrastructure concerns such as particular databases and web application frameworks.

The workshop is a mixture of short instructional sessions and hand-on coding exercises, supported by tests. Attendees can expect to spend much of their time coding, and will need a laptop with Python 3.6 installed.

The use of DDD for controlling complexity in large software systems is growing in popularity, owing to its effectiveness. However, we know from experience that it can be hard to get started with DDD, especially in Python, where DDD has yet to make much impact, and there a few examples to learn from. This workshop will condense the lessons our own decade of experience applying the key ideas DDD in Python, and get you off to a flying start!

Back to schedule