یک سیستم از چه ساخته میشود
تا اینجای دوره ابزار یاد گرفتی: چطور با ایجنت کار کنی (M3)، چطور خروجیاش را راستیآزمایی کنی (M4)، چطور از خودت محافظت کنی (M5). این ماژول یک قدم بالاتر است — ساختنِ چیزی که بماند، نه انجامدادنِ یک کار.
و اولین چیزی که باید از سرت بیرون کنی این است که سیستم یعنی برنامه. سیستم سه جزء دارد و هیچکدامشان کد نیست:
- جا — چیزها کجا مینشینند. یعنی پوشهها و نامشان.
- حافظه — سیستم چه چیزی را یادش میماند. یعنی فایل متنی (فصل ۱.۴.۳).
- قانون — چه چیزی چطور انجام شود. یعنی جملهی فارسی (فصل ۳.۴.۱).
هر سهشان را همین حالا میتوانی بسازی. هیچکدام مهارت تازهای لازم ندارند.
ساختار در برابر برنامه
این دو خانوادهی جدا هستند، نه دو سطح از یک چیز:
و نکتهی اصلی در سطر آخر است: سیستمِ ساختاری را خودت میتوانی نگه داری. برنامهای که نمیفهمی، حتی اگر ایجنت برایت بنویسد، بار روی دوش تو میگذارد — چون روز اولی که خراب شود، دستت بسته است.
چرا این نقطهی شروع درستتری است
چهار دلیل، و هیچکدام «چون سادهتر است» نیست:
- میتوانی راستیآزماییاش کنی. کل M4 دربارهی این بود که خروجیای را که نمیفهمی نباید قبول کنی. سیستمی که از جملهی فارسی ساخته شده، خودش قابل خواندن است — پس مشکلِ «نمیدانم درست است یا نه» از اساس پیش نمیآید.
- ایجنت هم میفهمدش. همان فایل متنی که تو میخوانی، برای ایجنت هم context است (فصل ۲.۷.۴). یک چیز، دو خواننده.
- تغییرش ارزان است. عوضکردن یک جمله ریسک ندارد. عوضکردن یک تابع، دارد.
- و اگر بعداً کد لازم شد، جایش معلوم است. ساختار جایگزینِ برنامه نیست؛ ظرفی است که برنامه — اگر واقعاً لازم شود — داخلش مینشیند.
بهخاطر بسپار هر چیزی که میشود با ساختار حل کرد، با ساختار حل کن. کد را برای جایی نگه دار که ساختار واقعاً جواب نمیدهد — و آن جاها کمتر از آناند که فکر میکنی.
نمونههایی از سیستمهای بدون کد
اینها واقعیاند و هر کدام فقط پوشه و فایل و قانوناند:
- سیستم پیگیری مشتری. سه پوشه (تازه · در جریان · بستهشده)، یک فایل برای هر مشتری، و یک قانون: «هر تماس، یک سطر تازه بالای فایل با تاریخ.»
- سیستم تولید محتوا. پوشهی ایدهها، پوشهی پیشنویس، پوشهی منتشرشده، و یک فایل الگو که هر پیشنویس تازه از آن شروع میشود.
- سیستم اسناد. پوشهبندی بر اساس سال و نوع، و یک قانون نامگذاری: «تاریخ-طرف-موضوع». همین یک قانون، جستوجو را از کار سخت به کار بیفکر تبدیل میکند.
- و خودِ همین دوره. فصلها فایلاند، نقشهشان از یک فایل طرح ساخته میشود، و چند قانون نوشتهشده جلوی خطاهای تکراری را میگیرند — فصل ۶.۷ یکی از اینها را جزءبهجزء باز میکند.
در هیچکدام «سیستم» یک برنامه نیست. سیستم آن نظمی است که تصمیمها را از قبل گرفته، تا وقتی سرت شلوغ است دیگر لازم نباشد فکر کنی کجا بگذاریاش.
تمرین (فکری)
به بکلاگت (فصل ۰.۱۱) برگرد و یک کار پیدا کن که با ساختار حل میشود، نه با کد. بعد سه سؤال را جواب بده:
- الان هر بار چه تصمیمی را دوباره میگیری؟
- اگر آن تصمیم یک بار گرفته و نوشته میشد، کجا مینشست — در نام پوشه، در یک فایل، یا در یک قانون؟
- و صادقانه: این کار بهقدر کافی تکرار میشود که ارزش سیستم داشته باشد؟
پاسخنامه — یک نمونهی کامل، و چرا سؤال سوم مهمترین است
نمونه: فاکتورهای ماهانه.
- تصمیم تکرارشونده: هر بار که فاکتوری میرسد، فکر میکنم اسمش را چه بگذارم و کجا بگذارمش — و بعد موقع جستوجو پیدا نمیکنم.
- کجا مینشیند: هر سه جا، و همین نکته است. جا: پوشهبندی سال/ماه. قانون: «نام فایل = تاریخ-طرف-مبلغ». حافظه: یک فایل که میگوید کدام فاکتورها پرداخت شدهاند.
و سؤال سوم: فاکتور ماهانه است، پس سالی دوازده بار — ارزشش را دارد. ولی اگر جوابت «سالی دو بار» بود، جواب درست «نساز» است و این شکست نیست. تشخیصِ اینکه چیزی ارزش سیستم ندارد خودش یک مهارت است؛ کسی که این را نمیتواند، برای هر چیزی سیستم میسازد و بعد هیچکدام را نگه نمیدارد.