اول همهچیزو بساز، بعد PRها رو تیکه کن
خلاصهٔ کاملتر
Bruno Quaresma، پرودکت اینجینیر Adapt، تو این پست از یه تغییر تو جریان کارش میگه. روال قدیمی این بود که اول RFC بنویسی، کار رو به ایشوهای کوچیک بشکنی و بعد بسازی. به گفتهٔ نویسنده این روال منطقیه، ولی یه ایراد اساسی داره: ساختار کار رو دقیقاً همون موقعی قطعی میکنی که کمترین شناخت رو از مسئله داری. تصمیمگیری زودهنگام دربارهٔ مرزها هیچوقت برای آسونترکردن ساخت نبوده، برای ممکنکردن ریویو بوده.
نویسنده میگه سه چیز خیلی ارزونتر شده: ساختن، طراحی، و از همه مهمتر تیکهکردن یه برنچ تمومشده به یه سری PR کوچیک. اون آخری قبلاً کسلکنندهترین بخش کار بود و دقیقاً به همین خاطر ازش فرار میکردیم؛ الان فقط یه پرامپته. در عوض دو چیز ارزون نشده: نیمهٔ قضاوتیِ کدریویو — اینکه این تغییر جاش همینجاست یا شکل این اندپوینت شش ماه دیگه اذیت میکنه — و اعتبارسنجی محصول.
جریان کار پیشنهادیش شش قدمه: طرح رو زیر سؤال ببر تا تصمیمهای واقعی توش بیاد، اگه طراحی تازهست اسپکش رو قبل از هر کدی کامیت کن، «پهن» بساز یعنی همهچیز روی یه برنچ بمونه تا سرتاسر کار کنه، قبل از هر کدریویویی یه دموی کوتاه بذار، کار رو روی مرزهایی که خود کد نشون داده به PR تقسیم کن، و پاکسازی رو بذار آخر. اون کامیتهای وسط کار هم برای ریویوور نیستن، فقط نقطهٔ ذخیرهان.
دو قانون عملی هم داره. اول اینکه فقط وقتی PRها رو روی هم استک کن که وابستگی واقعی باشه، وگرنه از main برنچ بگیر؛ استککردن الکی یه زنجیرهٔ ریبیس درست میکنه که با اولین فیدبک پشیمونت میکنه. دوم اینکه حذف کد قدیمی همیشه آخرین PR باشه. تو یه ریفکتور واقعی کار به پنج PR تقسیم شد و آخری فقط حذف بود؛ چند صد خط بیشتر از کل چیزی که فیچر اضافه کرده بود رو پاک کرد.
نویسنده هزینهها رو هم پنهون نمیکنه. اگه ریویوور روی PRای که بقیه روش سوارن تغییر بخواد، باید کل استک رو ریبیس کنی. مهمتر اینکه تقسیمکردن با شیپکردن یکی نیست — هر پنج PR اون ریفکتور موقع نوشتن پست هنوز باز بودن. به گفتهٔ خودش این روش برای فیچرهای چندلایه و ریفکتورهایی خوبه که شکل نهاییشون معلوم نیست، ولی برای مایگریشنها و تغییرات اسکیما که ترتیبشون تو پروداکشن واقعاً مهمه، همون برنامهریزی از قبل بهتره.
نکات کلیدی:
- مرزهای PR رو بعد از ساخت تعیین کن، نه قبلش؛ کد خودش بهترین جای برش رو نشون میده
- کل فیچر روی یه برنچ تا وقتی سرتاسر کار کنه؛ کامیتهای وسط راه فقط نقطهٔ ذخیرهان
- قبل از اولین کدریویو یه دمو بذار تا اگه چیز اشتباهی ساخته شده، زود معلوم بشه
- فقط جایی استک کن که وابستگی واقعیه؛ بقیه از main برنچ بگیرن
- حذف کد قدیمی تو آخرین PR، جدا از ساخت؛ رولبک و ریویو رو تمیز نگه میداره
- برای مایگریشن و تغییر اسکیما که ترتیبش تو پروداکشن مهمه، این روش جواب نمیده




