با ویبکدینگ مثل یک اعتراف رفتار میشود. کسی اعتراف میکند که یک اپ کاربردی ساخته بدون خواندن حتی یک خط از کدی که مدل نوشته، و اتاق واکنش نشان میدهد انگار همین الان اعتراف کرد که یک بازرسی ایمنی را رد کرده. این ادعایی است که میخواهم از آن دفاع کنم: آن واکنش تا حد زیادی اشتباه است. تایپنکردن نحو (syntax) به معنای ندانستن کاری که انجام میدهید نیست — تخصیص متفاوتی است از اینکه قضاوت شما کجا صرف میشود، و برای بخش عظیمی از آنچه مردم میسازند، تخصیص درستی است.
این کلمه فقط چند سال عمر دارد و از حالا هم بار زیادی روی دوش آن گذاشته شده. برای دو رفتار بسیار متفاوت به کار میرود که اتفاقاً از بیرون شبیه هم بهنظر میرسند:
- کسی که با دقت آنچه میخواهد را توصیف میکند، نتیجه را با معیارهای واقعی میسنجد، و منتشر میکند.
- کسی که یک ایده مبهم را پیست میکند، نگاهی گذرا به یک اسکرینشات میاندازد، و با امید به تولید میفرستد.
منتقدان ویبکدینگ معمولاً، و بهدرستی، دومی را توصیف میکنند. اما طوری دربارهاش صحبت میکنند انگار اولی وجود ندارد، یا انگار این دو روی یک طیف هستند که فقط با درجه تنبلی از هم جدا میشوند. آنها اصلاً روی یک طیف نیستند. یکی یک روند کاری است. دیگری فقدان یک روند کاری.
مهارت قدیمی واقعاً برای چه بود
خواندن کد، خط به خط، ردیابی یک stack trace تا یک null pointer در سه فایل دورتر — این هرگز هدف نبود. تنها روش موجود برای هدفی بود که تغییر نکرده: آیا این چیز کاری را که نیاز دارم انجام میدهد، بهطور امن، و آیا میتوانم فردا به آن اعتماد کنم. برای سی سال تنها راه پاسخ به این سؤال این بود که آنقدر در زبان مسلط باشید که بتوانید مستقیماً ماشینآلات را بازرسی کنید. پس تسلط به یک نماینده (proxy) برای شایستگی تبدیل شد، و در نهایت آن نماینده با خودِ چیز اشتباه گرفته شد. مردم شروع کردند به رفتار با «توانایی خواندن دیف» بهعنوان یک فضیلت اخلاقی بهجای یک وسیله برای رسیدن به هدف.
بهمحض اینکه اعتبارسنجی دیگر نیازمند آن تسلط نباشد — بهمحض اینکه یک بیلد رکورد خودش را از آنچه تست کرده، آنچه قبول شده، آنچه یک ایجنت بازبین علامتگذاری کرده تولید کند — نماینده دیگر لازم نیست. برمیگردید به سؤال واقعی. آیا کار میکند. آیا میتوانم اعتماد کنم. ما رکوردهای اعتبارسنجی را دقیقاً به همین دلیل در هر بیلد گنجاندیم که این سؤال به پاسخی نیاز دارد که از مسیر «آیا یک انسان کد منبع را خواند» عبور نکند، چون برای بیشتر سازندگان این هرگز قرار نبود اتفاق بیفتد، چه پرامپت باشد چه نباشد. هیچکس پیاچپی پلاگین وردپرسش را هم نمیخواند.
مهارت واقعاً کجا رفت
به سمت مشخصات (specification) رفت، و مشخصات از آنچه بهنظر میرسد سختتر است. کسی را ببینید که یک پرامپت بیلد واقعاً خوب مینویسد و همان انضباطی را میبینید که یک مهندس ارشد در سند طراحی به کار میبرد:
- معیار پذیرش چیست؟
- چه چیزی صراحتاً خارج از محدوده است؟
- در حالت مرزی که سبد خرید در زمان تسویهحساب خالی است چه اتفاقی میافتد؟
- چه کسی میتواند این داده را ببیند، و چه کسی نمیتواند؟
یک پرامپت مبهم یک اپ مبهم تولید میکند، به همان دلیلی که یک تیکت مبهم یک pull request مبهم تولید میکند — محدودیتهای بیارزش، خروجی بیارزش، بدون نیاز به هیچ مدلی برای درستبودن این موضوع. کسانی که با ابزارهای هوش مصنوعی خوب میسازند، فکرکردن را رد نمیکنند. آن را زودتر منتقل کردهاند، به پانزده دقیقه قبل از اولین پیام بهجای دو ساعت بعد از اولین خطا.
بقیه مهارت جابجاشده، قضاوت در لایه بازبینی است، که شبیهتر است به خواندن خلاصه یک بیلد و رکورد اعتبارسنجی آن و پرسیدن سؤال شکاکانه درست، تا خواندن کد. آیا «مدیریت بازپرداخت پرداختها» واقعاً به معنای مدیریت حالتی است که بازپرداخت نیمهکاره شکست میخورد؟ آیا حالت خالی را تست کرد یا فقط مسیر خوشحال (happy path) را؟ این یک مهارت واقعی است، و به شیوهای قابلآموزش است که «یاد بگیرید پایتون بخوانید» فقط برای زیرمجموعهای از افراد که وقت و استعداد آن را داشتند قابلآموزش بود. من دیدهام صاحب یک مغازه بدون هیچ پیشینه برنامهنویسی سؤالات اعتبارسنجی تیزبینانهتری درباره اپ موجودی خودش میپرسد تا بسیاری از مهندسانی که درباره کدی که خودشان ننوشتهاند میپرسند، چون آنها کسبوکارشان را میشناسند و دقیقاً میدانند خرابی برایشان چه شکلی است. این یک مهارت پستتر نیست که جای مهارت واقعی را گرفته. برای بیلد آنها، مهارتی مرتبطتر از نحو (syntax) است.
داستانی که واقعاً تمسخر را توجیه میکند
حالا امتیاز، چون منتقدان این را از هیچ اختراع نمیکنند. یک نسخه واقعاً بد از ویبکدینگ وجود دارد، و آنقدر رایج است که تمسخر یک هدف واقعی دارد:
- کسی که یک سیستم ورود میسازد، یک تیک سبز میبیند، و بدون اینکه هرگز بپرسد آن سیستم ورود به چه دادهای دسترسی دارد یا وقتی درخواستی بدون هیچ توکنی میآید چه اتفاقی میافتد، منتشر میکند.
- انتشار یک کوئری پایگاهداده ساختهشده از یک پرامپت زبان طبیعی بدون بررسی اینکه آیا ورودی کاربر بدون escape به آن میرسد یا نه.
رکورد اعتبارسنجی میتواند به شما بگوید بیلد اجرا شد و تستها قبول شدند. نمیتواند به شما بگوید تستها چیز درستی را پوشش دادند، و اگر خودتان به آن نگاه نکنید، شما را از دیپلویکردن باز نمیدارد.
این کفی است که هرچقدر ابزارها بهتر شوند، جابهجا نمیشود: شما همچنان مسئول دانستن این هستید که «تمامشده» برای بیلد خاص شما باید به چه معنایی باشد، و مسئول واقعاً خواندن رکورد بهجای اعتماد کورکورانه به تیک سبز.
میانبر زدن یک نوع شایستگیِ تازه نیست. همان بیدقتیِ قدیمی است که لباس تازه پوشیده، و دقیقاً همان اعتباری را دارد که کسب میکند. اشتباه منتقدان این است که فکر میکنند این تنها حالت ممکن است — که چون این شکست وجود دارد، انضباط نمیتواند وجود داشته باشد. میتواند. فقط شبیه انضباطِ قدیمی به نظر نمیرسد، و کسانی که شایستگی را فقط با تسلط بر نحو زبان میسنجیدند، هنوز راهی برای دیدنش ندارند.
چند سال دیگر صبر کنید، این کلمه احتمالاً همان مسیری را طی میکند که «هکر» طی کرد — از «تعمیرکار باهوش» به چیزی ترسناکتر باریک شد و بعد دوباره باز شد. آنچه باقی میماند تمایز واقعی است، همانی که همیشه اهمیت داشت: سازندگانی که با دقت مشخصات را تعیین میکنند و کارشان را بررسی میکنند، در برابر سازندگانی که این کار را نمیکنند. ابزاری که برای رسیدن به آن استفاده کردند هرگز واقعاً نکتهٔ اصلی نبود.



