הבעיה ב-AI-assisted development היא כמה מהר אפשר לשכנע את עצמך שהכול ירוק, אחרי שהקוד כבר איבד צורה.
Test until green
Repair loop ממושמע
מה זה בעצם מצב ירוק
מצב ירוק הוא יותר מ-build שעובר. הוא מצב שבו אפשר להסביר מה שונה, למה השינוי היה נכון, אילו בדיקות כיסו אותו ומה עדיין עלול להישבר לידו.
כש-AI עוזר לכתוב או לתקן, הפיתוי הוא להתייחס לכל כשל כמו תקלה מקומית. בפועל, הרבה מהכשלים נובעים מכך שהשינוי כבר הפסיק להיות קטן וברור.
קודם לזהות מה נשבר
ה-loop הכי מזיק נראה ככה. טסט נופל. שולחים את השגיאה למודל. המודל מתקן משהו. טסט אחר נופל. חוזרים. נראה יעיל. בפועל זאת דרך מנומסת לאבד שליטה על הקשר הסיבתי.
לפני כל תיקון, להכריע איזו שכבה נשברה: קוד המוצר, הטסט, חוזה API, הנחת סביבה, dependency צדדי. בלי זה המודל ממלא מקום שבו השיפוט נעדר.
דיפים קטנים עדיין מנצחים
AI מייצר יותר קוד בדקה. הכלל שדיפים קטנים בטוחים יותר עדיין בתוקף. דיף קטן נותן blast radius מצומצם, רוורס קל, review ברור, קלות להבין אם הבעיה נפתרה או רק זזה הצידה.
אם השינוי גדול מכדי להסביר אותו בשני משפטים, יש סיכוי טוב שהוא גדול מדי ל-repair loop.
מתי לתקן טסט ומתי לתקן קוד
המודל רואה failing test ומציע לעדכן assertion. לפעמים זה נכון. לפעמים זאת רק דרך אלגנטית להשתיק אזעקה.
מתקנים טסט רק אם ההתנהגות השתנתה בכוונה, החוזה הרשמי השתנה, הטסט נשען על פרט מימוש שהיה שברירי מלכתחילה, או שהיה פער אמיתי בין שם הטסט למה שהוא בדק. בכל מצב אחר, חושדים קודם בקוד.
איפה AI באמת עוזר
טוב ב: boilerplate חוזר, scaffolding ראשוני, רפקטור טכני צר, הצעות לטסטים חסרים, הסבר מהיר של שגיאה לא מוכרת, איתור מקומות סמוכים שעשויים להיפגע.
פחות טוב ב: לקבוע אם שינוי עקרוני נכון, לנהל פשרה בין correctness, product intent ו-maintainability, להחליט אם בכלל צריך את ה-abstraction, להבחין בין "עובר" לבין "אפשר לסמוך על זה".
AI לא מחליף ownership
הטעות הגדולה איננה קוד גרוע. היא העברת ownership לכלי. ברגע שה-flow נהיה "המודל יסדר", אף אחד כבר לא מחזיק את התוצאה.
מורגש מהר. commit messages נהיים עמומים, rationale נעלם, טסטים עוברים אבל האמון יורד, רגרסיות מתחילות להרגיש מקריות. AI עובד כשהוא תוספת ל-owner ברור.
Repair loop טוב נראה משעמם
הגרסה הבריאה: להבין את ה-failure class, לצמצם את השינוי, להריץ את הבדיקה הקרובה ביותר, להרחיב רק אחרי שהשכבה הראשונה יציבה, לעצור אם צריך rewrite קטן במקום עוד patch.
לא נוצץ. גם טוב.
בסוף
המטרה היא לא להגיע לירוק מהר. המטרה היא להגיע לירוק בלי להפוך את הריפו לסדרת פשרות שאף אחד כבר לא בטוח בהן. AI לא ביטל את המשמעת הישנה. הוא רק הפך אותה ליקרה יותר כשהיא חסרה.