منطق ایجنت‌ها › M9 — پروژه‌ی پایانی و ادامه
۹.۱ پایدار تدریسی ~۳۰ دقیقه

انتخاب و طراحی پروژه‌ی خودت

قبل از این فصل: فصل ۰.۱۱ · فصل ۲.۴

در یک نگاه

۹.۱.۱

برگرد به بک‌لاگ

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

و احتمالاً سه چیز عوض شده:

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

۹.۱.۲

معیار انتخاب: کوچک، واقعی، مالِ خودت

سه معیار، و هر سه لازم‌اند. پروژه‌ای که دو تا را دارد و سومی را ندارد، معمولاً نیمه‌کاره رها می‌شود — و برای هر کدام دلیلِ متفاوتی:

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

و چند نمونه‌ی خوب، که هر سه معیار را دارند: خلاصه‌ی هفتگی از یادداشت‌های جلسات · مرتب‌کردن و نام‌گذاری فایل‌های ورودی · تبدیل یک فهرست به‌هم‌ریخته به جدول تمیز · گزارش ماهانه‌ای که هر بار دستی می‌سازی.

و چند نمونه‌ی بد برای پروژه‌ی اول — نه چون نشدنی‌اند، بلکه چون برای اولین پروژه بد هستند: چیزی که به داده‌ی مشتری دست بزند · چیزی که ایمیل به بیرون بفرستد (فصل ۸.۵.۴) · یا چیزی که کلِ یک فرآیندِ کاری را جایگزین کند.

۹.۱.۳

مسیرهای جایگزین اگر کار اداری تکراری نداری

این دوره پیش‌فرضش کار اداری بوده. ولی اگر آن‌طور کار نمی‌کنی، پروژه‌ی پایانی همچنان برایت هست:

۹.۱.۴

spec نهایی

حالا spec بنویس. همان چهار بندِ فصل ۲.۴.۲، به‌علاوه‌ی سه چیزی که در این هشت ماژول یاد گرفتی و آن موقع نمی‌دانستی:

  1. ورودی: چه چیزی، از کجا، و در چه قالبی.
  2. خروجی: چه چیزی، و کجا می‌رود (فصل ۸.۵.۵ — و این را همین حالا تصمیم بگیر، نه آخرِ کار).
  3. «تمام شد» یعنی چه: سه شرطِ قابل بررسی. نه «خوب کار کند».
  4. دامنه: چه چیزی در این نسخه نیست.
  5. راستی‌آزمایی: از کجا می‌فهمی خروجی درست است؟ (M4)
  6. trigger: دستی یا خودکار؟ (فصل ۸.۶ — و برای پروژه‌ی اول، دستی جوابِ درست است.)
  7. و داده: چیزی حساس در جریان هست؟ (فصل ۵.۳.۱)

و بندِ چهارم را جدی بگیر. نوشتنِ آنچه نمی‌سازی، همان چیزی است که پروژه را کوچک نگه می‌دارد — چون وسط کار همیشه ایده‌های تازه می‌آیند و بدون این بند، هر کدامشان وارد می‌شوند.

نکته‌ی طلایی spec را به ایجنت بده و بگو «این را کوچک‌تر کن — کدام بخشش را می‌شود به نسخه‌ی دوم انداخت؟» تقریباً همیشه چیزی پیدا می‌کند، و تقریباً همیشه حق دارد. پروژه‌ی اولِ هیچ‌کس به‌قدر کافی کوچک نیست.
ضدالگو انتخاب بزرگ‌ترین دردت به‌عنوان پروژه‌ی پایانی. منطقی به نظر می‌رسد — «بیشترین سود را دارد» — ولی بزرگ‌ترین درد معمولاً بزرگ‌ترین کار هم هست، و شکستنش تو را از این دوره ناامید می‌کند نه از آن پروژه. اول یک بردِ کوچکِ کامل بگیر؛ دردِ بزرگ، اتوماسیون سوم یا چهارم توست (فصل ۹.۳).

تمرین (فکری)

spec پروژه‌ی پایانی‌ات را بنویس — هر هفت بند بخش ۹.۱.۴. قبلش:

  1. بک‌لاگت را باز کن و سه گزینه انتخاب کن.
  2. هر سه را با سه معیار بخش ۹.۱.۲ بسنج و یکی را بردار.
  3. و بنویس چرا آن دوتای دیگر را نگرفتی — این بند به اندازه‌ی خودِ انتخاب مهم است.
پاسخنامه — یک spec کامل، و آن بندی که همه سست می‌نویسند

پروژه: خلاصه‌ی هفتگی از یادداشت‌های جلسات.

  • ورودی: پوشه‌ی جلسات/، فایل متنی، هفته‌ای سه تا پنج تا.
  • خروجی: یک فایل Markdown در خلاصه‌ها/ با نام تاریخ‌دار، و یک پیام کوتاه برای خودم.
  • «تمام شد» یعنی: (۱) هر جلسه یک بند دارد · (۲) هر تصمیم و هر کارِ سپرده‌شده با نام فرد آمده · (۳) بخش «نامعلوم‌ها» وجود دارد و پر است.
  • در این نسخه نیست: فایل صوتی، جلسات ماه‌های قبل، و پیگیریِ اینکه کارها انجام شدند یا نه.
  • راستی‌آزمایی: تعداد بندها با تعداد فایل‌ها یکی باشد؛ و یک جلسه را کامل با خلاصه‌اش مقایسه می‌کنم.
  • trigger: دستی، جمعه‌ها.
  • داده: نام همکاران هست ولی چیز حساسی نیست؛ نام مشتری‌ها جایگزین می‌شود.

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

اگر نمی‌توانی «تمام شد» را طوری بنویسی که یک نفر دیگر بتواند بررسی‌اش کند، هنوز spec نداری — یک آرزو داری.

ذخیره شد