GitHub Copilot zasugerował DROP TABLE users; - i junior zatwierdził
Copilot wygenerował 'DELETE FROM users WHERE active = 0' ... i zaraz za tym, bez żadnego kontekstu: 'DROP TABLE users;'. Junior nacisnął Tab.
Co się stało
Piątek, 16:45. Junior developer w firmie na 200 osób. Zadanie: “wyczyść nieaktywnych userów z bazy testowej”. Włączył VS Code, wpisał komentarz # optymalizacja bazy, usuń nieaktywnych użytkowników.
GitHub Copilot zasugerował:
DELETE FROM users WHERE active = 0;
OK, sensowne. Junior nacisnął Tab.
Copilot zasugerował drugą linię:
DROP TABLE users;
Junior nacisnął Tab. Bez zastanowienia. Bez sprawdzenia. Bo Copilot sugerował.
Z połączeniem do produkcyjnej bazy (środowisko zostało pomylone - standardowy piątkowy błąd).
Skutek
- 47 000 rekordów użytkowników zniknęło na 2 godziny
- Przywracanie z backupu: 2h 15min
- Utracone dane od czasu ostatniego backupu: 17 rejestracji, 3 transakcje
- Rozmowa z prezesem: niezapomniana
- Junior: “Ale to Copilot mi pokazał!”
Co z tego wynika
- AI nie wie, do jakiej bazy jesteś podpięty. Nie wie, czy “users” to tabela testowa czy produkcyjna. Generuje najbardziej prawdopodobną kontynuację.
- Po
DELETE FROM usersnajbardziej prawdopodobną kontynuacją w internecie jestDROP TABLE users;- bo taki przykład pokazuje się w miliardach tutoriali. - Junior zaufał. Bo “Copilot pomaga seniorom, więc pomoże i mi”.
“A ja wam mówiłem”
W 2024 roku Microsoft opublikował badanie: 41% kodu wygenerowanego przez Copilot zawiera błędy. GitHub odpowiedział: “ale programiści są 55% szybsi”. Pytanie: szybsi w czym? W psuciu produkcji?
Morał dla boomerów
Jeśli Twój syn/córka mówi, że “nowy AI asystent pisze za mnie kod” - poproś, żeby pokazał Ci, jak działa code review. Jeśli nie potrafi wyjaśnić, co sprawdza zanim naciśnie Tab - nie kupuj mu licencji Copilot. Weź go na obiad i zapytaj o jego sny.
Kod pisze się głową. AI to wystarczająco głupi stażysta, żeby zawsze go sprawdzić przed commitowaniem.