C#/.NET Developer
آموزش Domain Driven Design، فرایند تصمیم گیری و سوگیری ها
مغز انسان، حجم فراوانی از دیتا را در هر ثانیه پردازش می کند. ما بسیاری از اعمال را بر پایه غریزه و عادت و به طور اصطلاحا auto pilot انجام می دهیم. سایر نواحی فعالیت های مغزی، شامل تفکر، یادگیری و تصمیم گیری می شود. این رخداد ها در مقایسه با auto pilot، به طرز قابل توجهی آهسته تر انجام می شوند و به انرژی بسیار بیشتری نسبت به عملکردهای اتوماتیک انسان نیاز دارند.
تئوری فرایند دوگانه در روانشناسی تخمین می زند که این نوع از فعالیت های مغزی کاملا متفاوت پردازش می شوند و دو پروسه متفاوت برای این دو نوع از تفکر وجود دارد. یکی از آنها مخفی است. اتوماتیک و فرایندی ناخودآگاه است. و دیگری پروسه تفکر آگاهانه و خودآگاه است. تفکر ناخوداگاه در طول زمان شکل میگیرد و تغییر آنها بسیار سخت است. چرا که تغییر آن نیازمند توسعه و کار بر روی یک عادت جدید است که کار سهلی نیست. در مقابل، تفکر خودآگاه، می تواند توسط علت یابی های منطقی یا دانش، جایگزین شود و تغییر کند.
هر دو این فرایند یا سیستم ها خوشبختانه در یک مغز وجود دارند، اما نحوه عملکرد آنها متفاوت است. تفکر ناخودآگاه را System 1 و خودآگاه را System 2 نیز می گویند:
اما همه اینها چه ارتباطی با DDD دارند؟ نکته مهم در اینجا، چگونگی تصمیم گیری توسط ماست. به طور علمی اثبات شده است که همه انسان ها دارای سوگیری شناختی هستند. بعنوان برنامه نویس، ما راههای خودمان را برای رفع مشکل های فنی داریم و آماده برای کد زدن در زمانی هستیم که چالش های مختلف در بیزینس یک پروژه برای ما بوجود می آید. اما از طرف دیگر، مشتریان ما نیز دارای سوگیری هستند. آنها احتمالا قبلا بدون نرم افزار ما نیز در حال کسب درآمد بوده اند یا ممکن است با استفاده از نرم افزارهای قدیمی 20 سال پیش نیز کار خود را پیش برده باشند. بنابراین ممکن است آنها فقط بدنبال یک روش مدرن یا ابری برای همان مساله باشند که قبلا حل کرده اند.
نکته ای که قصد رسیدن به آن را دارم این است که ما باید تلاش کنیم سوگیری های ذهنی خود را تا حد ممکن کاهش دهیم و با ذهنی بازتر به آن چیزی که مشتری نیاز دارد توجه کنیم و در تله سوگیری های خودمان نیافتیم. همین، دلیلی است که گوگل کارگاهی با عنوان سوگیری ناخودآگاه برای کارکنان خود ایجاد می کند تا به تیم خود در آگاه شدن از سوگیری ها و کمک به رفع آن یاری برساند.
مدل پیچیدگی Cynefin ما را مجاب می کند که حداقل پیچیدگی هایی که در فضای مساله (و بعضی اوقات در فضای راه حل) وجود دارد را دسته بندی کنیم. اما برای انتخاب دسته بندی مناسب، باید تصمیم گیری های زیادی انجام دهیم که معمولا از ذهن ناخودآگاه و بر اساس سوگیری های شخصی و تجارب گذشته خودمان انجام می شود، بجای اینکه توسط ذهن خودآگاه بوسیله تفکر و منطق شکل بگیرد. شاید همه ما کسانی را بشناسیم که حتی قبل از اینکه مشکل را کامل مطرح کنیم، با گفتن آره، این که انجامش راحته واکنش نشان می دهند.
سوگیری های شناختی نقش اساسی اینجا ایفا می کند. برخی از آنها تاثیر عمیقی روی تصمیم گیری ما می گذارد و قطعا در نتیجه تفکر سیستم 1 است. در زیر برخی از سوگیری ها و سرنخ هایی وجود دارد که می تواند در تفکر شما در طراحی سیستم اثرگذار باشد:
- سوگیری حامی انتخاب: وقتی انتخابی انجام می دهید، حس مثبتی نسبت به آن انتخاب دارید، حتی اگر به شما اثبات شود که این انتخاب نقص های فراوانی دارد. معمولا این حالت در زمان ساخت اولین مدل ایجاد می شود و شخص سعی می کند به هر قیمتی به ادامه آن پافشاری کند، حتی با وجود اینکه ممکن است شواهدی مبنی بر عدم بهینگی این مدل وجود داشته باشد. این سوگیری مثلا زمانی که در حال انتخاب یک دیتابیس یا فریمورک هستید نیز می تواند رخ دهد.
- سوگیری تاییدی: تقریبا شبیه سوگیری قبلی است. این سوگیری باعث می شود فقط صحبت ها و مشورت هایی که همسو با انتخاب شما است را بشنوید و به مشورت های مخالف یا متضاد بی اعتنایی کنید. حتی اگر به خود شما هم اثبات شود که این مشورت ها صحیح هستند!
- اثر واگن-باند: وقتی اکثریت حاضر در اتاق روی چیزی توافق کنند، آن چیز شروع به منطقی بودن می کند! بدون درگیر کردن سیستم 2، نظر جمع؛ بدون حتی هیچ دلیل منطقی، اعتبار بیشتری دارد. به یاد داشته باشید که نظر جمع الزاما نظر صحیح نیست!
- اعتماد به سقف!: زیاد پیش می آید که افراد تمایل به مثبت نگری افراطی نسبت به قابلیت های خودشان داشته باشند. در این صورت ممکن است تصمیم گیری های نادرستی اتخاذ شود که تنها بدلیل نظر خودشان گرفته شده است. یک مثال بارز این سوگیری، فرایند تخمین است. افراد معمولا زمان کمتری را نسبت به واقعیت تا زمان بیشتر برای انجام یک کار تخمین می زنند.
- دسترسی اکتشافی: اطلاعاتی که ما داریم، الزاما تمام اطلاعات مورد نیاز برای حل یک مساله نیست. افراد تمایل دارند فقط بر اساس اطلاعاتی که دارند، تصمیم اتخاذ نمایند. بدون اینکه در صدد دریافت جزئیات بیشتر در مورد آن مساله باشند. معمولا این سوگیری باعث ساده سازی بیش از حد مساله در دامین شده و در نتیجه تخمین کمتری نسبت به پیچیدگی های ضروری واقعی اتخاذ می گردد. همچنین باعث می شود مثلا یک تکنولوژی برای مساله انتخاب شود، فقط به استناد اینکه همیشه این روش کار کرده است.
در نهایت، با این که کار آسانی نیست، همیشه تلاش کنید تا از ذهن خودآگاه (سیستم 2) برای اتخاذ تصمیمات خود استفاده کنید.
مطلبی دیگر از این انتشارات
آموزش Domain Driven Design. پیچیدگی ها
مطلبی دیگر از این انتشارات
آموزش Domain Driven Design - دانایی در برابر جهالت!
مطلبی دیگر از این انتشارات
آموزش DDD- مثال- زبان دامنه برای تبلیغات طبقه بندی شده