Domain-Driven Design Made Me Realize Something About AI Tools

preview_player
Показать описание

In this video, I explore domain-driven design from a philosophical angle, sharing surprising insights I've gained. It's a bit different from my usual content, but I think you'll find it interesting. Let me know what you think in the comments!

🔖 Chapters:
0:00 Intro
0:45 Understanding Domain-Driven Design
2:18 Couple model and implementation
3:50 Cultivate a language based on the model
5:43 Develop a knowledge-rich model
6:46 Distilling the model
7:40 Brainstorm and experiment
9:17 Domain model vs code
13:25 Final thoughts

#arjancodes #softwaredesign #python
Рекомендации по теме
Комментарии
Автор

This book was actually very helpful to me. I worked on a chemical process control system ~7 years ago, and I decided to follow the DDD philsophy, because it felt like a natural fit to what I was working on. It turns out that the software came out remarkably robust, and the code is almost self-documenting. The price I had to pay was that I had all sorts of little Value Object classes, as well as the other DDD infrastructure, which made the codebase that much denser. I do feel, however, that this was a small price to pay when compared to what came out! I'd also recommend the book "Implementing Domain Driven Design" by Vaughn Vernon, in case anyone's interested in a more "hands-on" type of book.

marcioneto
Автор

Excellent video. More of this, please. As someone who is a business analyst who occasionally codes rather than a professional developer, the idea of developing and expressing a domain model is core to the way I feel software development should be done. Gherkin (for BDD) as a way to express detailed requirements in non-technical language is a step in the right direction, but I wonder whether there's some sort of "domain-driven design" expression language that can bridge the gap between project sponsors and developers. If not, we need one.

jdray
Автор

Probably the single biggest influence on my career since I was first introduced to it in 2002. I've since had a hand in building robust and long-lived systems at every company I've worked for since. Robust and long-lived because by recognizing real world ontological meaning and adopting precise semantics means that your solutions can only evolve subject to real-world constraints rather than merely software artifacts, which leads to brittleness.

AshtonThorogood
Автор

I recently found your channel and have fallen in love with your teaching style. I'm a self-taught machine learning researcher (physicist by training) and have felt pretty insecure about my software development skills. You are really helping me to level up and enjoy the process - thank you!

This video really hit the spot. Machine learning at its core is representation learning - ML models learn representations of domains such that they can accurately represent the relationships between data within that domain. In that sense, as an ML Engineer I am the meta-domain model learner :D I learn the domain within which the domain learner operates. It's a fractal ecosystem of learning! ... I need to go to bed lol

jakevikoren
Автор

i really enjoyed learning from you. im not a developer but im in sort of a business analysis team. so i need to know more of these fundamentals and reasons behind a method or approach. thank you for sharing your knowledge and please continue to create similar content.

sajjadeskandari
Автор

Your point about how we worry about the details of the code is what I think about most when pontificating on AI. While I don't trust OpenAI to create my code for me, I love how much easier it is using Github Copilot. Adding log commands, doc strings, etc. don't interrupt my flow. It handles the part of programming that has always just been out of reach of automating away. Thus, I'm freed up to focus on the big picture.

andrewb
Автор

I loved the video, these discussions are needed more often. One can forget sometimes that the tools we build are for other humans and as such they need to satisfy a requirement instead of focusing on picking the right tool (which is important, but not the most important in the exploration/experimentation fase)

ruiztulio
Автор

@ArjanCodes I recently came the same realization recently, when I was building an api that is integrated with LLM, domain driven design coupled with event driven patterns such as CQRS and event sourcing is the foundation for advance RAG and monitoring for that fast feedback loop.. I am currently exploring this.. we are aligned so far

Saiyugi
Автор

I regularly work with DDD concepts to build and release software for my clients. This is a great video and touches on topics key to building great software. Too often, people try to over complicate what is essentially "how we are going to logically bound our work" and fail to realize the value in strong communications. Thank you for the video!

Wahlnetwork
Автор

14:38 I think Domain model better our understanding of what and to whom and why we build something we build. Code is how we build it. I think the view code is an expression of domain model is very apt. It also nicely give a reason to follow agile and early prototyping process. If code is an expression then design patterns is the grammer of writing it. Overall a fantastic summarisation. Thank you

gkvadrevu
Автор

Awesome video! Thank you so much. A minor thing that would have made me enjoy it even more -- I found how loud the music was to be a little distracting in the intro section, no idea if that's just a me thing, but yet again you present really interesting and complex concepts in a clear and compelling way!

holographictheory
Автор

You should also read "The Lean Startup" by Eric Ries if you haven't already. It presents similar ideas but from the perspective of building a business. It's all about failing early and iterating quickly to understand the shape of the Domain Model you're working on.

AlanJames
Автор

This video is a game changer. I am able to view code in a different way and i am going to iterate more on the DDD journey to make me better at idea realization and code optimization

latteindigo
Автор

I work in the safety-critical embedded world, which means I use C for the project and Python for the tools. Most programmers can make a C program that works, but few can write it in a way that is (1) easy for the reader to understand and (2) hard to mis-use. As I learn Nim, I'm finding that Nim's cleaner and more expressive syntax and strong static typing are exactly what is needed to craft code that meets those two criteria. My next step in learning is figuring out how to arrange a project or library in a way that screams its design. So the DDD book is on my TODO list.

dwhall
Автор

This reminds me of the Top Down vs Bottom Up strategies. Very important reminder that the top down viewpoint starts this far outside of the code itself.

micahpezdirtz
Автор

I've been hoping you'd do a series on Domain-Driven Design for a long time! I'm working through the book myself at the moment and it is dense, so I would love to hear your thoughts and breakdowns of relevant concepts.

AnOmegastick
Автор

I really like your broad approach on software development ! Finally doing some sort of abstraction away from the pure programming will help to improve the communication to your customer. So: Thank you for that ! Saying that: Sometimes I struggle with some idea I implemented as a "proof of concept" which then evolves over time. And at a certain point in time I wish I had done some more abstract reserach like you described it in here (domain model). But that's something which might not happen that hard in the future - assuming an inclining learning curve ... 😉

dragonfly-
Автор

I would like to see a FastAPI & SQLAlchemy project implementation according to DDD design principles.

Antonio-ibii
Автор

Great timing. My dad is a software dev and just last week I found this book in his library.

demolazer
Автор

Thank you @ArjanCodes, this, by chance helped me get a hold on what I needed to focus on my system design. More specifically what would add value when deciding on a software development methodology.

MariusCristianCapatina
join shbcf.ru