What is DDD - Eric Evans - DDD Europe 2019

  Рет қаралды 265,162

Domain-Driven Design Europe

Domain-Driven Design Europe

Күн бұрын

Пікірлер: 116
@ruixue6955
@ruixue6955 4 жыл бұрын
6:22 example 7:38 drawbacks of the cargo system design 7:50 2 perspectives of software design 8:01 perspective 1: software deisigner 8:32 side-effect of the cargo system 8:43 combine complex logic with the database update violates the principle of separation of logic from updating state 9:08 another perspective: domain 9:58 more detail, 10:02 we cant always get such high level discussion 11:01 what we want is to be able to notice when this happens and to take a correct action 11:18 how would it affect the software as it exists 11:46 we have to find another way of dealing with 14:15 one of the principles of DDD: the LANGUAGE is very important 14:21 one thing I've noticed: *when we talk about the software, we don't use the same language that actually in the software*
@Gatiguay
@Gatiguay 3 жыл бұрын
Pmy no uno menh
@5uperM
@5uperM 3 жыл бұрын
Many thanks mate.
@garygao4863
@garygao4863 Жыл бұрын
Thanks man, + nice indentation
@yilai6307
@yilai6307 Жыл бұрын
many thanks!
@neoflyboy
@neoflyboy 10 ай бұрын
best comment in youtube technical talks. Your indentation was genius. 😻😻💌💌💘💘💝💝💖💖💗💗💓💓
@scottsoward
@scottsoward 3 жыл бұрын
"By choosing a model that is well suited for particular problem you want to solve, you can make the computation more simpler." brilliant.
@seidenada526
@seidenada526 4 жыл бұрын
"Which one is more useful?" - great question to use in an event storming session. It's conveying that modelling is about the usefulness of it for the problem being solved, not about the soundness of the model per se.
@augustsbautra
@augustsbautra 2 ай бұрын
24:33 "You don't know if you've really explored the space of possible solutions if you never come up with a bad idea."
@pr0l0gix
@pr0l0gix Жыл бұрын
Absolutely amazing. Finally a video on DDD with real business use cases and lots of novel ideas!! thank you!
@hologos_
@hologos_ 4 жыл бұрын
The annoying popping at the beginning had stopped around 7th minute.
@ahmadmusaffa
@ahmadmusaffa 4 жыл бұрын
It was a great talk.
@simasbutavicius8485
@simasbutavicius8485 3 жыл бұрын
Thanks!
@cooperating.systems
@cooperating.systems 2 жыл бұрын
great talk. Thinking about the whole shipping example, the distinction between the legs, the stop and the itinerary it occurred to me that this is very close to the definition of a category in mathematics. A Category is a set of arrows and a set of points and two maps from arrows to points: start, finish: Arrow -> Point. Paths are then built out of compositions of arrows, with the empty path denoting the identity. So to map that language to the example we have: + points map to ports (or other stopping places, eg towns) + arrows map to legs + paths map to itineraries.
@pyepye-io4vu
@pyepye-io4vu Ай бұрын
If we think abstractly enough, pretty much everything in life turns into arrows and points. (Directed graph)
@786gnafis
@786gnafis 4 жыл бұрын
"Realism" is a distraction...............wow amazed by this line...............
@fdfdfhdg9554
@fdfdfhdg9554 4 жыл бұрын
Xxx
@EdwardLangeland
@EdwardLangeland 3 жыл бұрын
Why is it that I don’t recognise the essence of DDD when I hear other people than Eric Evans talk about it? To me DDD is very much about modelling the data most useful.
@abhinavpaudel1152
@abhinavpaudel1152 Жыл бұрын
Exact case for me
@jeet.prakash
@jeet.prakash 4 жыл бұрын
This is THE best DDD talk I have ever heard.
@anderssyvertsen7791
@anderssyvertsen7791 4 жыл бұрын
What is the fuss about? Some uml-modeling and a little "philosophy" ?
@EdwardLangeland
@EdwardLangeland 3 жыл бұрын
@Oscar Bardrick such mundane things that many (most?) developers don’t really get?
@thiagovilla970
@thiagovilla970 3 жыл бұрын
Omigod when he fixed the mic! 😗👌
@mamaladka
@mamaladka 4 жыл бұрын
I watch and feel a nostalgy: we developed a shipping company software 8 yrs ago. We did not know about DDD, but made it pretty not bad
@debasishraychawdhuri
@debasishraychawdhuri 4 жыл бұрын
because DDD is a useless fad, what you guys used is common sense.
@pieter-janliekens9306
@pieter-janliekens9306 3 жыл бұрын
@@debasishraychawdhuri I don't think it's a fad. It's just one of many methods/techniques to build software better.
@lionelt.9124
@lionelt.9124 3 жыл бұрын
@@debasishraychawdhuri Any tool can be abused.
@bharathmshetty
@bharathmshetty 2 жыл бұрын
@@debasishraychawdhuri looks like you haven't built anything outside simple REST application during the time of your comment.
@kingscrusher
@kingscrusher 2 жыл бұрын
Iconic talk. l I really like the qualification of abstractions being useful if they are use-case based but can this be further qualified by "accumulative (permanent) use-based abstractions". For example, what we are modeling does have more temporary features but seemingly insignificant but more permanent features. You want your model to remain useful in the longer term, so modelling the more permanent use-case driven aspects as priority may be useful. With this abstraction modeling mindset, more priority would be based on those seemingly near-insignificant aspects of the abstractions as long as they were more permanent. I guess for example Amazon didn't really consider "books" to be permanent but rather they were creating the distribution architecture where books could later be replaced by anything. So the more "permanent" aspect is the delivery infrastructure Amazon built - not books. I love your talk so much - thank you :)
@marredcheese
@marredcheese 3 жыл бұрын
My knee-jerk reaction is also to like legs better than stops, but it's very distracting how poorly he explains his concept of stops, making that solution unfairly seem way worse than it probably is. What's the definition of a stop? What's the "unload transport" member signify? I assumed it was a method since it's a verb, but then he starts talking about "portions" (huh? what are those?), so maybe it's a noun? Ugh. And then he chooses to talk about the leg solution very concisely before going into fine detail about the stops solution to get a laugh. Ok, well let me ask you: which fruit is simpler to eat? Pineapple - a tasty tropical fruit. Apple - an edible fruit of the species Malus Domestica from the Rosaceae family with more than 7,500 known cultivars and a genetic makeup consisting of 17 chromosomes and an estimated genome size of approximately 650 Mb. Boy, pineapples sure sound a whole lot easier to eat - you can probably just pick one up and take a bite.
@augustosotelo5914
@augustosotelo5914 3 жыл бұрын
I think you got the concept behind the examples so he made his purpose. The probe of that is you are right and for his purpose realism is a distraction like he said.
@elysedawson8274
@elysedawson8274 3 жыл бұрын
I also missed the part where Stop and Leg had different properties so I was very confused about their interchangeability not being equal.
@Inbarreto
@Inbarreto 4 жыл бұрын
play it at 1.5x speed
@MaximilianBerkmann
@MaximilianBerkmann 4 жыл бұрын
Good call.
@rsardenberg
@rsardenberg 4 жыл бұрын
@@MaximilianBerkmann l
@RicoMinovo
@RicoMinovo 3 жыл бұрын
2x
@winter-survivor
@winter-survivor 3 жыл бұрын
So I just lost half an hour of my life because I didn't came down here before start watching hahaha.
@Ascentyon
@Ascentyon 3 жыл бұрын
@@winter-survivor I recommend installing Video Speed Controller extension. It allows finer control over what KZbin offers. I generally watch videos at 3x speed, this one I watched at 2.5x because I wanted to focus on it.
@esteban-alvino
@esteban-alvino 4 ай бұрын
Thank you for the video, seems modelling is a fundamental part of the design, the meaning of things it depends on the perspective, the point of view of each team, standarize that no sure if it is possible, already solutions are out there, but no publicly open, to study, no reuse, if not start from scratch, make this sense , hope it.😅
@darwinschuppan8624
@darwinschuppan8624 5 ай бұрын
Regarding the end: Why would you need to tie the new functionality to any specific data type? In the beginning, Evans emphasized the importance of separating data from functionality, so why not just keep them separate? This seems like a phenomenon that only happens when you restrict yourself to an OOP-exclusive way of thinking about problems, but most modern languages don't force you to do OOP.
@Anon-xx9qc
@Anon-xx9qc Жыл бұрын
For everyone watching the first few minutes I can tell you: The sound quality will get during the talk
@pietropeterlongo2695
@pietropeterlongo2695 7 ай бұрын
Before the 1 minute mark he apparently shows a quote on the screen that is not shown in the video, no pronounced in the audio, we are hinted it is about not being perfectionist in design and we are asked to keep it in mind throughout the talk. Anyone knows the specific quote or the source of slides?
@150metri
@150metri 2 жыл бұрын
3:30 he adjusts the mic....yes!
@carnaedy
@carnaedy Жыл бұрын
Meanwhile, my first thought was, why choose either? It seems clear to me that an itinerary is a series of *cargo handling events* that come in several different flavours, but for the purpose of the talk can be reduced to loading and unloading. The issue with both the stop and the leg model is that they are trying to couple two such events into a single object, and I don't think that is correct.
@Ade-nn
@Ade-nn 2 ай бұрын
You'll get detention for your impertinence 😅
@bishalneupane
@bishalneupane Ай бұрын
absolutely beautiful talk
@TricoliciSerghei
@TricoliciSerghei 3 жыл бұрын
Thank you mr Evans, very insightful talk.
@souravnandi7705
@souravnandi7705 4 жыл бұрын
Oh ! the legend himself !
@sortof3337
@sortof3337 4 жыл бұрын
we use this at work and I love it.
@matt-g-recovers
@matt-g-recovers 3 жыл бұрын
I enjoy the way he thinks
@zuxionglin4092
@zuxionglin4092 4 жыл бұрын
Where is your book DDD 2016 edition?
@cynew
@cynew 2 жыл бұрын
Great talk, simple but essential!
@TheZimberto
@TheZimberto 2 жыл бұрын
Was the audio recorded on a wax cylinder?
@janeknox3036
@janeknox3036 2 жыл бұрын
20 minutes in and I have no idea what he's trying to communicate. I thought he was a pro on communicating.
@FaustoOliveiraFilho
@FaustoOliveiraFilho 4 жыл бұрын
make the legs a pair of stops?
@sticksen
@sticksen 4 жыл бұрын
Hmm, so what exactly is DDD now? Just using Class names that match the typical parts of a domain?
@seidenada526
@seidenada526 4 жыл бұрын
You are using at a very reductionist description of what DDD proposes, but I get how it's "actionable" insights can be interpreted just as that. Have in mind that DDD is a set of guiding principles that presents tools since the code level (you may have heard about value objects) up to a strategical level (when designing teams around bounded contexts) - and doing all that by focusing on the core domain and having a shared view of the problem space with the domain experts. The usefulness of this might not be apparent for a simple CRUD system, but its invaluable when dealing with other complex ones.
@sticksen
@sticksen 4 жыл бұрын
seidenada I was expecting that this Video talks about Bounded Contexts, Value Objects, Aggregates etc. But I got this information now from somewhere else, thanks!
@ZefekKa
@ZefekKa 4 жыл бұрын
@@sticksen DDD is not about value objects, aggregates … It is domain model which is architectural business pattern. But there are next patterns which can be used in relation with DDD. DDD is about naming, bounded context, vocabulary. It is more than programming technique. It is development philosophy.
@sticksen
@sticksen 4 жыл бұрын
ZefekKa of course it is also about the things I mentioned. It’s the Tactical Design.
@robmoore2209
@robmoore2209 4 жыл бұрын
Closer than it sounds. I think this Is a great place to start, towards feeling like you really "get" DDD :)
@simonoreilly2k9
@simonoreilly2k9 2 жыл бұрын
Does the concept really require a 57 minute video?
@EdissonReinozo
@EdissonReinozo 4 жыл бұрын
This is gold! Thanks!!
@isparoz
@isparoz 3 жыл бұрын
dude, if you cannot explain simply, sorry you did not understand it.
@thatpaulschofield
@thatpaulschofield 4 жыл бұрын
It's all shits and giggles until the gd DBA says "We don't need an Itinerary table" and shuts your design down. Do I sound bitter? 😉
@DurgaswaroopPerla
@DurgaswaroopPerla 4 жыл бұрын
What's gd?
@thatpaulschofield
@thatpaulschofield 4 жыл бұрын
@@DurgaswaroopPerla God damn
@MichaelMeierhoff
@MichaelMeierhoff 4 жыл бұрын
Great contribution...
@phyzix_phyzix
@phyzix_phyzix 3 жыл бұрын
Compose the leg with two stops.
@lightfeather9953
@lightfeather9953 3 жыл бұрын
not watching due to disabled voting. Why should I assume it's worth my time if you're afraid of downvotes?
@ewamagaj7312
@ewamagaj7312 2 жыл бұрын
Great, now instead od going to sleep i will think about container ships
@chandrasekharanem1155
@chandrasekharanem1155 2 жыл бұрын
how's it going 🤣
@RH-of5cr
@RH-of5cr 2 жыл бұрын
move the mic of your face pls (literally go back in the past and do that, thanks)
@shawnkec
@shawnkec 3 жыл бұрын
Nice!
@MS-cs7gt
@MS-cs7gt 3 жыл бұрын
1.5x is best
@montancheg
@montancheg 2 ай бұрын
Even Eric himself still barely understands what DDD is and what he is talking about.
@ashw6015
@ashw6015 3 жыл бұрын
Let me save you 57 minutes of your life..."Name stuff properly"
@m313shaikh
@m313shaikh 4 жыл бұрын
instead of leg/stop “route” fit better?
@GammaStrobe
@GammaStrobe 4 жыл бұрын
Itinerary is the object that has the legs or the stops, and itinerary is a synonym of "route"
@sriramvenkatakrishnan4482
@sriramvenkatakrishnan4482 2 жыл бұрын
@@GammaStrobe Although it is tempting to use synonyms, using itinerary is better, if that is what people in the domain are used to. Leg/Stop are different from route. Leg is a part of route and stop is technically not part of route. There might be some business process between each unload and load at a stop. Depends on what problem you are trying to solve as he says :)
@Guzguz28
@Guzguz28 Жыл бұрын
❤❤❤
@1testrad
@1testrad 3 жыл бұрын
Thanks a lot ...
@ak-yo4wo
@ak-yo4wo Жыл бұрын
I played at 0.5 x
@IDesireToUpliftOthers
@IDesireToUpliftOthers 3 жыл бұрын
Average DDD fan vs average DDD enjoyer
@Mvrck44
@Mvrck44 3 жыл бұрын
Hey, I haven't watched it all the way yet, but is it really that bad, that of 60.000+ views nobody liked it? Let me be the first than :D
@eduardojreis
@eduardojreis 3 жыл бұрын
Nops, the counter of likes is just hidden.
@debasishraychawdhuri
@debasishraychawdhuri 4 жыл бұрын
What's wrong with legs? It needs external logic to make sure that the end of one leg is the start of the next. You don't have that problem with the stops. Legs simply have redundant information causing this problem. I am not sure why the non-tech people have to speak the same language as the thing is the software, non-tech people still normally cannot understand how something will work. Also, non-tech people use different words to mean the same thing, are we supposed to create different aliases? Sounds more like a fad than an actual software development technique that works in practice.
@pieter-janliekens9306
@pieter-janliekens9306 3 жыл бұрын
Nothing is wrong with either solution. And probably there even might be a better solution if I asked you to think really hard you might come up with something like a route or itinerary. It's not even that point he's trying to make. The point is we need to speak a common language to prevent us from creating software that doesn't fit the problems and scenario's of it's users . We need to carefully and thus not carelessly compass potential future requirements without overcomplicating and overspecifieing so we can always keep on building software ;). And in order to do that we might use DDD and create a lot of models and shared definitions instead of inventing new. Having proper business alignment is great. And event storming is also a very good way to involve domain experts in the proces of defining possible solutions and spotting it's shortcomings upfront.
@adamcarrol2049
@adamcarrol2049 2 жыл бұрын
In the text he encourages fleshing out these nuances in language to find deeper insight into the problem. Work hard to achieve clarity in the language used between teams, and all of the sudden a developer knows exactly what a domain expert is explaining, or vice versa, with less or minimal ambiguity. If some thing or part of the language is unclear or inconsistent, work to make it clear and consistent. As a result, you will gain valuable perspective on what needs to (or could) interact with something else to provide a rich and meaningful experience to the user. The benefit of this is, as a developer, you become very good at distilling down information and abstracting out the patterns - an invaluable skill regardless of the domain. It might seem futile and pedantic, but this skill of effective abstraction is transferrable across every single domain. Its difficult to abstract a pattern out of something you don't understand, but with effective language, the domain experts can help you bridge that gap.
@ivanrodriguez9427
@ivanrodriguez9427 4 жыл бұрын
Flat Earth
@李蛋球
@李蛋球 3 жыл бұрын
受益匪浅
@davidhosking4674
@davidhosking4674 3 жыл бұрын
Aaaaasasa
@godisnjiodmor
@godisnjiodmor 3 жыл бұрын
Coughing into the microphone? Who taught you that? Will you teach us that too? And without apology in the end?
@hydtechietalks3607
@hydtechietalks3607 3 жыл бұрын
How are your kids? shower some love, focus on technology...
@nodetransit
@nodetransit 2 жыл бұрын
omg ! fell asleep... twas like listening to my wife yap
@HR-qy3gf
@HR-qy3gf 5 ай бұрын
the sound engineer should be fired
@alihammadshah
@alihammadshah 9 ай бұрын
Is realism a distraction thou? Aren't abstractions real aspects / perspectives on reality? Even when we are experiencing the real world, like the picture of earth from moon, we are still bound by abstractions and perspectives. We never experience reality in total, the "real" reality we always experience it in abstractions.
@pyepye-io4vu
@pyepye-io4vu Ай бұрын
Well, that is a rather philosophical discussion. In the context of software, real / abstract has the "usual" meaning.
Bounded Contexts - Eric Evans - DDD Europe 2020
34:02
Domain-Driven Design Europe
Рет қаралды 79 М.
A Daily Practice of Empirical Software Design - Kent Beck - DDD Europe 2023
59:14
Domain-Driven Design Europe
Рет қаралды 35 М.
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 6 МЛН
ТВОИ РОДИТЕЛИ И ЧЕЛОВЕК ПАУК 😂#shorts
00:59
BATEK_OFFICIAL
Рет қаралды 6 МЛН
7 Years of Software Engineering Advice in 18 Minutes
18:32
Event Storming - Alberto Brandolini  - DDD Europe 2019
35:21
Domain-Driven Design Europe
Рет қаралды 85 М.
DDD and LLMs - Eric Evans - Explore DDD 2024
1:21:30
Explore DDD
Рет қаралды 4,6 М.
The Principles of Clean Architecture by Uncle Bob Martin
1:13:24
NorfolkDevelopers
Рет қаралды 574 М.
Сергей Баранов - Многоликий DDD
1:06:56
DotNext — конференция для .NET‑разработчиков
Рет қаралды 9 М.
Introduction to Context Mapping - Michael Plöd - DDD Europe 2022
59:15
Domain-Driven Design Europe
Рет қаралды 22 М.
"Uncle" Bob Martin - "The Future of Programming"
1:18:21
Paul Stringer's Mobile Tech
Рет қаралды 1,7 МЛН
Муж внезапно вернулся домой @Oscar_elteacher
00:43
История одного вокалиста
Рет қаралды 6 МЛН