بیشتر کدی که این روزها با اسم من ثبت میشود را من تایپ نکردهام. توضیح میدهم چه میخواهم، خروجی را میخوانم، اصلاحش میکنم، دوباره میفرستم. آخر روز کار زیادی جلو رفته و انگشتهای من تقریباً هیچ کاری نکردهاند.
مدتی این را سود خالص میدیدم. تا اینکه سر چیزهای کوچک مکث کردم: نوشتن یک reduce با دست، امضای دقیق آن متد Promise که ماهی یک بار لازمم میشود، اینکه یک debounce را از صفر چطور مینویسند.
اینها را بلد بودم. هنوز هم به یک معنا بلدم: تا ببینمشان میشناسمشان. اما شناختن و ساختن دو کار متفاوتاند. وقتی کد را میخوانید، حافظه فقط باید تأیید کند؛ وقتی از صفر مینویسید، حافظه باید تولید کند. کار کردن با ایجنت تمام روز اولی را تمرین میدهد و از دومی هیچ.
بیشتر آدمها این را یک مسئلهٔ مصاحبه میبینند و میگویند موقع دنبال کار گشتن حلش میکنیم. اما جای اصلیاش مصاحبه نیست. ریویو است.
وقتی صد خط کدی را میخوانید که خودتان ننوشتهاید، چیزی که جلویتان را میگیرد معماری نیست. چیزهای ریز است. آن حالت خاص را در نظر گرفته؟ این تغییر روی آرایهٔ ورودی عمدی بوده یا نه؟ این await باید داخل حلقه باشد یا بیرونش؟ این مقایسه واقعاً همان کاری را میکند که به نظر میرسد؟
اگر دست خودتان نوشتن این کد را فراموش کرده باشد، چشمتان هم در قضاوتش کند میشود. به خروجی نگاه میکنید، منطقی به نظر میرسد، تستها سبزند، تأییدش میکنید. نه چون بررسی کردید، بلکه چون چیزی نداشتید که با آن ایراد بگیرید.
و این همان اشتباهی است که هزینهاش دیر معلوم میشود. کدی که خطا میدهد را همان روز پیدا میکنید. کدی که خطا نمیدهد و اشتباه است، شش ماه بعد پیدا میشود.
خوب ریویو کردن و خوب نوشتن دو مهارت جدا نیستند. دومی همان چیزی است که اولی را ممکن میکند.
برای همین برگشتم سراغ تمرین روزانه، و برای خودم یک ابزار کوچک ساختم: ده تا بیست دقیقه، یک مسئلهٔ کوچک، از حافظه، با یک تایمر، و همان سؤال عمداً چند روز بعد دوباره.
این نوشته خلاصهای است از «چرا هنوز روزی ده دقیقه با دست کد میزنم».
در نوشتهٔ کامل گفتهام آن ابزار دقیقاً چیست، چرا سؤالهایش معمای الگوریتمی نیستند، و آن نیمساعتِ مصاحبه واقعاً چه چیزی را میسنجد. از همان صفحه میتوانید در خبرنامهٔ فارسی هم عضو شوید تا نوشتهٔ بعدی به دستتان برسد.
متن کامل را اینجا بخوانید: https://fa.gazar.dev/maghale/dah-daghighe?src=virgool