Most application code freely mixes domain logic with infrastructural concerns. Models are directly tied to the relational database of the project, use cases are inseparable from their web controllers, and external services are used without an appropriate abstraction.

This limits your ability to design the application in a domain-driven, test-first way.

What we need is a way to separate core code from infrastructure code. And that’s surprisingly easy. All the design patterns have already been invented for that. Until we run out of time, we’ll keep (re)discovering patterns like Application Service, Entity, Read Model, Domain event, Event subscriber, and so on. These patterns can be used to establish a testable, portable application core, with a focus on behavior, instead of data.


Comments are closed.

I just attended this workshop, and I liked it a lot. The format was suitable for a remote session.
The how and why of decoupling where well explained. The setup of the tutorial project was really easy. Matthias kindly answered all our questions, with a lot of patience and a lot of... well, grace, by lack of a better word. Even though the subject was more familiar to me than I thought, I still got some food for thought afterwards.

Something that maybe could be improved would be the sharing of the code of the attendants. A possible solution would be to instead of letting attendants share their screen, require them to file a pull-request, or give them write-access to the repository (only branches, not master). Another thing that could be improved is the difference in level of the attendants. Sometimes, quite a lot of time was spent to make something clear to one person. This is ok, and it is understandable, but it slows the session down a bit. In a normal tutorial session, I would suspect that such a person would get a one-on-one when everyone else was working on the assignments, but this was not possible in a remote session. Due to the fact that these are problems induced by covid-19, I don't subtract any points for that ;)

Keep going Matthias! I will surely look out for more of your talks.

Jos Elstgeest at 17:14 on 25 Jun 2020

Great tutorial Matthias!!

(fast paced which I personally like) especially the interaction, seeing the small nuances in the different solutions to the same problem.

Makes it more clear how to completely build your core application domain free from framework noise

Presentation was almost as good as in person.

Thank you

The information you provided during the slides was good. But what didn't work very well in this context with a remote workshop was the amount of time it took to get feedback. The technical issues we had to do screen sharing did actually block me from providing feedback during the workshop. Where I would have been more active in real life.

About the technical issues:
- I would recommend asking all participants to mute and disable their video.
- Would it help to use pull requests on github to show examples from other participants? It would at least help to save the time of constantly switching.
- A moderator for questions would help, so you can focus on the answers, and you don't have any broken audio links with participants.

I do understand that it must have been very awkward for you to talk just to a webcam without seeing any faces.

I don't know if it was my own expectation, but based on the title and description of the workshop I would have expected a more advanced course. Where you would skip a large number of definitions. For me, the focus of the workshop could have been on the implementation and technics rather than the usage of behat. Something that you might prevent by adding also a set of scenario-tests in phpunit? So you don't have to explain the concepts of behat to the participants? Behat is a great tool, but not many php-developers are using it.

Thanks a lot for doing this!

To Ibuildings I would just say, please use a more suitable video-application. The video was not in sync with the audio. I was sometimes just staring at a frozen screen. I lost my connection somewhere in the middle of the workshop. We can say a lot about applications like zoom. But those do work. At least that is my experience with another online conference.

Oliver Mensah at 17:48 on 25 Jun 2020

The workshop was great from explanation of concepts to technical implementations. My only concern was how best this valuable knowledge could be made available to up and coming engineers to know better patterns than to always follow the "usual" development flow; get a request, process in the controller, either save or retrieve data from the database.

Thank you, Matthias! I'm always eager to learn from your experiences.

Great work!

I loved this way of working and you gave a nice fast-paced presentation and workshop. We spent 3 hours like it was nothing.

Thank you for this introduction in a very nice of programming.

Kudo's for the preperation and provid data.

Matthias Noback (Speaker) at 08:57 on 26 Jun 2020

Thanks for all your detailed comments!
I agree that using PRs would be useful, I'll try that next time.
It's a bit weird to talk to your own monitor, but I usually had a few participants visible on the screen, which made it easier. I don't want to disable all video, since I won't have any visual clues left. In fact, I'd like to see everyone, because I wouldn't want people to "disappear" during the workshop (this also happens if everybody is in the same room, so maybe you can't really prevent it).
Anyway, thanks for attending and looking forward to meet you on some other occasion.

Thanks again for the workshop. It gave me some great insight on how to deal with this technique. I'm starting to found out about DDD and this gave me ideas on the code implementation side of it.
The online format is still something I have to get used to. Hopefully in the future we can attend in the psychical world again.