کنت بک: یاگنی رو اشتباه فهمیدیم
خلاصهٔ کاملتر
کنت بک تو پست تازهش اول داستان تولد یاگنی (YAGNI) رو تعریف میکنه: وسط یه پروژه، چت هندریکسون بهش میگه الان میتونم کار ساده رو انجام بدم ولی سه هفته دیگه جواب نمیده، پس بذار همین حالا نسخهٔ پیچیدهش رو بسازم — و بک هر بار فقط یه جواب میده: بهش نیاز پیدا نمیکنی. به گفتهٔ نویسنده یاگنی بهونهای برای طراحینکردن نیست؛ اگه بهش نیاز داری، بسازش. حرف یاگنی سرِ زمانبندیـه: ساختن ساختار خیلی زود، بهاندازهٔ ساختنش خیلی دیر ریسک داره.
نویسنده میگه بیشتر آدمها یاگنی رو یه قاعدهٔ صرفهجویی میفهمن: کدی که هنوز لازم نداری ننویس، چون نوشتن کد گرونه. این برداشت غلطه و الان غلطبودنش بیشتر از همیشه اهمیت داره. یاگنی اصلاً دربارهٔ هزینهٔ تولید کد نیست؛ دربارهٔ هزینهٔ ساختار حدسیـه — ساختاری که جلوتر از فیچری که بهش نیاز داره میسازی. این ساختار دو تا صورتحساب برات میفرسته که هرکدوم بهتنهایی برای صبر کردن دلیل کافیان.
صورتحساب اول حق انتخابـه. وقتی ساختار رو قبل از رسیدن فیچر میسازی، روی یه حدس شرط بستی و معمولاً فیچری که از راه میرسه همونی نیست که براش آماده شدی؛ پس دوبار هزینه میدی: یکبار برای دور زدن ساختاری که حالا بدشکل شده و یکبار برای کندنش. نکتهٔ اصلی به گفتهٔ بک اینه که حتی حدس درست هم وضعت رو از صبر کردن بدتر میکنه: ارزش هیچوقت تو خودِ ساختار نبود، تو اختیارِ ساختنِ ساختار درست بعد از رسیدن اطلاعات بود. صبر کردن تنبلی نیست؛ صبر کردن یعنی نگه داشتن یه دارایی.
صورتحساب دوم NPV یا ارزش فعلیه: پول ارزش زمانی داره و فیچر هم همینطور. ساختاری که امروز برای فیچر سه ماه دیگه میسازی یعنی هزینه رو جلو کشیدی و درآمد رو عقب انداختی، و این یکی حتی با پیشبینی بینقص هم پرداخت میشه؛ چون تنزیل کاری به درستبودن حدست نداره، کارش با ترتیبه. این دو تا مستقلان ولی تقریباً همیشه همنظر؛ اونجا هم که به نظر میرسه اختلاف دارن — «بعداً عوض کردنش خیلی گرون درمیآد» — خودِ اون بازسازیِ گرون یه پیشبینیه و برمیگردی سر صورتحساب اول.
حالا بخش مربوط به ماشینها: چیزی که تو هیچکدوم از این دو صورتحساب نیست، هزینهٔ تایپ کردن کده — و دقیقاً همین یکی تقریباً صفر شده. مدل، ساختار حدسی رو مجانی و آنی مینویسه و ظاهرش هم شبیه وسواس مهندسیه. ولی به گفتهٔ بک هر دو صورتحساب از کد ارزون جون سالم بهدر میبرن: اولی سر تعهدیه که آیندهها رو میبنده، نه زحمتی که کشیدی؛ دومی سر زمانبندی جریان نقدیه، نه قیمت تولید.
پس تولید مجانی یاگنی رو ضعیف نمیکنه؛ فقط تخلف ازش رو ارزونتر میکنه و این بدتره — چون علاوه بر هر دو صورتحساب، کدی رو که خودت ننوشتی کمتر هم میفهمی. جالب اینکه بک این توضیح رو اصلاً برای آدمها ننوشته: میگه تو یه گفتوگو با یه مدل فهمیده که مدلها یاگنی رو نمیفهمن، برای همین متن رو خطاب به خودِ مدلها نوشته. جمعبندیش هم اینه که یاگنی هیچوقت صرفهجویی نبود؛ دو تیکه نظریهٔ قیمت بود که لباس یه شعار برنامهنویسی تنش کرده.
نکات کلیدی:
- یاگنی دربارهٔ هزینهٔ نوشتن کد نیست، دربارهٔ هزینهٔ ساختاریه که زودتر از نیاز واقعی میسازی.
- صورتحساب اول: تعهد زودهنگام حق انتخاب رو میسوزونه، حتی وقتی حدست درست از آب دربیاد.
- صورتحساب دوم: هزینه رو جلو میندازی و درآمد رو عقب؛ ارزش زمانی پول جریمهش رو میگیره.
- ارزونشدن تولید کد با هوش مصنوعی هیچکدوم از این دو رو کم نمیکنه، فقط تخلف رو راحتتر میکنه.
- طراحی ممنوع نیست؛ زمانبندیش مهمه — تا نیاز نرسیده، صبر خودش یه داراییه.




