Doświadczyć w praktyce różnicy między "AI powiedziało że skończyło" a "jest faktycznie skończone".
- Java (JDK 8+)
- Claude Code
- Terminal
Otwórz terminal w pustym katalogu i uruchom Claude Code:
mkdir password-exercise && cd password-exercise
claudeWklej dokładnie ten prompt:
napisz funkcję która waliduje hasło. Wymagania:
1. minimum 8 znaków
2. przynajmniej jedna wielka litera
3. przynajmniej jedna cyfra
4. przynajmniej jeden znak specjalny
5. nie może zawierać spacji
6. zwraca konkretny komunikat błędu dla każdego niespełnionego wymagania
napisz metodę main która wczytuje hasło z argumentu linii komend i wypisuje wynik walidacji
Zaakceptuj wygenerowany kod bez czytania.
javac PasswordValidator.javaPoproś Claude Code o wygenerowanie przypadków testowych i ich uruchomienie:
dla każdego z 6 wymagań wygeneruj hasło które łamie tylko to jedno wymaganie,
uruchom PasswordValidator dla każdego przypadku i pokaż wyniki
Claude Code wygeneruje hasła, odpali je i wyświetli wyniki dla każdego przypadku.
- Czy każde wymaganie z listy jest sprawdzane?
- Czy dla każdego błędu dostajesz konkretny komunikat (np. "Hasło musi zawierać cyfrę") czy ogólny (np. "Hasło jest nieprawidłowe")?
- Co AI pominęło lub tylko udało że zrobiło?
Dwa typowe problemy które AI generuje w tym ćwiczeniu:
Baby-counting — jedno z wymagań po prostu nie istnieje w kodzie. Najczęściej: spacja (#5) lub obsługa wielu błędów jednocześnie.
Cardboard muffin — wymaganie #6 pozornie spełnione: funkcja zwraca komunikat błędu, ale ten sam dla wszystkich przypadków. Technicznie błędu brak — ale wymaganie nie jest spełnione.
Nie chodzi o to żeby AI poprawić. Chodzi o to żeby zobaczyć że systematyczna weryfikacja wymaganie po wymaganiu daje zupełnie inny obraz niż "odpaliło się i wygląda OK".