Amir Mokarchi
Amir Mokarchi
خواندن ۲ دقیقه·۴ ماه پیش

درباره Problem Space و Solution Space

این دو نظریه‌ که توسط "Allen Newell" و "Herbert Simon" در کتاب Human Problem Solving مطرح شده است. اساساً، بیان میکند که ما آدم‌ها برای حل مسائل، در یک فضای خاص به نام "Problem Space" به دنبال راه‌حل می‌گردیم.

در "Problem Space" حالت اولیه (Initial State) و حالت مطلوب یا نهایی (Desired State) یک مسأله را تعریف میکنیم. همچنین حالت‌های میانی (Intermediate States)، محدودیت‌ها (Constraints) از جمله قوانینی است که به نوعی زمینه مسأله رو مشخص می‌کند.

در صنعت نرم‌افزار، افرادی که بیشتر در "Problem Space" فعالیت می‌کنند، معمولاً مشتری‌ها (Customers) و کاربران (Users) هستند. "Solution Space" اساساً همان مسیری است که از وضعیت اولیه تا وضعیت نهایی و همه جزئیات مربوط به راه‌حل را شامل میشود.

هر مسأله واقعی نیاز به راه‌حل دارد، و اگر درست درProblem Space جستجو کنیم، می‌توانیم بفهمیم که چه گام‌هایی باید برداریم. نمونه زیر مثال روشنی از این موضوع است.

داستان کلاسیک نوشتن در فضا. در دهه ۱۹۶۰ کشورهایی که دنبال اکتشافات فضایی بودند فهمیدند که خودکار معمولی در فضا کار نمی‌کند چون جاذبه وجود ندارد. ظاهراً ناسا یک میلیون دلار خرج کرد تا خودکاری طراحی کند که در فضا کار کند، اما شوروی‌ها از مداد استفاده کردند که تقریباً هیچ هزینه ای نداشت.

اما واقعیت ماجرا چیست!!!

این داستان یک افسانه‌ست. ناسا هم مداد رو امتحان کرد ولی به خاطر مشکلاتی مثل تولید گرد و غبار ریز (Microdust)، شکستن نوک‌ها و قابلیت اشتعال چوب مداد، کنار گذاشته شد. در نهایت، یک شرکت خصوصی به اسم "Fisher" خودکاری به نام "Space Pen" طراحی کرد که بعد از آزمایش، هم ناسا و هم شوروی از آن استفاده کردند. قیمت برای هر خودکار هم فقط ۲.۳۹ دلار بود.

پس مشکل از مداد بود؟ مشکل پیچیده‌تر از چیزی بود که در نگاه اول به نظر می‌رسید. اینجا محدودیت‌های اضافی یا به اصطلاح نیازمندی‌های غیرعملکردی (Non-Functional Requirements) و دقیق‌تر بیان کنم، نیازمندی‌های عملیاتی (Operational Requirements)، کار راسخت‌تر کرده بود.

وقتی سریع به راه‌حل فکر می‌کنی، مغز دیگر روی خود مشکل متمرکز نمی‌شود. مثلاً "Bart Barthelemy" و "Candace Dalmagne-Rouge" در مقاله‌ای که در مجله Harvard Business Review منتشر شد بیان میکنند که وقتی به نوآوری فکر می‌کنید، باید از اینکه سریع دنبال راه‌حل بروید، خودداری کنید.

چون، وقتی به اولین راه‌حلی که به ذهن می‌رسه فکر می‌کنید، شروع می‌کنید به گسترش جزئیات همون راه‌حل و به جای حل مسأله، روی ایده‌ای که به نظرت خوبه کار می‌کنید. ممکنه این ایده اصلاً بهترین راه‌حل نباشه.


رویکرد Exploratory Approach

در این رویکرد، همیشه باید به دنبال ایده‌های دیگر هم بگردیم به جای اینکه فقط ایده اولیه رو بهتر کنیم باید چندین گزینه دیگر رو نیز آزمایش کنیم. این ممکنه سخت‌تر باشه ولی معمولاً جواب دقیق‌تر و ارزشمندتری میده.

dddتوسعه نرم افزار
A software engineer
شاید از این پست‌ها خوشتان بیاید