کانال مکتب‌خانه DDD
659 subscribers
83 photos
1 video
4 files
156 links
کانال مکتب‌خانه DDD

اطلاع‌رسانی کارگاه‌ها، دوره‌ها و وبینارهای آموزشی
ارائه منابع و مطالب آموزشی

https://DomainDrivenDesign.ir

#Youtube Channel:
https://www.youtube.com/@Masoud.Bahrami

#Public Group:
https://t.iss.one/DomainDrivenDesignGroup

#DDD
Download Telegram
Forwarded from Masoud Bahrami
Language can and should play an important role in exploring and modeling a complex domain.


As you know, the greatest complexity of the vast majority of the software domain lies in the understanding of the domain itself. Every domain, simple or complex, is somehow expressed in formal or informal language by domain experts, product managers or software owners and developers. We must look for the drivers of our solution in the problem space. As mentioned earlier, the problem is expressed in formal or informal language.


So focus on the language of the domain to be modeled.

🌎 More information: https://LanguageDrivenDesign.Com


One of the most important activities in any language development is the wording or naming.

Why is naming so important?


Read this groundbreaking essay by Gottlob Frege - On Sense and Reference

https://www.slideshare.net/slideshow/on-sense-and-reference-52471284/52471284
Forwarded from Masoud Bahrami
https://www.youtube.com/watch?v=QCwqnjxqfmY

Design, Composition, and Performance

Watch this groundbreaking talk by Rich Hickey, the creator of Clojure and designer of Datomic, where he delves into the core principles of design and composition and their impact on the way we build software.

Intrigued? Here's why you should watch:

In the talk Rich delve into:

Design & Composition: This talk explores the fundamental building blocks of software development and how they influence our practices and tools.
2🙏1
📣 📢 چهارمین رویداد آنلاین DDD Plus
با موضوع، "چگونه تیم خوشحال(تری) داشته باشیم؟" این هفته جمعه از ساعت 18 الی 19 برگزار می‌شود.

زمان: جمعه 26 مرداد 1403
ساع: 18 الی 19

شما چه فکر می‌کنید؟ تعریف یک تیم خوشحال چیست؟ چه فاکتورهایی برای داشتن یک تیم خوشحال نیاز داریم؟ اصلا چه ترکیبی برای داشتن یک تیم خوشحال می‌توان متصور شد؟

توی این رویداد سعی می‌کنیم این سوالات رو به بحث و چالش بکشونیم.

📆 تاریخ: جمعه 26 مرداد 1403
ساعت: 18 الی 19

لینک ثبت‌نام در رویداد:
https://lu.ma/8rmq1sff
💡 چالش شماره 14 DDD Plus

چالش این شماره متفاوت‌تر از چالش‌های قبلی است. 5شنبه‌ی هفته گذشته در دورهمی اعضای تهران جاگ(Tehran JUG) حضور پیدا کردم. موضوع درهمی DDD بود. مسئله‌ای در باب استفاده از Value Object و تقدس و شرارت Value Objectمطرح شد. چالش این شماره همین موضوع بسیار متداول و کلاسیک در DDD را زیر ذره‌بین برده است.

🔴 پیش‌زمینه:
در این چالش، به دنیای واقعی یک سازمان که از DDD استفاده می‌کند، قدم می‌گذاریم. در یک گفت‌وگوی روزمره، پرسشی در مورد بهترین روش مدل‌سازی آدرس مشتری در یک سیستم سفارش‌گیری مطرح شده است. این سوال ساده، ما را به دنیای پیچیده و جذاب مدل‌سازی دامنه می‌برد.



🔴 سناریو:
تصور کنید شما یک متخصص DDD در شرکت DDD-To-The-Rescue.Com هستید. شما در حال طراحی یک سیستم سفارش‌گیری هستید که مشتریان می‌توانند چندین آدرس مختلف برای ارسال سفارشات خود ثبت کنند و هر سفارش نیز می‌تواند شامل محصولات مختلفی باشد.

شما در حال مدل کردن مسئله آدرس‌های مشتری برای یک سفارش هستید. مشتری چندین می‌تواند آدرس‌های متفاوتی داشته باشد. همچنین در یک سفارش محصولات مختلفی وجود دارد. شما از الگوهای تکنیکالDDD برای پیاده‌سازی محصول استفاده می‌کنید.

بین شما و سایر افراد این بحث پیش می‌آید که آدرس را Value Object در نظر بگیریم یا Object. آدرس‌ها را چطور؟ با توجه به این سناریو آشنا به سوالات زیر پاسخ دهید.


🔴 صورت مسئله:

با توجه به سناریو بالا به سوالات زیر پاسخ دهید:

🔶 آیا آدرس یک مشتری باید به عنوان یک Value Object (VO) یا Entity در نظر گرفته شود؟
🔶 بهترین روش برای مدل‌سازی چندین آدرس برای یک مشتری چیست؟ از VO یا Entity استفاده کنیم؟
🔶 تفاوت اساسی بین Value Object و Entity چیست و چرا این تفاوت در این سناریو مهم است؟
🔶 آیا واقعا تفاوت بین این دو مفهوم آنقدرها که فکر می‌کنیم اساسی و ضروری است؟
🔶 چگونه باید مشتری را مدل‌سازی کنیم؟
🔶 تاثیر انتخاب مدل مناسب برای آدرس‌ها بر نحوه ذخیره‌سازی و بازیابی اطلاعات چیست؟
🔶 چگونه باید آیتم‌های موجود در یک سفارش را مدل‌سازی کنیم؟

پیشنهاد می‌کنم چالش این هفته را بصورت کامل از لینک زیر مطالعه کنید:


لینک به چالش شماره 14: 👇

https://domaindrivendesign.ir/ddd-plus-14/

💬گروه بحث و تبادل نظر در مورد این چالش: 👇
https://t.iss.one/DomainDrivenDesignGroup

هشتگ‌:
#DDDP | #DDD_Plus | #dddp14

https://t.iss.one/DomainDrivenDesign_ir
📣 📢 اطلاعیه ثبت‌نام پنجمین رویداد آنلاین DDD Plus


📆 تاریخ: جمعه 2 شهریور 1403
ساعت: 18 الی 19

لینک ثبت‌نام در رویداد:
https://lu.ma/auaejvx8

https://t.iss.one/DomainDrivenDesignGroup
I wrote a new article on the importance of the language in DDD on the Substack

Domain-Driven Design: It's All About the Language


"The language of the domain is the key to understanding and communicating the domain model. It is the glue that binds the model to the software.”
—Eric Evans
One of the coolest things about Domain-Driven Design (DDD) is how much it focuses on language, especially the language we use to talk about the specific area we're working on. Unlike other design methods that focus more on general ideas and concepts, DDD dives deeper. It's really important in DDD to choose the right words and phrases to describe what's happening in our domain. The goal is to create a simple and clear language that accurately captures the problems we're trying to solve and the solutions we're building.


Read the article: 👇

https://masoudbahrami.substack.com/p/domain-driven-design-its-all-about


Subscribe to my substrack's newsletter: 👇
Subscribe
1
Forwarded from Masoud Bahrami
In DDD, the language we use acts like a bridge between the experts' knowledge and the actual code we write. It guides us throughout the entire development process, from the beginning to the end.


https://lnkd.in/d_tbfqMg
Forwarded from Masoud Bahrami
AI and product management | Marily Nika (Meta, Google)

In this episode of Lenny's podcast, Lenny talks to Marily(a computer scientist and an AI Product Leader currently working for Meta’s reality labs) about one of the hottest topics these days. How can AI impact the software development journey and is it essential for a PM?

Marily is a computer scientist and an AI Product Leader currently working for Meta’s reality labs, and previously at Google for 8 years. In 2014 she completed a PhD in Machine Learning. She is also an Executive Fellow at Harvard Business School and she has taught numerous courses, actively teaching AI Product Management on Maven and at Harvard. Marily joins us in today's episode to shed light on the role of AI in product management.

She shares her insights on how AI is empowering her work, and why she believes that every Product Manager will be an AI Product Manager in the future. We also discuss why PM’s should learn a bit of coding, where they can learn it, and best practices for working with data scientists. Marily shares some insight into building her AI Product Management course and also why she full-heartedly believes you should also create your own course.

Listen to the podcast: 👇
https://www.youtube.com/watch?v=qNPPoj1qUG0
👍1😁1
Inside GPT – Large Language Models Demystified
by Alan Smith at NDC Oslo 2024

پردازش زبان طبیعی با استفاده از الگوریتم‌های GPT یک حوزه در حال تکامل سریع است که فرصت‌ها و چالش‌های بسیاری را برای توسعه‌دهندگان ارائه می‌دهد. اما GPT چیست و چگونه کار می‌کند؟ چگونه می‌توانید از آخرین پیشرفت‌ها در الگوریتم‌های GPT برای ایجاد برنامه‌های جذاب و مفید استفاده کنید؟ آیا کسب‌وکار من می‌تواند از ایجاد یک ربات چت مبتنی بر GPT بهره‌مند شود؟

توی این سخنرانی، آلن به بررسی عمیق معماری الگوریتم‌های GPT و عملکرد داخلی ChatGPT پرداخته. او به بررسی مفاهیم بنیادی پردازش زبان طبیعی مانند جاسازی کلمات(word embedding)، برداری‌سازی و توکنی‌سازی(vectorization and tokenization) پرداخته است. سپس او نشان داد که چگونه می‌توانید از این تکنیک‌ها برای آموزش یک مدل GPT2 استفاده کنید که می‌تواند متن آهنگ تولید کند و نشان دهد که توالی کلمات چگونه پیش‌بینی می‌شوند.

آلن توی بخش دیگری از از سخنرانی‌اش به مدل‌های زبانی بزرگتر مانند ChatGPT و GPT4 پرداخت و قدرت، قابلیت‌ها و محدودیت‌های آن‌ها را نشان داد. استفاده از هایپرپارامترهایی مانند دما و جریمه فرکانس توضیح داده شده و تأثیر آن‌ها بر خروجی تولید شده نشان داده شد. سپس او مفاهیم prompt engineering را پوشش داد و نشان داد که چگونه Retrieval Augmented Generation (RAG) می‌توانند برای ایجاد یک تجربه ChatGPT بر اساس داده‌های متنی خود استفاده شوند.


https://www.youtube.com/watch?v=P2cTtiirPnU
👍21
The language of the domain is a fundamental aspect of software design. By using a shared language, creating accurate models, and improving code readability, developers can build software that is more effective, maintainable, and adaptable to change.

@DomainDrivenDesign_ir
1
Forwarded from Masoud Bahrami
Metaphors in Domain-Driven Design: A Double-Edged Sword

In the book "Metaphors We Live By" by George Lakoff and Mark Johnson, a metaphor is defined as a conceptual mapping between two domains of experience. This means that we often understand one concept in terms of another, even if they are not literally related.

For example, we might understand time as a "resource" or "commodity" because we map it onto our experiences with physical resources.

From software development perspective, these days metaphors, are powerful tools in storytelling and communication, have found their way into software development. They can provide a common language and mental model for understanding complex domains. These inherent use cases or feature of metaphors make them a great tools for modelling and designing complex domains using DDD approach. But their use also comes with potential pitfalls.


https://masoudbahrami.medium.com/metaphors-in-domain-driven-design-a-double-edged-sword-cb628835862e
کانال مکتب‌خانه DDD
📣 اطلاع رسانی دومین جلسه آنلاین DDD Plus جلسه دوم DDD Plus این هفته جمعه از ساعت ۱۸:۰۰ الی ۱۹:۰۰ برگزار خواهد شد. توی این جلسات آنلاین، در مورد چالش‌های مطرح شده تحت عنوان DDD Plus با همدیگر به بحث و تبادل نظر می‌پردازیم و سعی می‌کنیم از همدیگر یاد بگیریم.…
🎬 ویدئوی رویداد دوم DDD Plus

با سلام خدمت همه‌ی عزیزان گرامی

ویدئوی دومین رویداد DDD Plus منتشر شد. شما می‌توانید از طریق لینک زیر به ویدئو دسترسی پیدا کنید:

https://youtu.be/m9Oi3s-uxmU


جزپیات بیشتر این رویداد را از لینک زیر دنبال کنید:
https://domaindrivendesign.ir/ddd-plus-02-video/



ما را دنبال کنید:

💬 گروه بحث و تبادل نظر:
https://t.iss.one/DomainDrivenDesignGroup

💬 کانال مکتب‌خانه DDD:
https://t.iss.one/DomainDrivenDesign_ir
🎥کانال یوتیوب:
https://www.youtube.com/@Masoud.Bahrami


#DDDP | #DDD_Plus2 #DDDP2
🙏63
اطلاعیه ثبت‌نام رویداد حضوری DDD Plus
☕️ سلام به همه‌ی دوستان و عزیزان گرامی!

📣 خیلی خوشحالم که می‌تونم خبر برگزاری اولین دورهمی حضوری DDD Plus رو بهتون بدم. بعد از برگزاری چند رویداد آنلاین، چه فرصت خوبی برای اینکه همدیگه رو از نزدیک ببینیم و از تجربیات هم استفاده کنیم.

همینطور حسابی خورسند و خوشنودیم که هنوز بهونه‌ای داریم که توی این روزهای سخت و خسته و کسل کننده و پر از خبرهای بد، بتونیم با خوشحالی لحظاتی رو دور همدیگه جمع باشیم و از همدیگه یاد بگیرم. خیلی خوشحالتر هستیم که DDD Plus این بهونه رو برای ما فراهم کنه.

تا حالا پنج تا دورهمی آنلاین برگزار کردیم و امیدواریم که براتون مفید بوده باشن. حالا می‌خوایم اولین دورهمی‌ حضوری DDD Plus رو برگزار کنیم.

امیدوارم این رویداد حضوری فرصتی رو فراهم کنه که بتونیم همدیگه رو ببینیم، از همدیگه یاد بگیریم، با همدیگه آشنا بشیم یا تجدید دیدار مجددی کنیم. ☕️🥮



برای اطلاعات بیشتر و ثبت‌نام به این لینک‌ها سر بزن:

https://evand.com/events/رویداد-حضوری-ddd-plus
https://domaindrivendesign.ir/ddd-plus-in-person-event-01/
منتظرتون هستیم!
2👍1
Forwarded from Masoud Bahrami
Media is too big
VIEW IN TELEGRAM
🪕🎼🧑‍💻بداهه‌نوازی و TDD: رقصی از خلاقیت و ساختار

اگرچه بداهه‌نوازی موسیقی ایرانی و طراحی پدیدار(emergent design) به روش TDDدر ظاهر دو حوزه کاملا متفاوت به نظر می‌رسند؛ یکی هنر اصیل و دیگری روشی مهندسی در توسعه نرم‌افزار. اما با کمی دقت می‌توانیم شباهت‌هایی شگفتی بین این دو مفهوم پیدا کنیم. هر دو فرایند، ریشه در خلاقیت، انعطاف‌پذیری و تکرار دارند

در بداهه‌نوازی، نوازنده بدون داشتن یک پارتیتوراز پیش تعیین‌شده،با تکیه بر دانش موسیقیاییش و الهام در لحظه قطعه‌ای را خلق می‌کند-در لحظه. در بداهه‌نوازی موسیقی سنتی معمولا شروع مشخص است. مثلا "درآمد راست پنجگاه". نقطه پایانی و مقصد هم معمولا مشخص است. مثلا پایان مسیر به "نغمه اصفهان" خواهیم رسید. اما مسیر، در لحظه خلق میشود. هر نت نواخته شده، بر نت بعدی تأثیر می‌گذارد و قطعه را به سمت یک کل منسجم سوق می‌دهد.


در TDD نیز، فرد با نوشتن اولین تست، هدفی مشخص برای خود تعیین میکند. سپس با نوشتن کمترین کد ممکن برای پاس کردنش، به تدریج ویژگی‌های نرم‌افزار را می‌سازد. هر تست، کد را به سمت هدف نهایی سوق می‌دهد.
8👍1
📢چالش شماره 15 DDD Plus

🔵 پیش‌زمینه:
در این چالش، به دنیای پیچیده مدیریت پروژه‌ها قدم می‌گذاریم. در یک سیستم مدیریت پروژه، اجزای مختلفی مانند پروژه، وظیفه، تیم، کاربر، و منابع وجود دارد. هر کدام از این اجزا می‌توانند به صورت جداگانه مدل‌سازی شوند، اما تعیین مرزهای Aggregate‌ها در این سیستم می‌تواند چالش‌برانگیز باشد، به خصوص زمانی که پروژه‌ها پیچیده و دارای وابستگی‌های متعدد باشند.

🔴 سناریو:
شما در حال پیاده‌سازی و طراحی یک سیستم مدیریت پروژه در شرکت AgileTaskManager.Muck هستید. در این سیستم، پروژه‌ها به وظایف کوچکتر تقسیم می‌شوند و هر وظیفه می‌تواند توسط یک یا چند عضو تیم انجام شود. هر وظیفه دارای تاریخ شروع و پایان، وضعیت (در حال انجام، تکمیل شده، لغو شده)، و وابستگی به وظایف دیگر است. همچنین، پروژه‌ها دارای بودجه، منابع و تاریخ تحویل هستند.

صورت مسئله:
با توجه به سناریو بالا به سوالات زیر پاسخ دهید:
🔶اگریگیت پروژه: آیا پروژه یک Aggregate است؟ اگر بله، مرزهای آن کجا قرار می‌گیرد؟ آیا وظایف، تیم، و منابع بخشی از این Aggregate هستند یا Aggregate‌های جداگانه‌ای هستند؟
🔶 اگریگیت وظیفه(Task): آیا وظیفه یک Aggregate است؟ یا یک Entity برای پروژه؟ وابستگی‌های بین وظایف چگونه مدل‌سازی می‌شوند؟
🔶وظایفی که مربوط به چند پروژه هستند: چگونه وظایفی مثل برنامه‌ریزی‌های استراتژیک که مربوط به چند پروژه هستند را مدلسازی می‌کنید؟
🔶وابستگی‌های بین اگریگیت ها: چگونه وابستگی‌های بین Aggregate‌های مختلف (مثلاً بین پروژه و وظیفه، یا بین وظیفه و منابع) مدل‌سازی می‌شود؟
🔶 تغییرات در پروژه: چگونه تغییرات در یک پروژه (مثلاً تغییر در تاریخ تحویل، اضافه شدن یک وظیفه جدید) بر Aggregate‌های دیگر تأثیر می‌گذارد؟
🔶 عملکرد: چگونه می‌توانیم از نظر عملکرد، اندازه بهینه برای Aggregate‌ها را تعیین کنیم؟
🔶قوانین کسب‌وکار: چه قوانین کسب‌وکاری در این سیستم وجود دارد که بر مرزهای Aggregate‌ها تأثیر می‌گذارد؟ مثلاً، آیا یک وظیفه می‌تواند توسط بیش از یک تیم انجام شود؟ آیا یک منبع می‌تواند به چندین پروژه اختصاص داده شود؟

چالش را بصورت کامل در زیر می‌توانید مشاهده و دنبال کنید:


لینک به چالش شماره 15: 👇

https://domaindrivendesign.ir/ddd-plus-15/

💬گروه بحث و تبادل نظر در مورد این چالش: 👇
https://t.iss.one/DomainDrivenDesignGroup

هشتگ‌:
#DDDP | #DDD_Plus | #dddp15

https://t.iss.one/DomainDrivenDesign_ir
👍31
Large-Scale Architecture - Randy Shoup - Explore DDD 2024


Building distributed systems that work is hard. And scaling those systems by multiple orders of magnitude is even harder. Using examples from internet-scale consumer properties like Google, Amazon, and eBay, this talk deep-dives into the counterintuitive idea that the key to success in large-scale architecture is simplicity.

Randy Shoup first discuss simple components like modular services, orthogonal domain logic, and service layering. Next he discuss simple interactions between components, leveraging event-driven models, immutable logs, and asynchronous dataflow. Then Randy explore techniques that simplify making changes the system, including incremental changes, continuous testing, canary deployments, and feature flags.

In the final part of the talk, Randy Shoup shows how all these ideas work together with specific architectural examples from Amazon, Netflix, and Walmart.


🔴 Watch the talk: https://www.youtube.com/watch?v=rO00-4gH3SI
How AI is Changing Coding and Education

Stanford Webinar - Andrew Ng & Mehran Sahami

This engaging fireside chat brings together two leading Stanford experts, Andrew Ng and Mehran Sahami, for an illuminating conversation on how AI is reshaping both coding and education. Their thought-provoking insights reveal the transformative impact of AI on the future of technology and learning.

From the rich history of these disciplines to the latest breakthroughs fueled by generative AI, they offer sharp insights into what’s coming next in technology and learning, and how it will reshape the world around us.


🔴 How generative AI is empowering faster development for experienced developers while simplifying coding for novices, making advanced software creation more accessible.

🔴 Why learning to code and use generative AI will become vital for professionals across various fields, not just software engineers
How educational institutions are integrating generative AI tools into computer science curricula to ensure students are proficient with these emerging technologies from the outset.

🔴 The importance of equipping students to recognize the broader societal implications of the technologies they develop by embedding considerations of fairness, privacy, and decision-making into technical courses.



Watch the webinar 👇

https://www.youtube.com/watch?v=J91_npj0Nfw
2