Explore DDD 2020
1:27
4 жыл бұрын
Пікірлер
@rezabet
@rezabet 2 ай бұрын
Excellent talk. This was a great watch, thanks!
@SaMusz73
@SaMusz73 2 ай бұрын
22:30 Model of Cognitionn 3.0
@semenivanoff8615
@semenivanoff8615 2 ай бұрын
Software developers should make no decisions. Architects should, otherwise things like this happen with FB, Twit ads company.
@ExploreDDD
@ExploreDDD 4 ай бұрын
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 4 ай бұрын
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 4 ай бұрын
Interesting
@sadukie
@sadukie 6 ай бұрын
I thought I saw Dave in pics of this event! This is great!
@barrett8637
@barrett8637 6 ай бұрын
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 6 ай бұрын
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 6 ай бұрын
You can avoid this by making your Credit Card service idempotent, but WHY DO IT IN THE FIRST PLACE
@JayKumar-wo9iv
@JayKumar-wo9iv 6 ай бұрын
Fantastic talk on software and lot more. Kept pausing, re-reviewing and taking so much of notes all along.
@sg9257
@sg9257 9 ай бұрын
A great talk!
@hsukesan
@hsukesan 9 ай бұрын
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 9 ай бұрын
Thank you so much Honey for this beautiful comment. I really appreciate it.
@jetloong1582
@jetloong1582 9 ай бұрын
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 10 ай бұрын
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 Жыл бұрын
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 2 жыл бұрын
Does anyone know if the slides are anywhere? I would like to investigate the example at ease?
@milehighhokie269
@milehighhokie269 2 жыл бұрын
I never get tired of watching and sharing this talk. It is so awesome!
@brucewayne2480
@brucewayne2480 2 жыл бұрын
I'm using it in typescript with fp-ts but didn't knew the concepts behind , it came naturally. Thanks for this amazing talk
@user-gj2ho6dp6u
@user-gj2ho6dp6u 2 жыл бұрын
Could you let me know the abbreviation of Boris and SNAP-E?
@ShaunPlus7
@ShaunPlus7 2 жыл бұрын
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 3 жыл бұрын
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 3 жыл бұрын
BRAVO!
@ViktorFerenczi
@ViktorFerenczi 3 жыл бұрын
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 KZbin :)
@computerman2k7
@computerman2k7 3 жыл бұрын
Awesome, this teached me a lot more about typescript than the typescript docs itself
@jbrains
@jbrains 3 жыл бұрын
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 3 жыл бұрын
Is it possible to have its screen?
@matthewchambers5572
@matthewchambers5572 3 жыл бұрын
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 KZbin 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 3 жыл бұрын
This talk is so great. This one is so useful for elm programmers