فاز 14 · درس 49

نگاشت فرضیات و حل پرریسک‌ترین آن‌ها در گام نخست

نوع
مفهومی و ساختنی
زمان
حدود 65 دقیقه
زبان‌ها
Python (stdlib)
یک نقشه‌ی ناوبری با سنجاق‌های خطر روی نقاط ناشناخته در کنار یک ذره‌بین و قطب‌نما روی میز چوبی مهندسی
فهرست مطالب
  1. اهداف یادگیری
  2. هر فرآیند ساختی نوعی شرط‌بندی است
  3. دسته‌بندی فرضیات
  4. ریسک یک عدد تک‌بُعدی نیست
  5. آزمایش طراحی کنید، نه مناسک تأیید خود
  6. برگشت‌پذیری ترتیب کارها را تغییر می‌دهد
  7. ساخت آن
  8. تمرین‌ها
  9. مطالعه‌ی بیشتر
  10. چیزی که پیش خود نگه می‌دارید

بسیاری از تیم‌های نرم‌افزاری ماه‌ها وقت صرف توسعه‌ی قابلیت‌هایی می‌کنند که در نقشه‌ی راه تعریف شده‌اند، غافل از این‌که کل این مسیر بر پایه‌ی حدس‌ها و پیش‌فرض‌های اثبات‌نشده ساخته شده است. وقتی محصولی شکست می‌خورد، معمولاً ایراد از کیفیت کدنویسی نیست؛ بلکه فرضیه‌ای درباره‌ی رفتار کاربر، نیاز واقعی یا ایمنی سیستم نادرست بوده است.

نگاشت فرضیات (Assumption mapping) ابزاری است که مجهولات پنهان پشت هر تسک فنی را آشکار می‌کند. این متدولوژی به شما کمک می‌کند پیش از دست‌به‌کد شدن برای پیاده‌سازی‌های سنگین و پرهزینه، متوجه شوید چه شرایطی حتماً باید برقرار باشند تا محصول اصلاً ارزش ساختن داشته باشد.

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

نقشه‌ی راه (Roadmap) عدم قطعیت را پشت قابلیت‌ها پنهان می‌کند. در مقابل، نقشه‌ی فرضیات (Assumption map) نشان می‌دهد چه چیزهایی باید درست باشند تا اصلاً ساخت آن قابلیت‌ها توجیه داشته باشد.

اهداف یادگیری

  • تبدیل کارهای پیشنهادی به فرضیات صریح و شفاف.
  • امتیازدهی جداگانه به اثرگذاری، عدم قطعیت و برگشت‌ناپذیری.
  • انتخاب آزمایش بعدی بر اساس ریسک، نه اشتیاق تیم.
  • جایگزینی فرضیات سنجیده‌شده با شواهد (Evidence) و تصمیم‌ها.

هر فرآیند ساختی نوعی شرط‌بندی است

ابزاری برای مدیریت رخدادها (Incidents) ممکن است به درست بودن تمام گزاره‌های زیر وابسته باشد:

  • زمینه‌ی هشدار (Alert context) اطلاعات کافی برای شناسایی سرویس را داشته باشد؛
  • مهندسان به پیشنهادی که خودشان به آن نرسیده‌اند اعتماد کنند؛
  • زمان پاسخ مطلوب، از نظر عملیاتی واقعاً مهم باشد؛
  • بتوان به داده‌های موردنیاز بدون دسترسی‌های ناامن رسید؛
  • این گردش کار آن‌قدر تکرار شود که هزینه‌ی نگهداری ابزار توجیه داشته باشد.

هیچ‌کدام از این موارد، تسک‌های پیاده‌سازی نیستند؛ بلکه شرایطی هستند تا ساخت محصول ارزشمند، کاربردی، شدنی و ایمن باشد.

دسته‌بندی فرضیات

دسته پرسش
ارزش (Value) آیا دستاورد نهایی به اندازه‌ی کافی اهمیت خواهد داشت؟
کاربردپذیری (Usability) آیا کاربر می‌تواند آن را بفهمد و بر اساسش اقدام کند؟
امکان‌پذیری (Feasibility) آیا سیستم می‌تواند با داده‌ها و محدودیت‌های فعلی، این خروجی را تولید کند؟
پایداری (Viability) آیا سازمان توان تأمین هزینه‌ها، مالکیت و نگهداری عملیاتی آن را دارد؟
ایمنی (Safety) در صورت خرابی، آیا پیامدها در محدوده‌ی پذیرفتنی می‌مانند؟

فرضیات را به‌شکل گزاره‌های ابطال‌پذیر بنویسید. «این قابلیت مفید است» قابل‌آزمایش نیست؛ اما گزاره‌ی «8 نفر از 10 مهندس آن‌کال (On-call) با دیدن نتیجه‌ی فقط‌خواندنی (Read-only)، سرویس درست را سریع‌تر شناسایی می‌کنند» آزمون‌پذیر است.

ریسک یک عدد تک‌بُعدی نیست

در این کارگاه از سه بُعد با بازه‌ی 1 تا 5 استفاده می‌کنیم:

  • اثرگذاری (Impact): خسارت ناشی از نادرست بودن فرضیه.
  • عدم قطعیت (Uncertainty): ضعف شواهد فعلی.
  • برگشت‌ناپذیری (Irreversibility): هزینه‌ی پی بردن به اشتباه پس از commit کردن.

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

تأیید می‌کندرد می‌کندفرض‌هاامتیازدهی به ریسکبالاترین ریسک بازارزان‌ترین آزمایش تعیین‌کنندهشواهدساخت محدودبازتعریف یا توقف

آزمایش طراحی کنید، نه مناسک تأیید خود

یک آزمون کارآمد شامل این موارد است:

  • ادعایی که ممکن است نادرست باشد؛
  • یک جامعه‌ی هدف یا نمونه‌ی واقع‌گرایانه؛
  • نتیجه‌ای مشاهده‌پذیر؛
  • یک آستانه (Threshold) که پیش از مشاهده‌ی نتیجه تعیین شده باشد؛
  • تصمیم بعدی برای هر حالت: قبولی، رد و شواهد مبهم.

از آزمون‌هایی که فقط نشان می‌دهند تیم می‌تواند ایده را بسازد دوری کنید.

برگشت‌پذیری ترتیب کارها را تغییر می‌دهد

انتخاب‌های پرپیامد و برگشت‌ناپذیر به شواهد زودهنگام‌تری نیاز دارند. یک بازپخش فقط‌خواندنی می‌تواند پیش از ادغام در پروداکشن (Production) انجام شود. یک تطبیق‌دهنده (Adapter) موقت می‌تواند پیش از مهاجرت داده پیاده شود. توصیه‌ای که انسان تأییدش می‌کند می‌تواند پیش از اقدام خودکار آزمایش شود.

شکل ساخت باید از شکل عدم قطعیت پیروی کند.

ساخت آن

این کارگاه فرضیات را رتبه می‌دهد، ادعاهای آزموده‌شده را از ادعاهای باز تفکیک می‌کند، بالاترین ریسک باز را برمی‌گزیند و فایل outputs/assumption-map.json را می‌نویسد.

python3 code/main.py
python3 -m unittest discover code/tests -v

شواهد مربوط به پرریسک‌ترین فرضیه را تغییر دهید و ببینید آزمایش بعدی چطور تغییر می‌کند.

تمرین‌ها

  1. پنج فرضیه برای قابلیتی که می‌خواهید بسازید بنویسید.
  2. یک فرضیه‌ی ایمنی اضافه کنید که در فهرست قابلیت‌هایتان از قلم افتاده بود.
  3. آستانه‌ای تعریف کنید که باعث شود ساخت پروژه را متوقف کنید.
  4. یک آزمایش بزرگ را با آزمونی ارزان‌تر اما سرنوشت‌ساز جایگزین کنید.
  5. رتبه‌بندی بر اساس ریسک را با اولویت‌های نقشه‌ی راه مقایسه کنید و دلیل ناهمخوانی را توضیح دهید.

مطالعه‌ی بیشتر

چیزی که پیش خود نگه می‌دارید

فایل outputs/assumption-map.json را نگه دارید. درس بعدی از آن برای انتخاب کوچک‌ترین برشی استفاده می‌کند که می‌تواند شواهد تعیین‌کننده تولید کند.

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسنقشه فرضیات چه چیزی را برملا می‌کند که نقشه‌راه ویژگی‌ها پنهان می‌سازد؟
  2. حین درسکدام فرض ابطال‌پذیر است؟
  3. حین درسچرا میزان اثر، عدم قطعیت و برگشت‌ناپذیری به‌صورت جداگانه امتیازدهی می‌شوند؟
  4. حین درسآزمایش بعدی باید چه چیزی را هدف قرار دهد؟
  5. پس از درسچه چیزی یک آزمایش را تعیین‌کننده و قاطع (decisive) می‌کند؟
  6. پس از درسترتیب مراحل ساخت هنگام تفاوت در میزان برگشت‌پذیری چگونه باید تغییر کند؟

سؤالات متداول

تفاوت نقشه‌ی راه با نقشه‌ی فرضیات چیست؟

نقشه‌ی راه عدم قطعیت‌ها را پشت فیچرهای زمان‌بندی‌شده پنهان می‌کند؛ اما نقشه‌ی فرضیات صریحاً مشخص می‌سازد چه پیش‌شرط‌هایی باید درست باشند تا توسعه‌ی آن فیچرها توجیه پیدا کند.

ابعاد ارزیابی ریسک فرضیات کدامند؟

سه بعد کلیدی: اثرگذاری (میزان خسارت در صورت غلط بودن)، عدم قطعیت (میزان ضعف شواهد موجود) و برگشت‌ناپذیری (هزینه‌ی بازگشت از تصمیم پس از پیاده‌سازی).

چه چیزی یک آزمایش را از «مناسک تأیید خود» متمایز می‌کند؟

یک آزمون معتبر باید گزاره‌ای ابطال‌پذیر، جامعه‌ی نمونه‌ی واقع‌گرایانه، نتیجه‌ای سنجش‌پذیر و آستانه‌ی قبولیِ تعیین‌شده از پیش داشته باشد تا صرفاً به اثبات توانایی فنی تیم محدود نشود.

ما رو توی گوگل بیشتر ببین

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