Тёмный
Explore DDD
Explore DDD
Explore DDD
Подписаться
Explore DDD is designed for senior developers, team leads, and software architects - technical leaders with experience building software systems for complex domains. The conference provides a creative space where domain-driven design (DDD) explorers, enthusiasts and experts can connect and share real-world experience of applying DDD philosophy and techniques. Conference goals:

• Provide a safe, creative, high-quality, fun, learning DDD-centric environment for attendees.
• Nurture a growing, diverse, pragmatic, humble, questioning, and open DDD community.
• Spread knowledge and adoption of DDD more broadly amongst the general software development community.
DDD and LLMs - Eric Evans - Explore DDD 2024
1:21:30
6 месяцев назад
Explore DDD 2020
1:27
4 года назад
Комментарии
@rezabet
@rezabet 4 месяца назад
Excellent talk. This was a great watch, thanks!
@SaMusz73
@SaMusz73 4 месяца назад
22:30 Model of Cognitionn 3.0
@semenivanoff8615
@semenivanoff8615 4 месяца назад
Software developers should make no decisions. Architects should, otherwise things like this happen with FB, Twit ads company.
@ExploreDDD
@ExploreDDD 6 месяцев назад
Video production note - The camera feed unfortunately had focus issues during Xin's session. We've done what we could in editing to minimize the effect so we could still publish her wonderful talk. Thanks for understanding.
@ExploreDDD
@ExploreDDD 6 месяцев назад
There are some temporary camera issues at the 6 min mark present in the original video feed (e.g. focus, visible cursor) that resolve after a couple of mins.
@zuxcode
@zuxcode 6 месяцев назад
Interesting
@sadukie
@sadukie 8 месяцев назад
I thought I saw Dave in pics of this event! This is great!
@barrett8637
@barrett8637 8 месяцев назад
Never, ever, ever put commands in your event streams. You will *always* eventually rebuild your read-model by replaying events and if you put commands in there, you will be triggering downstream behavior.
@barrett8637
@barrett8637 8 месяцев назад
That is to say the next time someone tries to view their Order Receipt, when you re-project their Order, you will CHARGE THEIR CREDIT CARD A SECOND TIME.
@barrett8637
@barrett8637 8 месяцев назад
You can avoid this by making your Credit Card service idempotent, but WHY DO IT IN THE FIRST PLACE
@JayKumar-wo9iv
@JayKumar-wo9iv 9 месяцев назад
Fantastic talk on software and lot more. Kept pausing, re-reviewing and taking so much of notes all along.
@sg9257
@sg9257 11 месяцев назад
A great talk!
@hsukesan
@hsukesan 11 месяцев назад
What a talk! 🎉🎉🎉 This is a must-watch talk for anybody following agile software development practices... Gomti... You spoke many stories from my mind too... 😊 Thanks a million for taking the courage to speak out, I really feel proud of you ❤️ This is inspiring me to keep asking questions 💗 like the way I do and don't feel bad about asking questions and pointing out improvement points, if any. I think it's not only me; these are shared experiences for software engineers (by the way, I hate being called a Software Developer, I believe I'm a Software Engineer) in this Agile software Industry. Thank you very much for sharing each of your stories connected to great references from Agile Manifesto or Eric's book. This is really inspiring to me. I've already added Eric's book to my reading list. You also mentioned good teams and bad teams - Yep, it's really correct - I also observed there are teams who work 💯 agile and succeed, whereas there are teams (who believe to be 💯 agile, fail hard and blame either agile or domains or architects or whoever they find they can put the blame easily to😂) I'm hoping to connect to you professionally to learn more from you and talk about shared experiences and your learnings out of it.... 😊
@GomtiMehta
@GomtiMehta 11 месяцев назад
Thank you so much Honey for this beautiful comment. I really appreciate it.
@jetloong1582
@jetloong1582 11 месяцев назад
Watching Mr. Scott Wlaschin talks are just pure fun. And of course learning a lot about the content but also gives incredibly inspiration how to explain it to other people in a very didactive way. Being tolerant for other choices but point out why this choice in particular is a better choice. I really like this and thanks for the great work.
@lawrenceokegbemi538
@lawrenceokegbemi538 Год назад
I love this
@jayshah5695
@jayshah5695 Год назад
Is the wrapper type possible in typescript?
@federicopasqua3916
@federicopasqua3916 Год назад
This was illuminating. The exact opposite of how we worked until now. I'm very curious to try this in some side project!
@trongphan6197
@trongphan6197 Год назад
by doing pure events(not orchestrator) nobody know what going on. down the road what will happen. what if there is one more step between finance and shipping for example: fraud detection - now you need to change the shipping to not listen to finance and reservation any more instead listen to fraud detection
@mauroservienti
@mauroservienti Год назад
Thanks for the comment. Yes, that's correct in a distributed system one of the biggest disadvantages is that it's harder to get an overall picture of what's going on. On the fraud detection part, it really depends on how it's implemented. Fraud detection could be implemented the way you suggest or by changing only finance. Finance "invokes" fraud detection as part of the payment flow and only if everything is fine publishes the event that eventually triggers shipping. In such a way shipping remains unaware of the fraud detection step.
@MrDomenic123
@MrDomenic123 2 года назад
Could someone explain me, how the information of quantity would change in the services? From my understanding, when Sales is the owner of the "shopping cart", and the quantity changes, it needs to publish an "QuantityChanged" event to notify the other services of the system, right?
@MahmoudAbduljawad
@MahmoudAbduljawad Год назад
It doesn't have; As suggested, when a command to update quantity is fired from client, and view-model decomposition occur, warehouse service will pick that command and behave according to it, so sales remain out of picture here.
@MrDomenic123
@MrDomenic123 2 года назад
Thanks a lot Mauro, I learned a lot from your talk!
@mauroservienti
@mauroservienti 2 года назад
Thank you
@Danielo515
@Danielo515 2 года назад
This talk should be watch by every developer, and his book should be a mandatory read.
@rodelias9378
@rodelias9378 2 года назад
Awesome presentation. Thanks a lot!
@aleksandermirowsky7988
@aleksandermirowsky7988 2 года назад
Scott Wlaschin always delivers, incredible talk!
@mikobelardo4328
@mikobelardo4328 2 года назад
Thank you for this excellent introduction to DDD and F#. 00:08 Title 00:10 How many things are wrong with this design? 01:09 The intersection between Functional Programming and Domain Driven Design 01:20 Is Functional programming scary? 02:01 Is Object Oriented programming scary? 02:42 What is Functional programming good for? 03:28 Part I: The importance of design 16:20 Part II: Understanding FP type systems - An introduction to "algebraic" types 25:19 Part III: Domain modeling with composable types - What can we do with this type system? 25:32 Modeling optional values 29:00 Modeling simple values and constrained values 36:38 Replacing flags with choices 42:16 Part IV: Encoding business rules with types 44:39 Communication is two-way - It's OK to push back 45:49 Summary
@edgeeffect
@edgeeffect 2 года назад
"Inject a smarter thing" is the best "slogan" I've heard in ages. It makes more sense of dependency injection than any other explanation I think I've ever heard. So,,, The Viceroy Butterfly is a test-mock! ;)
@Kazem_Javadi
@Kazem_Javadi 2 года назад
Very good conference! I enjoyed. Thank you.
@tyo007
@tyo007 2 года назад
The last part of this video is very important. Sometimes you see something very elegant and you say "I don't know what this thing does.". You don't need to know it, you trust it as long as the test works. The test need to be simple and also elegant that does not break in smallest change as well so it is meaningful If there is no test, then your argument is valid that you can't be sure that it still works OK. You learn what that thing does by looking at the test. if the test doesn't change, the source code change and it still works, no problem then. The main problem is, and happen many times, we skip the test in favor of short dev time..and then it bites us back in the ass later down on the road
@parijke
@parijke 3 года назад
Does anyone know if the slides are anywhere? I would like to investigate the example at ease?
@milehighhokie269
@milehighhokie269 3 года назад
I never get tired of watching and sharing this talk. It is so awesome!
@brucewayne2480
@brucewayne2480 3 года назад
I'm using it in typescript with fp-ts but didn't knew the concepts behind , it came naturally. Thanks for this amazing talk
@황조셉
@황조셉 3 года назад
Could you let me know the abbreviation of Boris and SNAP-E?
@ShaunPlus7
@ShaunPlus7 3 года назад
Hi, SNAP-E stands for Snap Not Analysis Paralysis - Enhanced. Boris diagrams tend to look like spider webs, so it is named after a song by The Who called "Boris the Spider"
@aidarlatypov7747
@aidarlatypov7747 3 года назад
Thanks Mauro, great talk! And thanks for this "stupid question technique", I used by myself similar technique, but it was my "idea" and I was not sure it makes sense at all, thank you for confirming!!! And I want to stress that some stupid scenarious can be reality!! Concerning your example - it was actually real situation when requirements were ''if the last name end at xx give a discount % to the customer" and it was a kind of action - every day anothe last name gets a discount)))
@christianjohansen6182
@christianjohansen6182 3 года назад
Domain Service tactical pattern spans multiple aggregates, but only mutate a single aggragate
@pupazzamobila1006
@pupazzamobila1006 3 года назад
The guy resembles a retired rock star. Keeps playing same tune and expects to make money of it. But if someone wants to remain in the focus of attention, there is no way around creating NEW content.
@jonnytheponny5753
@jonnytheponny5753 3 года назад
Would be interesting to here concrete points of criticism, what do you not like, what must be better? thanks
@jamesgriffith7044
@jamesgriffith7044 3 года назад
Sandi Metz gives the best talks on OOP, and I can't be convinced otherwise.
@bigdlamz
@bigdlamz 3 года назад
Enjoyed this talk a lot, needed a bit more meat on actual DDD concepts though
@marna_li
@marna_li 3 года назад
Commands may return values. The real difference is that a Command performs an action that changes state, and a Query just returns some data.
@palawo
@palawo 3 года назад
Thank you !!!!! Awesome class mister!
@softwarengineeringwithfabri
@softwarengineeringwithfabri 3 года назад
amazing!
@kallaskaspar
@kallaskaspar 3 года назад
Great talk, great book! The concepts have a ton of value even if you don't use F#. It's also a smooth beginner-friendly introduction to domain-driven design.
@wangzhuo1987
@wangzhuo1987 3 года назад
👍
@Sibben92
@Sibben92 3 года назад
`People will not self-organize around a system that they do not understand.` That is a good thought to keep in the back of the head when trying to navigate things like this.
@asdfasdfasdfasdf219
@asdfasdfasdfasdf219 3 года назад
Good video but read and orange slides aren't the best for presentation.
@elissonmichael2807
@elissonmichael2807 3 года назад
Thanks for sharing this.
@gwho
@gwho 4 года назад
Clear, easy takeaway: Turn conditionals into polymorphic objects so that you can just send messages, while having the detailed behavior all stuffed at a different level.
@tomtommorrow8930
@tomtommorrow8930 4 года назад
BRAVO!
@ViktorFerenczi
@ViktorFerenczi 4 года назад
Essential talk for developers. It well deserves all upvotes, also the zero downvotes speaks for itself. Not that many other videos has an infinite upvote/downvote ratio on RU-vid :)
@computerman2k7
@computerman2k7 4 года назад
Awesome, this teached me a lot more about typescript than the typescript docs itself
@jbrains
@jbrains 4 года назад
A lovely talk. Thank you. I'd add that compile-time type checking isn't like having microtests, but rather that they are microtests. Specifically they are microtests that most programmers would not volunteer to write and that they fortunately cannot forget to run.
@mathiasstrasser
@mathiasstrasser 4 года назад
Is it possible to have its screen?
@matthewchambers5572
@matthewchambers5572 4 года назад
How does placing an order then work? does the information in each boundary transition to its own order model? I could assume sales would be the one where this operation takes place, but how does validation in other services regarding the placement of this work? e.g. you could call sales to say place this order/order this cart, but what is there is a business rule for an order can only be placed if all of the items have stock at that time? Thanks
@mauroservienti
@mauroservienti 3 года назад
Hi Matthew, thanks for the comment and more importantly for the patience. Unfortunately, there is no way to get notifications for comments on RU-vid videos not uploaded by me. Back to your questions: > does the information in each boundary transition to its own order model? Correct. > I could assume sales would be the one where this operation takes place, but how does validation in other services regarding the placement of this work? e.g. you could call sales to say place this order/order this cart, but what is there is a business rule for an order can only be placed if all of the items have stock at that time? Sales can have a saga that waits for confirmation events from other services before proceeding with the order. The most common use case being waiting for Payments to raise an event confirming the authorization on the user's credit card, for example. I wrote about some of these topics on my blog: - milestone.topics.it/view-model-composition/2019/04/18/the-fine-art-of-dismantling.html - milestone.topics.it/2019/05/02/safety-first.html Let me know if that answers your question. Do not hesitate to get in touch, the best way is to use the contact form on the blog. Cheers.
@brahayansuarez4687
@brahayansuarez4687 4 года назад
This talk is so great. This one is so useful for elm programmers