شما به ما بگید:
برای رویدادهای آنلاین “نقطه” چه روز و تایمی رو مناسبتر میدونید؟
در حال حاضر سهشنبههای اول و آخر هر ماه ساعت ۱۹ الی ۲۰:۳۰ این رویدادها برگزار میشود. سهشنبه آخر ماه بحث گروهی است!
برای رویدادهای آنلاین “نقطه” چه روز و تایمی رو مناسبتر میدونید؟
در حال حاضر سهشنبههای اول و آخر هر ماه ساعت ۱۹ الی ۲۰:۳۰ این رویدادها برگزار میشود. سهشنبه آخر ماه بحث گروهی است!
Anonymous Poll
30%
سهشنبهها ساعت ۱۹ الی ۲۰:۳۰
27%
پنجشنبهها ساعت ۱۶ یا ۱۷ شروع بشه
13%
جمعهها ساعت ۱۶ یا ۱۷ برگزار بشه
17%
روزهای کاری ساعت ۱۸ یا ۱۹ باشه،
10%
آنلاین رو دوستندارم، حضوری کوچیک و جمعوجور برگزار بشه
3%
نظرم متفاوت باید بنویسم(پس توی کامنت لطفا بنویس :))
🔵 Clean Code Mastery – Advanced Software Craftsmanship Workshop
در سالهای اخیر، بسیاری از تیمها با رشد پروژه و اضافهشدن فیچرها، بهجای سرعت بیشتر، با کدهای سنگین، سختخوان، پر از بدهی فنی و توسعهپذیری پایین روبهرو شدهاند. از Refactorهای پرهزینه گرفته تا باگهایی که در سادهترین تغییرات ظهور میکنند.
تقریباً تمام تیمها در نقطهای از مسیر توسعه، با یک حقیقت تلخ روبهرو میشوند:
مشکل اصلی، زبان برنامهنویسی یا تکنولوژیها نیست، کیفیت کدی است که هر روز تولید میشود. حتی در حضور و ظهور AI.
⚪️ ویژگیهای کلیدی دوره:
🔹آموزش عملی Clean Code، Refactoring، Design Principles و معماری تمیز
🔹تمرینهای واقعی روی کدهای Legacy
🔹شناسایی و حذف Code Smellها در پروژههای واقعی
🔹کارگروهی، Code Review، PR Workflow و تحلیل مشکلات واقعی تیمها
🔹آشنایی با معماریهای Clean/Hexagonal و رویکرد DDD در سطح کاربردی
🔹یادگیری TDD، Unit/Integration Testing و طراحی Evolvable Code
📅ساختار دوره:
۵ جلسه تخصصی × ۴ ساعت
یک جلسهٔ Hands-on عملی + Q&A
برای جزئیات کامل و ثبتنام:
🔗domaindrivendesign.ir
در سالهای اخیر، بسیاری از تیمها با رشد پروژه و اضافهشدن فیچرها، بهجای سرعت بیشتر، با کدهای سنگین، سختخوان، پر از بدهی فنی و توسعهپذیری پایین روبهرو شدهاند. از Refactorهای پرهزینه گرفته تا باگهایی که در سادهترین تغییرات ظهور میکنند.
تقریباً تمام تیمها در نقطهای از مسیر توسعه، با یک حقیقت تلخ روبهرو میشوند:
مشکل اصلی، زبان برنامهنویسی یا تکنولوژیها نیست، کیفیت کدی است که هر روز تولید میشود. حتی در حضور و ظهور AI.
⚪️ ویژگیهای کلیدی دوره:
🔹آموزش عملی Clean Code، Refactoring، Design Principles و معماری تمیز
🔹تمرینهای واقعی روی کدهای Legacy
🔹شناسایی و حذف Code Smellها در پروژههای واقعی
🔹کارگروهی، Code Review، PR Workflow و تحلیل مشکلات واقعی تیمها
🔹آشنایی با معماریهای Clean/Hexagonal و رویکرد DDD در سطح کاربردی
🔹یادگیری TDD، Unit/Integration Testing و طراحی Evolvable Code
📅ساختار دوره:
۵ جلسه تخصصی × ۴ ساعت
یک جلسهٔ Hands-on عملی + Q&A
برای جزئیات کامل و ثبتنام:
🔗domaindrivendesign.ir
🌟 رویداد پنجم نقطه:
شفافیت در کار تیمی: چطور بگوییم چه میخواهیم؟
نقطه به ایستگاه ششم خود (ایندکس پنجم!) رسید.
در این جلسه گفتوگو محور، با هم دربارهی روشهای شفاف بیان کردن خواستهها و بهبود همکاری در تیمها حرف میزنیم. فرصتی است برای تجربه، یادگیری و شنیدن دیدگاههای مختلف.
گاهی در هیاهوی زندگی و روزمرگیهای کاری، حرفهایمان در ذهنمان گم میشوند. بیایید لحظهای توقف کنیم، گوش دهیم و با هم همکلام شویم؛ دور از شلوغیها و دغدغههای روزانه، فرصتی برای تبادل نظر و اشتراک تجربههایمان با یکدیگر.
🗓 تاریخ: سهشنبه، 25 آذر ۱۴۰۴
🕖 زمان: ۱۹:۰۰ – ۲۰:۳۰
💻 مکان: آنلاین(لینک رویداد برای افراد بعدا ارسال خواهد شد)
🔗 ثبتنام: https://luma.com/kkyijah7
شفافیت در کار تیمی: چطور بگوییم چه میخواهیم؟
نقطه به ایستگاه ششم خود (ایندکس پنجم!) رسید.
در این جلسه گفتوگو محور، با هم دربارهی روشهای شفاف بیان کردن خواستهها و بهبود همکاری در تیمها حرف میزنیم. فرصتی است برای تجربه، یادگیری و شنیدن دیدگاههای مختلف.
گاهی در هیاهوی زندگی و روزمرگیهای کاری، حرفهایمان در ذهنمان گم میشوند. بیایید لحظهای توقف کنیم، گوش دهیم و با هم همکلام شویم؛ دور از شلوغیها و دغدغههای روزانه، فرصتی برای تبادل نظر و اشتراک تجربههایمان با یکدیگر.
🗓 تاریخ: سهشنبه، 25 آذر ۱۴۰۴
🕖 زمان: ۱۹:۰۰ – ۲۰:۳۰
💻 مکان: آنلاین(لینک رویداد برای افراد بعدا ارسال خواهد شد)
🔗 ثبتنام: https://luma.com/kkyijah7
❤1
کانال مکتبخانه DDD
🌟 رویداد پنجم نقطه: شفافیت در کار تیمی: چطور بگوییم چه میخواهیم؟ نقطه به ایستگاه ششم خود (ایندکس پنجم!) رسید. در این جلسه گفتوگو محور، با هم دربارهی روشهای شفاف بیان کردن خواستهها و بهبود همکاری در تیمها حرف میزنیم. فرصتی است برای تجربه، یادگیری و…
سلام به همگی👋
برنامه در حال شروع هست
برنامه در حال شروع هست
کانال مکتبخانه DDD
🌟 رویداد پنجم نقطه: شفافیت در کار تیمی: چطور بگوییم چه میخواهیم؟ نقطه به ایستگاه ششم خود (ایندکس پنجم!) رسید. در این جلسه گفتوگو محور، با هم دربارهی روشهای شفاف بیان کردن خواستهها و بهبود همکاری در تیمها حرف میزنیم. فرصتی است برای تجربه، یادگیری و…
خیلی خیلی ممنون و سپاسگزارم از همه بچه هایی که اومدن و نظراتشون رو شیر کردند. خیلی جلسه خوبی بود. میطلبه یه جلسه دیگه رو هم کمی مشخصتر باز به همین موضوع بپردازیم
❤4👌1
🍉🍉پیشنهاد ویژه یلدا | ۳۰٪ تخفیف برای دورههای پیشرفته مهندسی نرمافزار
به مناسبت یلدا، فرصتی برای تمرکز بر توسعه مهارتهای حرفهای و تقویت بنیانهای مهندسی نرمافزار فراهم شده است.
در همین راستا، برای مدت محدود ۳۰٪ تخفیف برای دو دورهی تخصصی زیر در نظر گرفتهایم:
🔵 Clean Code Mastery
دورهای عملی برای توسعهدهندگانی که میخواهند کدهای تمیز، قابلنگهداری و توسعهپذیر بنویسند.
تمرکز دوره بر Clean Code، Refactoring حرفهای، Design Principles، Testing و معماری تمیز در پروژههای واقعی است.
🟣 Enterprise Integration Patterns – Advanced Architectural Workshop
ویژهی معماران و توسعهدهندگان سیستمهای توزیعشده، با تمرکز بر
Event-Driven Architecture، Messaging، Saga، Integration Strategy و طراحی ارتباط بین سرویسها در مقیاس Enterprise.
این تخفیف مناسب افرادی است که به یادگیری عمیق، تصمیمهای مهندسی پایدار و رشد بلندمدت حرفهای اهمیت میدهند.
📅 ظرفیت دورهها محدود است
🔗 اطلاعات بیشتر و ثبتنام:
domaindrivendesign.ir
به مناسبت یلدا، فرصتی برای تمرکز بر توسعه مهارتهای حرفهای و تقویت بنیانهای مهندسی نرمافزار فراهم شده است.
در همین راستا، برای مدت محدود ۳۰٪ تخفیف برای دو دورهی تخصصی زیر در نظر گرفتهایم:
🔵 Clean Code Mastery
دورهای عملی برای توسعهدهندگانی که میخواهند کدهای تمیز، قابلنگهداری و توسعهپذیر بنویسند.
تمرکز دوره بر Clean Code، Refactoring حرفهای، Design Principles، Testing و معماری تمیز در پروژههای واقعی است.
🟣 Enterprise Integration Patterns – Advanced Architectural Workshop
ویژهی معماران و توسعهدهندگان سیستمهای توزیعشده، با تمرکز بر
Event-Driven Architecture، Messaging، Saga، Integration Strategy و طراحی ارتباط بین سرویسها در مقیاس Enterprise.
این تخفیف مناسب افرادی است که به یادگیری عمیق، تصمیمهای مهندسی پایدار و رشد بلندمدت حرفهای اهمیت میدهند.
📅 ظرفیت دورهها محدود است
🔗 اطلاعات بیشتر و ثبتنام:
domaindrivendesign.ir
❤2
🍉✨ شب یلداتون مبارک ✨🍉
صحبتِ حُکام، ظلمتِ شبِ یلداست
نور ز خورشید جوی، بو که برآید
امشب،
شبِ موندنِ نور در دلِ تاریکیه
شبِ قصه، انار،
و صبری که به صبح ختم میشه.
امید که این شب بلند،
با دلهای روشن،
خندههای گرم
و امید به فردایی روشنتر
به خیر و خوشی بگذره 🌱
یلداتون پر از مهر و روزهاتون کوتاه از غم 🍀
مکتبخانه DDD
https://news.1rj.ru/str/DomainDrivenDesign_ir
صحبتِ حُکام، ظلمتِ شبِ یلداست
نور ز خورشید جوی، بو که برآید
امشب،
شبِ موندنِ نور در دلِ تاریکیه
شبِ قصه، انار،
و صبری که به صبح ختم میشه.
امید که این شب بلند،
با دلهای روشن،
خندههای گرم
و امید به فردایی روشنتر
به خیر و خوشی بگذره 🌱
یلداتون پر از مهر و روزهاتون کوتاه از غم 🍀
مکتبخانه DDD
https://news.1rj.ru/str/DomainDrivenDesign_ir
❤3
Forwarded from Masoud Bahrami Channel
آقای حمید مدنی از مدیرای فنی اسنپفود توی این پست بحث جالبی رو مطرح کرد که بد ندیدم من هم تجربهای از جنس نقاط کور عملیاتی این بحث بگم، هدفم نقد یا رد مدل ایشون نیست، مزایاش رو اشاره کردن من هم یکم صحبت از جنس نقاط کور تجربه شده و خونده شده اینجا مطرح میکنم و راهحلی که رفتیم رو هم اشاره میکنم آخر این پست، امیدوارم مفید واقع بشه
ما هم چند سال پیش در یکی از پروژهها دنبال ساختن چارچوبی مشابه بودیم؛ مدلی که تیمها بدون قضاوت بتونن بفهمن سرویسشون دقیقاً کجاست و چه چیزهایی باید بهبود پیدا کنه. تا حدی هم موفق بود، اما تجربهی اجرا نکات جالبی داشت
سختترین و دارکترین بخش همین context-aware تصمیمگیری بود، نه لزوما تعریف متریکها برای حرکت سرویسها توی لایههای مدل(اولش فکر میکردیم سخترینش تعریف و اعمال و پیادهسازی متریکهاست بعد دیدم واقعا سادهتر از چیزی که فکرش رو میکردیم و چالش اصلی جای دیگه است) بلکه فهمیدن و وزندهی نقش واقعی هر سرویس توی بیزنس بخصوص برای کسبوکاری که دائما در حال تغییر و رفع باگ و افزودن فیچر جدید. اما context-aware کردن کل مدل، اونقدر پیچیده و nuanced بود که گاهی کل فرآیند رو فلج میکرد
خواسته یا ناخواسته توی اسکیل بزرگ ابزارها بهمرور نقش کریتیکالی پیدا میکنند بدون اینکه کسی از قبل براشون نقشهای چیده باشه و رفتار واقعی سیستم همونی که باید سنجیده بشه، لابهلای بالا و پایین شدن سرویسها توی مدل گم میشد. اوبر هم تجربهای زیسته از همین جنس داشت به اسم Service Maturity Index
یه چالش دیگه که ما مستقیم کمتر باهاش درگیر شدیم ولی تو اسکیل بالا ناگزیره، نرخ sampling واسه سنجش صحت و سلامت هر سرویس برای تصمیمگیری دادهمحوره. سرویسهای rate بالا، دیتای زیادی تولید میکنن و پرفورمنس توشون حیاتیه برا همین sampling میره روی عددایی مثل ۰.۰۰۱٪. بر اساس دیتای ذخیرهشده همهچیز خوبه، اما در عمل لزوماً اینطور نیست. اینجا باید مراقب بود که آمار تبدیل به فکت نشن
توی Software Engineering at Google هم به تجربه مشابهی اشاره شده که آخرش میگه بلوغهای اینجوری چون جنسشون استانداردسازیه و استانداردسازی یعنی محدودیت (و برای بعضیها اجبار)، بهتره بر اساس outcomeها مثل کاهش MTTR سنجیده بشه که کار سختیه واقعا!
مارتین فاولر هم یه نوشته کوتاه داره به اسم The Maturity Model Fallacyکه میگه مدلها اگر از کمک به گام بعدی تبدیل بشن به رتبهبندی ضد خودشون عمل میکنن.
چالش دیگه توی تجربه من، فشار وحشتناک روی زیرساخت و ops بودش و خب بالاخره این فشار خودش رو توی قالب تجربه و بد اسملهای دیگه خودش رو نشون میده و میزنه بیرون. در حالی که تیم dev یا وقت نمیکرد توازن بین خروجی بیزنس و متریکها رو تنظیم کنه یا چند سرویس به ارث رسیده بهش بود، یا اصلا سرویسهای بیصاحب بودن :) که کسی از وجودشون خبر نداشت! context-aware نبودن اینجا هم دردسر میساخت. بعدا فهیمیدم اسپاتیفای مدل جالبی رو پیش گرفته برای این سناریوها به اسم اسپاتیفای رویکرد golden paths
🔵 اما چه کردیم ما؟
حالا کاری که ما کردیم مدل رو از سطحدادن خام به سرویسها بردیم سمت دستهبندی بر اساس ماهیت کسبوکاری و تاثیرشون روی زنده موندن بیزنس. متریکها میانگین میگرفتن و اسکور هر چند وقت تکرار میشد. چون سرویسی مثل notification بعد ۶ ماه با رشد بیزنس، criticalityش عوض میشه. اینطوری سرویسها نیازمندی ops خودشون رو مشخص میکردن و از نگاه یکسان به همه خارج میشدیم، بدون اینکه سطح پایین یعنی کمکاری تیم باشه. خیلی مختصر و کوتاه بخوام بگم:
🔹معیارهای امتیازدهی ما
برای هر سرویس، این بُعدها رو امتیاز میدادیم (ترکیب بیزنسی + فنی + سازمانی):
1- حیاتی بودن بیزنسی: core مثل پرداخت/جستجو/قیمتگذاری/کد تخفیف/پیشنهاد محصول یا حاشیهای! وزنشون توی revenue/user journey چقدره
2- حجم/نوع ترافیک: read-heavy/mixed، latency-sensitive؟ downtime چقدر UX رو میزنه؟
3- موقعیت در dependency graph: failureش چند سرویس دیگه رو میندازه؟ golden path کاربر ازش رد میشه؟
4- همخوانی استک: مثلا با talent سازمان مچ میشه؟ learning curve/bus factor چقدر ریسکیه؟ تکنولوژی یه زبونی نباشه که هیشکی توی سازمان بلدش نیست، علیرغم اینکه خیلی هم تکنولوژی یا زبان برنامه نویسی خوبی هم براش انتخاب شده
5- مالکیت تیمی: تیم مشخص/توانمند داره یا ارثیه/بیصاحب؟😁 incidentش چند تیم رو درگیر میکنه؟ شعاع تاثیرش یا radius effectاش چقدر.
6- فرآیند dev: deploy frequency/rollback readiness، وابستگی به افراد کلیدی، end-to-end ownership؟
و نهایتا کنار اینها یا بهتره بگم بر اساس اینها MTTD/MTTR، deploy failure rate، alert quality، observability رو اضافه میکردیم. ترکیبشون نشون میداد کجا ارزش داره سرمایهگذار (ن)کنیم
ما هم چند سال پیش در یکی از پروژهها دنبال ساختن چارچوبی مشابه بودیم؛ مدلی که تیمها بدون قضاوت بتونن بفهمن سرویسشون دقیقاً کجاست و چه چیزهایی باید بهبود پیدا کنه. تا حدی هم موفق بود، اما تجربهی اجرا نکات جالبی داشت
سختترین و دارکترین بخش همین context-aware تصمیمگیری بود، نه لزوما تعریف متریکها برای حرکت سرویسها توی لایههای مدل(اولش فکر میکردیم سخترینش تعریف و اعمال و پیادهسازی متریکهاست بعد دیدم واقعا سادهتر از چیزی که فکرش رو میکردیم و چالش اصلی جای دیگه است) بلکه فهمیدن و وزندهی نقش واقعی هر سرویس توی بیزنس بخصوص برای کسبوکاری که دائما در حال تغییر و رفع باگ و افزودن فیچر جدید. اما context-aware کردن کل مدل، اونقدر پیچیده و nuanced بود که گاهی کل فرآیند رو فلج میکرد
خواسته یا ناخواسته توی اسکیل بزرگ ابزارها بهمرور نقش کریتیکالی پیدا میکنند بدون اینکه کسی از قبل براشون نقشهای چیده باشه و رفتار واقعی سیستم همونی که باید سنجیده بشه، لابهلای بالا و پایین شدن سرویسها توی مدل گم میشد. اوبر هم تجربهای زیسته از همین جنس داشت به اسم Service Maturity Index
یه چالش دیگه که ما مستقیم کمتر باهاش درگیر شدیم ولی تو اسکیل بالا ناگزیره، نرخ sampling واسه سنجش صحت و سلامت هر سرویس برای تصمیمگیری دادهمحوره. سرویسهای rate بالا، دیتای زیادی تولید میکنن و پرفورمنس توشون حیاتیه برا همین sampling میره روی عددایی مثل ۰.۰۰۱٪. بر اساس دیتای ذخیرهشده همهچیز خوبه، اما در عمل لزوماً اینطور نیست. اینجا باید مراقب بود که آمار تبدیل به فکت نشن
توی Software Engineering at Google هم به تجربه مشابهی اشاره شده که آخرش میگه بلوغهای اینجوری چون جنسشون استانداردسازیه و استانداردسازی یعنی محدودیت (و برای بعضیها اجبار)، بهتره بر اساس outcomeها مثل کاهش MTTR سنجیده بشه که کار سختیه واقعا!
مارتین فاولر هم یه نوشته کوتاه داره به اسم The Maturity Model Fallacyکه میگه مدلها اگر از کمک به گام بعدی تبدیل بشن به رتبهبندی ضد خودشون عمل میکنن.
چالش دیگه توی تجربه من، فشار وحشتناک روی زیرساخت و ops بودش و خب بالاخره این فشار خودش رو توی قالب تجربه و بد اسملهای دیگه خودش رو نشون میده و میزنه بیرون. در حالی که تیم dev یا وقت نمیکرد توازن بین خروجی بیزنس و متریکها رو تنظیم کنه یا چند سرویس به ارث رسیده بهش بود، یا اصلا سرویسهای بیصاحب بودن :) که کسی از وجودشون خبر نداشت! context-aware نبودن اینجا هم دردسر میساخت. بعدا فهیمیدم اسپاتیفای مدل جالبی رو پیش گرفته برای این سناریوها به اسم اسپاتیفای رویکرد golden paths
🔵 اما چه کردیم ما؟
حالا کاری که ما کردیم مدل رو از سطحدادن خام به سرویسها بردیم سمت دستهبندی بر اساس ماهیت کسبوکاری و تاثیرشون روی زنده موندن بیزنس. متریکها میانگین میگرفتن و اسکور هر چند وقت تکرار میشد. چون سرویسی مثل notification بعد ۶ ماه با رشد بیزنس، criticalityش عوض میشه. اینطوری سرویسها نیازمندی ops خودشون رو مشخص میکردن و از نگاه یکسان به همه خارج میشدیم، بدون اینکه سطح پایین یعنی کمکاری تیم باشه. خیلی مختصر و کوتاه بخوام بگم:
🔹معیارهای امتیازدهی ما
برای هر سرویس، این بُعدها رو امتیاز میدادیم (ترکیب بیزنسی + فنی + سازمانی):
1- حیاتی بودن بیزنسی: core مثل پرداخت/جستجو/قیمتگذاری/کد تخفیف/پیشنهاد محصول یا حاشیهای! وزنشون توی revenue/user journey چقدره
2- حجم/نوع ترافیک: read-heavy/mixed، latency-sensitive؟ downtime چقدر UX رو میزنه؟
3- موقعیت در dependency graph: failureش چند سرویس دیگه رو میندازه؟ golden path کاربر ازش رد میشه؟
4- همخوانی استک: مثلا با talent سازمان مچ میشه؟ learning curve/bus factor چقدر ریسکیه؟ تکنولوژی یه زبونی نباشه که هیشکی توی سازمان بلدش نیست، علیرغم اینکه خیلی هم تکنولوژی یا زبان برنامه نویسی خوبی هم براش انتخاب شده
5- مالکیت تیمی: تیم مشخص/توانمند داره یا ارثیه/بیصاحب؟😁 incidentش چند تیم رو درگیر میکنه؟ شعاع تاثیرش یا radius effectاش چقدر.
6- فرآیند dev: deploy frequency/rollback readiness، وابستگی به افراد کلیدی، end-to-end ownership؟
و نهایتا کنار اینها یا بهتره بگم بر اساس اینها MTTD/MTTR، deploy failure rate، alert quality، observability رو اضافه میکردیم. ترکیبشون نشون میداد کجا ارزش داره سرمایهگذار (ن)کنیم
Linkedin
#اسنپفود #کیفیت #techleadership #snappfood #sre #engineeringculture #servicematurity #devops #snappfood #engineering #growth #maturitymodel…
از گنجشک تا سیمرغ: چگونه کیفیت نرمافزار را در #اسنپفود اندازه میگیریم؟
در سازمانهای بزرگ، بزرگترین دشمن #کیفیت، "کد بد" نیست؛ بلکه "عدم شفافیت" است. وقتی نمیدانیم کدام سرویس در چه وضعیتی است، تیمها به جای نوآوری، تبدیل به آتشنشانهایی میشوند که مدام…
در سازمانهای بزرگ، بزرگترین دشمن #کیفیت، "کد بد" نیست؛ بلکه "عدم شفافیت" است. وقتی نمیدانیم کدام سرویس در چه وضعیتی است، تیمها به جای نوآوری، تبدیل به آتشنشانهایی میشوند که مدام…
❤1
Forwarded from Masoud Bahrami Channel
معرفی الگوی طراحی نرمافزار Behavior as Data
توی تجربه طراحی دومینهای پیچیده بارها شاهد این موضوع بودم و باهاش دست و پنجه نرم کردم که تغییر کوچیکی در فیلدی به ظاهر خیلی ساده یا حتی افزودن و جابجایی مقادیر یک enum رفتار و منطق گسترهی خیلی زیادی از سیستم شامل تست و کدها رو تحت تاثیر خودش قرار داده.
جهت حل مشکل بالا، من الگوی طراحی Behavior as Data رو معرفی کردم که کمک میکنه بتونیم بر همچین سناریوهایی غلبه کنیم.
این الگو بصورت کلی به ما این امکان رو میده که متوجه بشیم چه موقع یک فیلد ساده یا مقادیر یک enum بهتره تبدیل بشن به یک مدل مشخص دیتایی و رفتاری.
توی مقاله یکسری هیوریستیک و نشانه که به توسعهدهنده و افراد محصولی کمک میکنه به این موضوع پی ببرند به همراه مثالهای واقعی ارایه شده
https://www.linkedin.com/pulse/introducing-behavior-data-pattern-masoud-bahrami-qc2cf
توی تجربه طراحی دومینهای پیچیده بارها شاهد این موضوع بودم و باهاش دست و پنجه نرم کردم که تغییر کوچیکی در فیلدی به ظاهر خیلی ساده یا حتی افزودن و جابجایی مقادیر یک enum رفتار و منطق گسترهی خیلی زیادی از سیستم شامل تست و کدها رو تحت تاثیر خودش قرار داده.
جهت حل مشکل بالا، من الگوی طراحی Behavior as Data رو معرفی کردم که کمک میکنه بتونیم بر همچین سناریوهایی غلبه کنیم.
این الگو بصورت کلی به ما این امکان رو میده که متوجه بشیم چه موقع یک فیلد ساده یا مقادیر یک enum بهتره تبدیل بشن به یک مدل مشخص دیتایی و رفتاری.
توی مقاله یکسری هیوریستیک و نشانه که به توسعهدهنده و افراد محصولی کمک میکنه به این موضوع پی ببرند به همراه مثالهای واقعی ارایه شده
https://www.linkedin.com/pulse/introducing-behavior-data-pattern-masoud-bahrami-qc2cf
Linkedin
Introducing Behavior as Data Pattern
When Data Becomes Behavior In my experience designing complex software systems, I frequently encountered challenges where changing a simple field value affected the overall behavior and logic of an object or module. Initially, these designs were data-driven…
❤1