ثبت تصمیم فنی با گزینههای ردشده

جلسهای که در هر تیم فنی تکرار میشود: کسی میپرسد «چرا اینجا از این روش استفاده کردهایم؟» و جواب یکی از این دوتاست — «نمیدانم، قبل از من بوده» یا «یادم نیست، ولی حتماً دلیلی داشته».
هر دو جواب یک هزینه دارند: همان بحث از اول باز میشود، این بار بدون اطلاعاتی که بار اول در دسترس بود.
چه چیزی ارزش ثبت دارد
نه هر تصمیمی. معیار ساده است: تصمیمی که عوض کردنش بعداً گران است.
- مدل داده و ساختار روابط
- مرز بین سرویسها
- انتخاب پایگاه داده و اکوسیستم اصلی
- مدل دسترسی و محدودهٔ داده
- هر جا که چند گزینهٔ معقول وجود داشته و یکی انتخاب شده
و آنچه ثبت نمیشود: تصمیمهایی که فردا بدون هزینه قابل تغییرند. سندی که دربارهٔ نامگذاری متغیرها بحث کند، سندی است که کسی نمیخواند — و بعد سندهای مهم را هم نمیخواند.
تفکیک برگشتپذیر از برگشتناپذیر را در انتخاب فناوری نوشتهایم؛ همان فهرست، فهرست چیزهایی است که ارزش ثبت دارند.
قالبی که جواب میدهد
از رویهای که خودمان استفاده میکنیم، پنج بند:
۱. حکم، اول. جملهٔ اول باید بگوید چه تصمیمی گرفته شد. کسی که شش ماه بعد سند را باز میکند، معمولاً فقط همین را میخواهد.
۲. مسئله. چه چیزی ما را به این تصمیم رساند؟ محدودیتها چه بودند؟
۳. گزینههای ردشده، با دلیل شکستشان. مهمترین بند و بیشترین غفلت.
سندی که فقط برنده را مینویسد، فقط نیمی از کار را کرده. شش ماه بعد کسی میآید و میگوید «چرا فلان روش را استفاده نکردیم؟» — و اگر ننوشته باشید که بررسی شده و چرا رد شده، از اول بررسیاش میکنید.
۴. آنچه با این انتخاب از دست دادیم. هر تصمیمی معاوضه است. نوشتن هزینه، سند را از تبلیغ به تحلیل تبدیل میکند — و کسی که بعداً بازنگری کند، میداند دنبال چه علائمی بگردد.
۵. تاریخ و اینکه چه چیزی تأیید شده و چه چیزی فرض. «روی نسخهٔ X در تاریخ Y آزمایش و تأیید شد» با «فرض کردیم پشتیبانی میشود» دو چیز کاملاً متفاوتاند و باید در سند از هم جدا باشند.
محرک بازنگری باید قابل مشاهده باشد
بندی که تفاوت زیادی میسازد و کم دیده میشود.
بیشتر تصمیمها موقتاند: «فعلاً این، تا وقتی بزرگتر شویم». اما جملهٔ «وقتی مقیاس بیشتر شد بازنگری میکنیم» محرک نیست — هیچکس نمیفهمد آن لحظه کِی رسید.
محرک باید چیزی باشد که کسی واقعاً متوجهش میشود:
- «وقتی تعداد مستأجرها از X گذشت»
- «وقتی زمان اجرای گزارش ماهانه از Y بیشتر شد»
- «وقتی اولین مشتری الزام نگهداری داده روی سرور خودش را مطرح کرد»
تفاوت این دو، تفاوت بین تصمیمی است که بازنگری میشود و تصمیمی که تا روز بحران میماند.
تصمیم برگشته را حذف نکنید
قاعدهای که خلاف شهود است و در عمل درست از آب درآمده: وقتی تصمیمی عوض میشود، تصمیم قبلی پاک نمیشود — «جایگزینشده» علامت میخورد و سر جایش میماند.
سه دلیل:
اسناد دیگر به آن لینک دادهاند. حذفش، ارجاعهای شکسته میسازد.
خود بازنگری اطلاعات است. اینکه چه چیزی ما را وادار کرد نظرمان را عوض کنیم، برای تصمیم بعدی ارزش دارد.
و بدون آن، همان مسیر دوباره طی میشود. کسی که نداند این گزینه یک بار انتخاب و بعد رها شده، ممکن است دوباره انتخابش کند.
فقط بالای سند بنویسید: چه چیزی جایگزینش شده، از چه تاریخی، و چرا.
کجا نگهش داریم
کنار کد، در همان مخزن. سندی که در فضای دیگری زندگی میکند، همراه کد تغییر نمیکند و در بازبینی دیده نمیشود — همان نکتهای که در مستندسازی نرمافزار گفتیم.
یک فایل بهازای هر تصمیم، با تاریخ در نام. فهرست فایلها خودش خط زمانی تصمیمهای پروژه میشود.
و تصمیمهای سطح سازمان جدا از تصمیمهای یک محصول. «چرا این پایگاه داده برای همهٔ محصولات» با «چرا این جدول در این محصول این شکلی است» دو جنس متفاوتاند و مخاطبشان یکی نیست.
هزینهاش چقدر است
نیم ساعت، بعد از هر تصمیم مهم. در پروژهٔ ششماهه، شاید ده تا پانزده سند.
و اگر بیش از این شد، معیارتان اشتباه است — دارید چیزهایی را ثبت میکنید که برگشتپذیرند.
چه چیزی واقعاً به دست میآید
از تجربهٔ خودمان، سه اثر که ارزش این نیم ساعتها را میدهند:
بحثهای تکراری تمام میشوند. «این را قبلاً بررسی کردیم، اینجاست» جملهای است که یک جلسهٔ کامل را حذف میکند.
تحویل پروژه معنا پیدا میکند. تیمی که سامانه را تحویل میگیرد، فقط کد نمیگیرد؛ میفهمد چرا اینطور ساخته شده. بدون آن، اولین کارشان بازنویسی چیزی است که دلیلش را نمیدانند.
و ارزیابی خودمان ممکن میشود. وقتی تصمیمی بد از آب درمیآید، میشود برگشت و دید کدام فرض غلط بوده — که تنها راه بهتر شدن در تصمیم بعدی است.
اگر امروز شروع میکنید
از تصمیم بعدی شروع کنید، نه از تصمیمهای گذشته. تلاش برای مستندسازی عقبماندهٔ سه سال تصمیم، معمولاً نیمهکاره رها میشود.
و برای تصمیمهای قدیمی که هنوز مهماند، فقط وقتی بنویسید که کسی سؤالشان را پرسید. آن سؤال، خودش نشانهٔ این است که ارزش نوشتن دارد.