با یه پارادوکسی مواجه هستیم که خیلی مهمه درست درکش کنیم.
وقتی در مورد کارایی که با ایجنتها میکنم پست میذارم، یه سوال رایج اینه که setup و فریمورک و trickهایی که به کار میبری چیه. معمولا جواب نمیدم چون سخته توضیح بدم که برای خیلی از کارها واقعا چیز خاصی ندارم...
یا دوستان لطف دارن و میگن دوره و ورکشاپ برگزار کن. ولی به نظرم setup و trick اون چیزی نیست که فرق اصلی رو میسازه. چیزی که واقعا فرق میسازه یه چیز دیگهست که پایینتر میگم.
حالا تو توییتر dax و DHH این چند روز یه حرفی زدن که خیلی باهاش موافقم: دیگه لازم نیست برای کار با AI یه setup پیچیده و عجیب بچینی. مدلها خودشون خیلی خوب شدن.
تا چند ماه پیش خودم رو خیلی درگیر setupهای پیچیده میکردم. کلی skill، کلی MCP، فایلهای rule چند صفحهای و غیره...
علت اصلیش این بود که مدلهای اون موقع ضعیف بودن، یا بهتره بگم حواسپرت بودن...
مثلا یادش میرفت چی گفتیم، یه چیزی مینوشتیم که یادش بمونه. یا به یه سری چیزای بدیهی دقت نمیکرد و باید rule سفت و سخت براش مینوشتی که درست کار کنه.
الان مدلها هنوز بینقص نیستن، ولی این مشکلا رو خیلی کمتر دارن و بیشتر اون setupها دیگه لازم نیست.
ولی یه چیزی هست که به نظرم همچنان مهمه، و شاید مهمترین مهارتیه که تو استفاده از ایجنتها باید بهش توجه کنیم.
مدل هر چقدر هم باهوش باشه، پروژه شما رو نمیشناسه. نمیدونه چرا فلان کار رو تو تیمتون اینطوری انجام میدید، یا اون قانون عجیب بیزینسی که شفاهیه و هیچجا داکیومنت نشده از کجا اومده. این چیزا رو باید یه جا براش بنویسید. این دیگه «جبران ضعف مدل» نیست، اطلاعاتیه که هیچجای دیگه پیداش نمیکنه.
در واقع بزرگترین ضعف بیزینسها الان «حجم خیلی زیاد contextهای شفاهیه» که هیچجا نوشته نشده جز ناخودآگاه آدمها، و تا این حل نشه ایجنتها بهرهوری کافی نخواهند داشت.
برای همین مهمترین کاری که معمولا میکنم اینه که نیازمندی رو کامل و شفاف کنم، هم از نظر بیزینسی هم فنی.
نکته مهم دیگه deterministic validationهاست. یعنی تستهایی که سیستماتیک قوانین بیزینس رو چک میکنن. ایجنت الان خیلی سریع کد مینویسه، و دقیقا برای همین باید بتونی سریع و مطمئن چک کنی درست نوشته یا نه. هر چی ایجنت سریعتر بشه، تست مهمتر میشه.
یه نکته مهم دیگه هم اینه که درک عمیق مسائل high level مهندسی نرمافزار، که اگه از ابعاد مختلف جمعشون کنی خیلی زیادن، همچنان تو کیفیت خروجی ایجنتها تعیینکنندهست. ابزار سادهتر شده، ولی هنوز باید بدونی داری چی میسازی. پس از نظر من بالا بردن دانش مهندسی نرمافزار خیلی مهمه.
چیزی که لازم نیست، micromanage کردن ایجنتهاست. این به معنی رها کردن کار نیست، ولی دخالت بیش از حد و وسواسی عملا سرعت ایجنت رو ازش میگیره.
حالا پارادوکس کجاست؟
اینجا که اگه بخوایم ایجنت بهترین عملکردش رو داشته باشه، بهتره ما مثل کسی رفتار کنیم که هیچی از مهندسی نرمافزار نمیدونه. اینطوری بدون ترس و وسواس، ماکزیمم پتانسیل ایجنت رو به کار میگیریم. اما برای اینکه چیزی که ایجنت میسازه واقعا درست باشه و اصطلاحا slop نباشه، باید خودت دید فنی و محصولی درستی داشته باشی.
و وقتی دید فنی و محصولی داری، همهش میخوای تو کار ایجنت دخالت کنی و کمکم میری سمت وسواس و micromanage کردن.
به نظرم باکیفیتترین محصولات نرمافزاری رو الان مهندسهایی میسازن که این پارادوکس رو تو نقطه تعادلش نگه دارن. یعنی تصمیمهای مهم مهندسی رو تو نقاط حیاتی life cycle توسعه خودشون بگیرن، و بقیه پروسه رو بسپرن به ایجنتها.
https://x.com/dhh/status/2107823432205484040
@gocasts
Post #832
829