منطق ایجنت‌ها › M6 — ساختن سیستم بدون کد
۶.۵ پایدار تدریسی ~۳۰ دقیقه

رویه و نقش

قبل از این فصل: فصل ۶.۴ · فصل ۳.۵

در یک نگاه

۶.۵.۱

رویه‌ی نوشته‌شده: کاری که همیشه یک‌طور انجام شود

تا اینجا سیستمت جا دارد، حافظه دارد، قانون دارد. ولی یک چیز کم است: کارهایی که تکرار می‌شوند و هر بار باید یک‌طور انجام شوند.

قانون و رویه یکی نیستند و تفکیکشان کار را ساده می‌کند:

در ابزارها این همان چیزی است که skill نامیده می‌شود (فصل ۳.۴.۳): یک فایل متنی که یک رویه را توضیح می‌دهد و وقتی لازم شد خوانده می‌شود — نه همیشه. و این تفاوت با فایل قانون، فنی هم هست: قانون در context دائمی می‌نشیند، رویه فقط وقتی مصرف می‌شود که به کار بیاید (فصل ۱.۳.۲).

یک رویه‌ی خوب چهار چیز دارد:

  1. کِی به کار می‌آید — بدون این، هیچ‌وقت در لحظه‌ی درست خوانده نمی‌شود.
  2. قدم‌ها، به ترتیب.
  3. خروجی نهایی چه شکلی است.
  4. و کجا باید بایستد و بپرسد.

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

۶.۵.۲

طراحی یک نقش

نقش یک قدم جلوتر از رویه است. رویه می‌گوید کار چطور انجام شود؛ نقش می‌گوید این کار را چه کسی انجام می‌دهد و با چه محدودیتی. در ابزارها اسمش sub-agent است (فصل ۳.۵.۱).

و اینجا یک نکته‌ی مهم هست که در فصل ۳.۵ فنی گفته شد و حالا طراحانه‌اش می‌گوییم: هر نقش context جدا دارد. یعنی نقشی که فقط کارِ خودش را می‌بیند، حواسش پرت نمی‌شود — و این نه یک جزئیات فنی، بلکه دلیلِ اصلیِ کارکردنِ نقش‌هاست.

یک نقش سه چیز لازم دارد:

به‌خاطر بسپار ارزش یک نقش بیشتر در «چه کاری نکند» است تا «چه کاری بکند». بازبینی که خودش متن را هم اصلاح می‌کند، دیگر بازبین نیست — و آن‌وقت هیچ‌کس ایرادها را نمی‌بیند، چون قبل از دیده‌شدن رفع شده‌اند.

۶.۵.۳

ساختن یک تیم کوچک از نقش‌ها

وقتی چند نقش داشته باشی، یک تیم داری. ساده‌ترین تیمی که واقعاً کار می‌کند این است:

یک تیم کوچک از سه نقش تو تصمیم‌گیرنده‌ای؛ سه نقش زیر دستت هستند: جمع‌کننده که پیدا می‌کند، نویسنده که پیش‌نویس می‌سازد، و بازبین که ایراد می‌گیرد ولی اصلاح نمی‌کند. تو — تصمیم می‌گیری جمع‌کننده پیدا می‌کند و می‌آورد نتیجه‌گیری نمی‌کند نویسنده پیش‌نویس می‌سازد منبع تازه نمی‌آورد بازبین ایراد می‌گیرد اصلاح نمی‌کند خط قرمزِ هر نقش، همان چیزی است که تیم را کارآمد می‌کند تصمیم نهایی هیچ‌وقت پایین نمی‌رود — بالا می‌ماند
سه نقش، سه خط قرمز. اگر بازبین اصلاح کند یا جمع‌کننده نتیجه‌گیری کند، تیم به یک نفر تبدیل می‌شود.

سه چیز که این تیم درست انجام می‌دهد:

۶.۵.۴

کِی نقش جدید بساز، کِی نه

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

نقش بساز وقتی:

نقش نساز وقتی:

در فصل ۳.۵.۴ همین را از دید فنی دیدی. اینجا از دید طراحی همان جواب است: با یک نقش شروع کن. نقش دوم را وقتی بساز که درد یک نقش را حس کرده باشی — نه از قبل، چون پیش‌بینیِ مرزها قبل از دیدنِ کار تقریباً همیشه غلط است.

نکته‌ی طلایی برای هر نقش، جمله‌ی «این نقش اجازه ندارد …» را بنویس. اگر نتوانستی جمله را تمام کنی، آن نقش مرز ندارد و نباید نقش باشد. این کوتاه‌ترین آزمونِ طراحیِ نقش است و همان‌جا جلوی ساختنِ نقش‌های تزئینی را می‌گیرد.
ضدالگو ساختن نقشی به نام «مدیر» که کار بقیه را هماهنگ کند. در سیستم کوچک، مدیرِ اضافه یک لایه‌ی واسطه است که فقط اطلاعات را تحریف می‌کند — هماهنگ‌کننده خودِ تو هستی. اگر سیستمت به‌قدری بزرگ شده که واقعاً به هماهنگ‌کننده نیاز دارد، مسئله‌ی اصلی این است که دامنه‌اش زیادی بزرگ شده (فصل ۲.۴.۴).

تمرین (فکری)

برای سیستمت دو نقش تعریف کن، هر کدام با:

  1. یک کار مشخص (در یک جمله).
  2. جمله‌ی «این نقش اجازه ندارد …».
  3. خروجی مشخصش.
  4. و بعد: بگو مرز بین این دو کجاست و چه چیزی ممکن است بین آن دو بیفتد و گم شود.
پاسخنامه — دو نقش، و آن چیزی که بینشان می‌افتد

نقش ۱ — گردآورنده. کار: از پوشه‌ی ورودی، هر پرونده‌ی تازه را می‌خواند و اطلاعات کلیدی‌اش را در یک سطر خلاصه می‌کند. اجازه ندارد پرونده را جابه‌جا کند یا تصمیم بگیرد فوری است یا نه. خروجی: یک فهرست، یک سطر برای هر پرونده.

نقش ۲ — بازبینِ کیفیت. کار: آن فهرست را با خودِ پرونده‌ها مقایسه می‌کند و موارد ناهم‌خوان را علامت می‌زند. اجازه ندارد فهرست را اصلاح کند. خروجی: فهرست موارد مشکوک با دلیل.

مرز: نقش ۱ می‌سازد، نقش ۲ فقط می‌سنجد. هیچ‌کدام چیزی را منتقل یا اصلاح نمی‌کند — آن کار تصمیم است و بالا می‌ماند.

و آن چیزی که بین این دو می‌افتد و گم می‌شود: پرونده‌ای که ناخوانا است. نقش ۱ برایش سطری می‌سازد که ناقص است (چون نتوانست بخواند، ولی کارش ساختنِ سطر بود)، و نقش ۲ آن را «ناهم‌خوان» علامت می‌زند — ولی هیچ‌کدام نمی‌گوید علت اصلی ناخوانابودنِ فایل است. نتیجه: تو یک هشدارِ مبهم می‌گیری و باید خودت کشفش کنی.

حل: به نقش ۱ اضافه کن «اگر نتوانستی بخوانی، سطر نساز؛ در فهرستِ جداگانه‌ی خوانده‌نشد بنویس.» این همان استثنایی است که فصل ۶.۴.۲ گفت بیشترِ شکست‌ها در آن اتفاق می‌افتد — و دقیقاً در مرزِ بین دو نقش ظاهر می‌شود.

ذخیره شد