Matthias Noback

Advanced workshops & training

Affordable workshops for PHP developers
Upcoming workshops:
2-day workshop
Domain-Driven Aggregate Design
Learn to apply DDD principles to the design of your domain objects
September 20-21 Utrecht area (NL)
2-day workshop
Advanced Application Testing
Set a standard for web application test suites
October 18-19 Utrecht area (NL)
2-day workshop
Building Autonomous Services
Become familiar with autonomous service design
November 22-23 Utrecht area (NL)
Integrating Bounded Contexts

1-2 days

Bounded contexts, commands, domain events, enterprise integration patterns, (de)serialization, (de)coupling, messaging

Domain-Driven Design Building Blocks

1 day

Aggregates, consistency, domain invariants, entities, value objects, domain events, application services, transactions.

Docker and Docker Swarm

1-2 days

Introduction to containers, Docker, Docker Compose, building, testing, sharing and deploying images

CQRS & Event Sourcing

1 day

Commands, queries, events, event-sourced write models, read model projections, query optimizations, transactional versus eventual consistency.

Ports & adapters - Hexagonal architecture

1 day

Clean architecture, layered architecture, screaming architecture, domain model, application services, infrastructure, ports & adapters, project structure.

Other topics...

To be determined

TDD, Architecture diagrams, Living documentation, Dependency injection, Symfony bundle design, OSS Package development.

In-house

1795,- /day

  • query_builder1-3 days
  • businessSomewhere in Europe
  • supervisor_accountUp to 15 participants
Public

277,- pp./day

  • query_builder1-3 days
  • settingsCarefully selected program
  • supervisor_accountAt least 5 participants

accessibility

Well-balanced

My workshops are well-balanced: they contain equal portions of theory and practice. You can start implementing advanced concepts right-away and verify the correctness of their results with the trainer.

Classes are limited to 15 participants to give everybody an equal opportunity to learn.

wb_sunny

Concepts in plain sight

When explaining a technical concept, it will not be buried beneath a pile of framework code or implementation details. The concepts are in plain sight, ready for you to grasp.

Sandbox projects contain back-to-basic PHP code, so when you've finished your training, you can then use any framework you like to let your code blossom.

lightbulb_outline

Advanced topics

I offer lots of advanced workshop topics. We don't focus on the basics, we dive straight to the core of a concept.

There are a lot of different subjects we can cover, it's up to you to select which will be most useful for you or your team.

The Tactical DDD workshop by @matthiasnoback was beyond awesome! Had at least 4 a-ha moments! Really good! #phpbnl17

— Robert Basic (@robertbasic)

So glad I attended @matthiasnoback's 2day workshop on advanced application development. Already looking forward to the next workshop.

— Caroga (@Caroganet)

@matthiasnoback again! Killing it with his Tactical DDD workshop. #symfonycat pic.twitter.com/T2QDkrNO86

— Symfony Catalunya (@symfonycat)

Upcoming workshops

Domain-Driven Aggregate Design

2-day workshop
Thursday September 20th, 9:30-17:00
Friday September 21th, 9:30-17:00

Noback's Office

Utrecht area (NL)

In this 2-day workshop, you'll go back to the basics of object-oriented programming and learn to apply core principles of Domain-Driven Design to your domain objects: aggregates, consisting of entities and value objects.

You'll learn how to progress from domain knowledge to a functioning domain model, and use unit testing along the way to describe the expected behavior of your objects.

The program

  • Object-orientation, distilled
  • Event storming session: the warehousing domain
  • Modelling session: determine types and behavior
  • Implementing an entity and value objects
  • Aggregate design rules
  • Working with domain events and eventual consistency

Advanced Application Testing

2-day workshop
Thursday October 18th, 9:30-17:00
Friday October 19th, 9:30-17:00

Noback's Office

Utrecht area (NL)

Many web applications out there don't get the testing love they need. Some test suites only have unit tests; they run fast, but will never prove that features as a whole function correctly. Some test suites only have functional tests; they run very slowly, they often fail for no reason, but they can prove that all the wiring is correct too. There is a middle ground, which we'll be aiming to reach in this 2-day workshop. We take an existing application with only functional tests and "tease out" other types of tests. We thereby:

  • Increase the speed and predictability of the test suite as a whole,
  • Reduce the need for functional tests,
  • Set a standard for web application test suites, which you can apply at home (or at work) too. All of this will be rooted in some pretty interesting software architecture theory (i.e. ports & adapters and layered architecture).

The program

  • System tests
  • Architecture: ports, adapters, layers
  • Integration tests
  • Unit tests
  • Acceptance tests
  • Test doubles and architectural boundaries
  • Spotting design issues with feedback from tests

Building Autonomous Services

2-day workshop
Thursday November 22nd, 9:30-17:00
Friday November 23rd, 9:30-17:00

Noback's Office

Utrecht area (NL)

In this 2-day workshop we’ll dive into the topic of Autonomous Service design, with a sandbox project containing several interdependent services. These services send messages to each other, and they call each other to retrieve data. In other words, they’re not autonomous at all. We’ll figure out some ways in which we can invert dependencies and leverage a messaging solution to achieve autonomy after all.

The program

  • Guidelines of designing for autonomy
  • Event-based service integration
  • Solving the "command" issue
  • Read models and projections
  • Solving the "query" issue
  • Bounded contexts
  • The Reservation pattern
  • Reporting

Archive

Date Location Title
30-09-2017 Zeist (NL) An introduction to Docker, Compose and Swarm
20-04-2017 Zeist (NL) Integrating Bounded Contexts
17-03-2017 Zeist (NL) Advanced Application Development
02-01-2017 Vlissingen (NL) Integrating Bounded Contexts with RabbitMQ
21-12-2016 Utrecht (NL) Integrating Bounded Contexts with RabbitMQ
19-12-2016 Utrecht (NL) Living documentation
28-11-2016 Utrecht (NL) Software Architecture Diagrams
19-09-2016 Utrecht (NL) DTOs and serialization techniques
07-09-2016 Vlissingen (NL) Tactical DDD (just better OOP)
23-07-2016 Barcelona (ES) Tactical DDD (just better OOP)
04-07-2016 Utrecht (NL) Tactical DDD (just better OOP)
07-09-2016 Vlissingen (NL) An evening with CQRS
03-06-2016 Utrecht (NL) An evening with CQRS
03-06-2016 Utrecht (NL) Hexagonal Architecture training
20-11-2015 Paris (FR) Hexagonal Architecture training
08-09-2015 Amsterdam (NL) Hexagonal Architecture training
21-04-2015 Zürich (CH) Hexagonal Architecture training
18-03-2015 Milan (IT) Hexagonal Architecture training

Subscribe to the mailing list

And receive a notification whenever a new workshop gets scheduled.