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.
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
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
SlideShare
On Sense and Reference
This document discusses the difference between sense and reference in language as introduced by philosopher Gottlob Frege. Frege was interested in differentiating between the terms "sense" and "reference" based on the observation that people continued to…
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…
https://www.youtube.com/watch?v=sDlFaOn71n8
This is a video lecture about Frege's groundbreaking 1892 paper 'On Sense and Reference', which is sometimes translated from the original German as 'On Meaning and Nominatum' though those are silly and obscure terms, so I don't use them.
YouTube
Gottlob Frege - On Sense and Reference
I am writing a book! If you want to know when it is ready (and maybe win a free copy), submit your email on my website: https://www.jeffreykaplan.org/
I won’t spam you or share your email address with anyone.
The compositionality of language: https://y…
I won’t spam you or share your email address with anyone.
The compositionality of language: https://y…
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.
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.
YouTube
"Design, Composition, and Performance" by Rich Hickey (2013)
Rich Hickey explores the nature of design and composition and how it impacts the software development practice and tools.
Rich Hickey, the author of Clojure and designer of Datomic, is a software developer with over 25 years of experience in various domains.…
Rich Hickey, the author of Clojure and designer of Datomic, is a software developer with over 25 years of experience in various domains.…
❤2🙏1
📣 📢 چهارمین رویداد آنلاین DDD Plus
با موضوع، "چگونه تیم خوشحال(تری) داشته باشیم؟" این هفته جمعه از ساعت 18 الی 19 برگزار میشود.
زمان: جمعه 26 مرداد 1403
ساع: 18 الی 19
شما چه فکر میکنید؟ تعریف یک تیم خوشحال چیست؟ چه فاکتورهایی برای داشتن یک تیم خوشحال نیاز داریم؟ اصلا چه ترکیبی برای داشتن یک تیم خوشحال میتوان متصور شد؟
توی این رویداد سعی میکنیم این سوالات رو به بحث و چالش بکشونیم.
📆 تاریخ: جمعه 26 مرداد 1403
⏰ ساعت: 18 الی 19
لینک ثبتنام در رویداد:
https://lu.ma/8rmq1sff
با موضوع، "چگونه تیم خوشحال(تری) داشته باشیم؟" این هفته جمعه از ساعت 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
چالش این شماره متفاوتتر از چالشهای قبلی است. 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
📆 تاریخ: جمعه 2 شهریور 1403
⏰ ساعت: 18 الی 19
لینک ثبتنام در رویداد:
https://lu.ma/auaejvx8
https://t.iss.one/DomainDrivenDesignGroup
lu.ma
DDD Plus #5 · Luma
In the fifth DDD Plus online meetup , we will examine the challenge raised here:
https://domaindrivendesign.ir/ddd-plus-4/
https://domaindrivendesign.ir/ddd-plus-4/
این هفته چالش مطرح شده در لینک زیر را بررسی خواهیم کرد:
https://domaindrivendesign.ir/ddd-plus-4/
https://domaindrivendesign.ir/ddd-plus-4/
مکتبخانه DDD
DDD Plus 4 | مکتبخانه DDD
در چالش شماره 4 DDD Plus سناریوی متداول کال کردن و چتینگ سرویسهای خارجی در کانتسکت DDD رو زیر ذرهبین بردیم. چگونه از leak شدن language سرویسهای مختلف به یکدیگر میتواند مراقبت و جلوگیری کرد ...
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
Read the article: 👇
https://masoudbahrami.substack.com/p/domain-driven-design-its-all-about
Subscribe to my substrack's newsletter: 👇
Subscribe
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.”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.
—Eric Evans
Read the article: 👇
https://masoudbahrami.substack.com/p/domain-driven-design-its-all-about
Subscribe to my substrack's newsletter: 👇
Subscribe
Masoud’s 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.
❤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
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?
Listen to the podcast: 👇
https://www.youtube.com/watch?v=qNPPoj1qUG0
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
YouTube
AI and product management | Marily Nika (Meta, Google)
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…
👍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
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
YouTube
Inside GPT – Large Language Models Demystified - Alan Smith - NDC Oslo 2024
This talk was recorded at NDC Oslo in Oslo, Norway. #ndcoslo #ndcconferences #developer #softwaredeveloper
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndcoslo.com/
Subscribe to our YouTube channel and learn every day:…
Attend the next NDC conference near you:
https://ndcconferences.com
https://ndcoslo.com/
Subscribe to our YouTube channel and learn every day:…
👍2❤1
Subscribe to Masoud's Newsletter on LinkedIn to learn practical tips for building better software, from modeling and designing to testing and team collaboration.
https://www.linkedin.com/newsletters/masoud-s-newsletter-7234498523524734976
https://www.linkedin.com/newsletters/masoud-s-newsletter-7234498523524734976
Linkedin
Masoud's Newsletter | LinkedIn
Masoud Bahrami | Learn practical tips for building better software, from modeling and designing to testing and team collaboration.
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
@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
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
Medium
Metaphors in Domain-Driven Design: A Double-Edged Sword
part one
کانال مکتبخانه 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
با سلام خدمت همهی عزیزان گرامی
ویدئوی دومین رویداد 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
YouTube
جلسه دوم DDD Plus - آنلاین
مدلسازی دنیای واقعی در نرمافزار، چالش بزرگ توسعهدهندگان! در جلسه دوم رویداد DDD Plus، به بررسی چالشهای مدلسازی مفاهیم مشترک بین چندین Bounded Context پرداختیم.
چرا مدلسازی مفاهیم مشترک مهم است؟
چه مشکلاتی ممکن است در این مسیر با آن روبرو شویم؟
بهترین…
چرا مدلسازی مفاهیم مشترک مهم است؟
چه مشکلاتی ممکن است در این مسیر با آن روبرو شویم؟
بهترین…
🙏6❤3
اطلاعیه ثبتنام رویداد حضوری DDD Plus
☕️ سلام به همهی دوستان و عزیزان گرامی!
📣 خیلی خوشحالم که میتونم خبر برگزاری اولین دورهمی حضوری DDD Plus رو بهتون بدم. بعد از برگزاری چند رویداد آنلاین، چه فرصت خوبی برای اینکه همدیگه رو از نزدیک ببینیم و از تجربیات هم استفاده کنیم.
همینطور حسابی خورسند و خوشنودیم که هنوز بهونهای داریم که توی این روزهای سخت و خسته و کسل کننده و پر از خبرهای بد، بتونیم با خوشحالی لحظاتی رو دور همدیگه جمع باشیم و از همدیگه یاد بگیرم. خیلی خوشحالتر هستیم که DDD Plus این بهونه رو برای ما فراهم کنه.
تا حالا پنج تا دورهمی آنلاین برگزار کردیم و امیدواریم که براتون مفید بوده باشن. حالا میخوایم اولین دورهمی حضوری DDD Plus رو برگزار کنیم.
امیدوارم این رویداد حضوری فرصتی رو فراهم کنه که بتونیم همدیگه رو ببینیم، از همدیگه یاد بگیریم، با همدیگه آشنا بشیم یا تجدید دیدار مجددی کنیم. ☕️🥮
برای اطلاعات بیشتر و ثبتنام به این لینکها سر بزن:
https://evand.com/events/رویداد-حضوری-ddd-plus
https://domaindrivendesign.ir/ddd-plus-in-person-event-01/
منتظرتون هستیم!
☕️ سلام به همهی دوستان و عزیزان گرامی!
📣 خیلی خوشحالم که میتونم خبر برگزاری اولین دورهمی حضوری 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 نیز، فرد با نوشتن اولین تست، هدفی مشخص برای خود تعیین میکند. سپس با نوشتن کمترین کد ممکن برای پاس کردنش، به تدریج ویژگیهای نرمافزار را میسازد. هر تست، کد را به سمت هدف نهایی سوق میدهد.
اگرچه بداههنوازی موسیقی ایرانی و طراحی پدیدار(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
🔵 پیشزمینه:
در این چالش، به دنیای پیچیده مدیریت پروژهها قدم میگذاریم. در یک سیستم مدیریت پروژه، اجزای مختلفی مانند پروژه، وظیفه، تیم، کاربر، و منابع وجود دارد. هر کدام از این اجزا میتوانند به صورت جداگانه مدلسازی شوند، اما تعیین مرزهای 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
مکتبخانه DDD
چالش پانزدهم DDD Plus | مکتبخانه DDD
جهت مشاهدهی چالش هفتهی قبل اینجا کلیک کنید. پیشزمینه: در این چالش، به دنیای پیچیده مدیریت پروژهها قدم میگذاریم. در یک سیستم مدیریت پروژه، اجزای مختلفی مانند پروژه، وظیفه، تیم، کاربر، و منابع وجود دارد. هر کدام از این اجزا میتوانند به صورت جداگانه مدلسازی…
👍3❤1
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
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
YouTube
Large-Scale Architecture - Randy Shoup - Explore DDD 2024
Explore DDD 2024 - Denver, March 12-15
https://exploreddd.com | https://www.linkedin.com/company/exploreddd | https://twitter.com/ExploreDDD
Organized and sponsored by Virtual Genius (https://virtualgenius.com)
Building distributed systems that work is…
https://exploreddd.com | https://www.linkedin.com/company/exploreddd | https://twitter.com/ExploreDDD
Organized and sponsored by Virtual Genius (https://virtualgenius.com)
Building distributed systems that work is…
Why You’re Always Distracted - 5 Mistakes Ruining Your Focus
by Ali Abdaal
1- Not Having a Plan
2- Ignoring How you Feel
3- You're Switching Between Too Many Tasks
4- You're Not Taking Breaks
5- You're Not Hitting the Golden Trio
https://www.youtube.com/watch?v=5Rqiba5mqLk
by Ali Abdaal
1- Not Having a Plan
2- Ignoring How you Feel
3- You're Switching Between Too Many Tasks
4- You're Not Taking Breaks
5- You're Not Hitting the Golden Trio
https://www.youtube.com/watch?v=5Rqiba5mqLk
YouTube
Why You’re Always Distracted - 5 Mistakes Ruining Your Focus
#AD Supercharge your content with AI here: https://clickhubspot.com/e0n
MY PRODUCTIVITY APPS
👻 VoicePal: AI Writing App (iOS/Android) - Download for Free → https://go.aliabdaal.com/voicepal/ytd
MY BOOK
📕 My New York Times bestselling book Feel-Good Productivity…
MY PRODUCTIVITY APPS
👻 VoicePal: AI Writing App (iOS/Android) - Download for Free → https://go.aliabdaal.com/voicepal/ytd
MY BOOK
📕 My New York Times bestselling book Feel-Good Productivity…
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
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
YouTube
Stanford Webinar - How AI is Changing Coding and Education, Andrew Ng & Mehran Sahami
For more information about Stanford's Artificial Intelligence programs visit: https://stanford.io/ai
This engaging fireside chat brings together two leading Stanford experts, Andrew Ng and Mehran Sahami, for an illuminating conversation on how AI is reshaping…
This engaging fireside chat brings together two leading Stanford experts, Andrew Ng and Mehran Sahami, for an illuminating conversation on how AI is reshaping…
❤2