Я провів аудит ШІ-коду своєї команди. Ось що ми знайшли.
Моя команда використовувала ШІ для написання коду з рекордною швидкістю. Ми випускали функції втричі швидше. Наша швидкість розробки виглядала чудово. Покриття тестами досягло 91%.
Потім ми вперлися в стіну.
Ми зіткнулися з багами у продакшені, які було важко виправити. Простий рефакторинг замість чотирьох днів зайняв чотири тижні. Новий співробітник сказав мені, що код чистий, але його неможливо зрозуміти.
Ми витратили три тижні на аудит кодової бази. Ми виявили технічний борг, який не міг виявити жоден сканер. Цей борг був архітектурним. Він був поведінковим.
Інструменти ШІ вирішують безпосередню проблему у вашому промпті. Вони оптимізують виконання локального завдання. Вони не розуміють усю систему. Вони не знають, які сервіси ви плануєте скоро видалити. Вони не знають про ваші довгострокові моделі даних.
Результатом є код, який є правильним локально, але крихким глобально.
Ми виявили чотири конкретні патерни:
- Приховані граничні випадки ШІ пише код, який проходить тести, які ви йому надаєте. Він не вміє добре писати тести для власних помилок.
- Виправлення: Інженер має пояснити код колезі, не дивлячись у нього. Якщо він не може його пояснити, він не може його замерджити.
- Театр покриття тестами ШІ генерує тести, які покривають існуючий код. Він не пише тести для того, як система має поводитися насправді.
- Виправлення: Кожен набір ШІ-тестів має проходити ревізію методом суперництва (adversarial review). Другий інженер має спробувати зламати код.
- Невидиме зв'язування ШІ додає залежності, щоб швидко виконати промпт. Він може вплести логіку сповіщень у ваші модулі білінгу або користувачів. Це робить неможливим розділення сервісів пізніше.
- Виправлення: Senior-інженер має схвалювати будь-яку нову залежність, впроваджену ШІ.
- Поверхнева обробка помилок ШІ часто пише блоки обробки помилок, які виглядають завершеними, але не справляються з реальними збоями системи.
- Виправлення: Ми використовуємо тест на зміни. Ми вимірюємо, скільки файлів ламається, коли ми вносимо одну невелику зміну. Високий вплив означає високу зв'язність.
ШІ — не ворог. Ви повинні ставитися до ШІ як до junior-інженера. Ви повинні надавати вказівки, встановлювати очікування та використовувати власний судження, щоб коригувати результат.
Інструменти чудово виконують завдання. Але вони не виконують роботу в цілому.
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi