ساختن نرمافزار یعنی یاد گرفتن
خلاصهٔ کاملتر
این متن یه یادداشت داخلیه که Thorsten Ball اول توی Slack تیم Amp نوشته و بعد عمومیش کرده. حرف اصلیش ساده ولی مهمه: ساختن نرمافزارِ تازه یعنی یاد گرفتن. اون سناریوی آرمانی که یکی بگه «این فیچر رو لازم داریم»، تو بسازی و طرف بگه «دقیقاً همینو میخواستم»، تقریباً هیچوقت برای چیز تازه اتفاق نمیافته.
چیزی که واقعاً میافته اینه: میسازی و طرف میگه «هوم، این منظورم نبود»، یا وسط کار خودت میفهمی سه راه برای انجامش هست و مطمئن نیستی کدوم بهتره، یا تهش طرف میگه «خوشم نمیاد». نویسنده میگه این تکرار به این خاطره که وقتی چیز تازهای میسازی و هنوز دقیق نمیدونی قراره چطور کار کنه، همون موقع که داری میسازیش یاد میگیری چی هست. تنها راه فرار ازش اینه که از اول کامل spec کنی، که خب خود برنامهنویسی یعنی همون مشخصکردن کامل خواسته؛ پس نمیشه ازش فرار کرد.
خبر خوب اینه که میتونی زمان اون فاصله رو کم کنی؛ فاصلهی بین «آره، بذار بسازمش» تا «آهان، فهمیدم». نویسنده میگه مهمترین کاری که موقع ساختن چیز تازه میکنی همینه: کوتاه کردن مسیر از «بذار یه چیزی امتحان کنم» تا جایی که واقعیت کتکت بزنه و یاد بگیری.
بهجای اینکه چهار هفته بری و روی یه چیز هک بزنی و آخرش بشنوی «این منظورم نبود»، میتونی کارهایی مثل این بکنی: یه پروتوتایپ یکساعته بساز و نشون بده؛ یه اسپک نیمساعته بنویس؛ کار رو تیکهتیکه کن و هر روز یه تیکه شیپ کن تا هر روز با واقعیت برخورد کنه؛ اسکوپ رو کم کن و فقط روی چیزایی که هنوز نمیدونی تمرکز کن؛ یه دموی فیک بساز؛ یا حتی همون کد نمونهای که قراره توی README بره رو بنویس و بپرس آیا این API خوبه. لازم نیست فقط یکی رو انتخاب کنی؛ برای چیزای بزرگ بهتره چندتاشون رو ترکیب کنی.
نکتهی مهم اینه که فیدبک رو به وسیعترین معنا ببینی: فیدبک از CI، از همکار، از کاربر، و از خودت وقتی واقعاً ازش استفاده میکنی. ولی باید فیدبکِ خوب بگیری؛ اگه یه MVP پر از باگ شیپ کنی فقط سه روز گزارش باگ میگیری نه نظر دربارهی مفید بودنش، و اگه تغییراتت سه هفته روی یه برنچ بمونه، وقتی ۲۷ کامیت رو merge کنی و CI بترکه، ۲۷ مظنون داری بهجای یکی. پس سؤالی که باید مدام بپرسی اینه: چطور میتونم هرچه زودتر روی چیزی که میسازم فیدبک بگیرم؟
نکات کلیدی:
- ساختن نرمافزارِ تازه ذاتاً یه فرایند یادگیریه، نه اجرای یه اسپکِ از پیشآماده
- «این منظورم نبود» اجتنابناپذیره؛ هدف کوتاهکردن زمان رسیدن به اون لحظهست
- با پروتوتایپ، اسپک کوتاه، دموی فیک یا شیپ روزانه زودتر فیدبک بگیر
- فیدبکِ بد (MVP پرباگ یا برنچ سههفتهای) بهاندازهی نبود فیدبک ضرر داره
- کار رو تیکهتیکه شیپ کن تا هر بار فقط یه مظنون برای مشکل داشته باشی




