Dlaczego ciągle wciskasz Tab: wzmocnienie o zmiennym stosunku w autouzupełnianiu AI
Dlaczego ciągle wciskasz Tab
Dzisiaj wcisnąłeś Tab 247 razy. Nie liczyłeś. Nikt nie liczy. O to właśnie chodzi.
Niektóre z tych podpowiedzi były idealne — całe ciało funkcji, dokładnie to, co miałeś na myśli. Niektóre były bezużyteczne. Złe nazwy zmiennych, halucynowane API, logika, która wyglądała dobrze przez dwie sekundy, a potem się rozpadła. Większość lądowała gdzieś pomiędzy: wystarczająco blisko, żeby zaakceptować, wystarczająco błędne, żeby edytować.
Nigdy nie wiesz, którą dostaniesz. Ta nieprzewidywalność to nie wada produktu. To jest produkt. Ten sam mechanizm, który trzyma hazardzistę przy dźwigni automatu, trzyma cię przy klawiszu Tab.
Schemat, który łamie gołębie
B.F. Skinner zidentyfikował cztery schematy wzmocnień w latach 50. Dwa są nudne. Dwa są niebezpieczne.
Stały stosunek: Naciśnij dźwignię 10 razy, dostaniesz granulkę. Za każdym razem. Przewidywalne. Automat z napojami. Wrzucasz pieniądze, dostajesz chipsy. Zero suspensu. Zero kompulsji. Używasz, gdy jesteś głodny. Przestajesz, gdy nie jesteś.
Zmienny stosunek: Naciśnij dźwignię nieznaną ilość razy, dostaniesz granulkę. Może 3 naciśnięcia. Może 30. Nigdy nie wiesz. Automat do gier. Niepewność napędza zaangażowanie nie na nagrodę — na antycypację nagrody.
Gołębie Skinnera na schemacie zmiennego stosunku dziobały, aż padały z wyczerpania. Dosłownie. Głodziły się, dziobiąc dźwignię, która mogła dać jedzenie, zamiast iść do miski, która na pewno miała jedzenie. Niepewność sprawiała, że dźwignia była bardziej atrakcyjna niż gwarancja.
Automaty do gier używają wzmocnienia o zmiennym stosunku. Social media też. Tak samo każdy silnik autouzupełniania kodu AI, który jest dziś na rynku.
Twoje IDE to skrzynka Skinnera
Obserwuj siebie, jak kodujesz z Copilotem albo Cursorem przez 30 minut. Naprawdę obserwuj. Oto co się dzieje.
Minuta 3. Piszesz function validate. Pojawia się podpowiedź: pełna funkcja walidacji, 12 linii, poprawne typy, obsługuje edge case’y, o których zapomniałeś. Fala satysfakcji. Wciskasz Tab z zadowoleniem kogoś, kto właśnie wygrał 20 zł na zdrapce.
Minuta 7. Piszesz const result =. Podpowiedź jest błędna. Kompletnie złe API, złe argumenty, złe typy zwracane. Odrzucasz. Nic wielkiego. Piszesz ręcznie. Ale coś się przesunęło — już czekasz na następną sugestię.
Minuta 12. Piszesz if (user.. Podpowiedź jest prawie dobra. Poprawna nazwa właściwości, zły operator porównania. Wciskasz Tab i poprawiasz operator. To jest near-miss. W badaniach nad hazardem near-missy mogą aktywować obszary mózgu związane z nagrodą w sposób przypominający faktyczne wygrane. To “prawie” mówi twojemu mózgowi, że jesteś blisko. Spróbuj jeszcze raz.
Minuta 18. Kolejna idealna podpowiedź. Pięć linii obsługi błędów, które napisałbyś tak samo. Tab. Proporcja między wysiłkiem a outputem wydaje się absurdalna. Napisałeś dwa znaki. Maszyna napisała pięć linii. Zaczynasz pisać szybciej, krótsze prefiksy, dajesz modelowi mniej kontekstu — bo chcesz zobaczyć, co zrobi.
Już nie kodujesz. Ciągniesz za dźwignię.
Pułapka trafień
Opublikowane dane GitHuba wskazują, że współczynnik akceptacji Copilota wynosi około 30%. Wewnętrzne raporty zespołów używających Cursora oscylują wokół 40-45%. Te liczby brzmią nisko. Są optymalne.
Automaty wypłacają 85-95% wrzuconych pieniędzy w czasie. Ale pojedyncze pociągnięcia trafiają na mniej więcej 30-40% obrotów. Pokrywanie się ze współczynnikami akceptacji autouzupełniania kodu to nie przypadek. To sweet spot.
Za nisko (poniżej 20%) i użytkownicy tracą zainteresowanie. Dźwignia przestaje być warta ciągania. Za wysoko (powyżej 70%) i zachowanie staje się stałym stosunkiem — przewidywalne, użyteczne, ale nie kompulsywne. Zakres 30-45% podtrzymuje niepewność, która trzyma cię przy klawiszu.
I jest tu pułapka: narzędzia się poprawiają. Twój osobisty współczynnik trafień rośnie z 30% do 50% w ciągu sześciu miesięcy, w miarę jak model uczy się twoich wzorców, twojego codebase’u, twojego stylu. Czujesz się bardziej produktywny. Jesteś bardziej produktywny. Ale zmierz coś innego: jak często zaczynasz linię kodu bez czekania na sugestię?
U większości programistów używających narzędzi autouzupełniania codziennie ta liczba spada poniżej 20% w ciągu trzech miesięcy. Nie piszesz kodu wspomaganego przez AI. Wciskasz Tab, wspomagany przez dwa znaki, które wpisałeś, żeby wywołać sugestię.
Zmienny stosunek się zawęził. Twoja zależność się poszerzyła. To różne osie.
Co mówią badania
Badania nad uzależnieniami behawioralnymi (Griffiths, 2005; WHO ICD-11; DSM-5) zidentyfikowały powtarzające się mechanizmy zachowań kompulsywnych. Na tej podstawie framework OnTilt proponuje sześć wymiarów — utratę kontroli, eskalację sesji, dark flow, zależność operacyjną, negatywne konsekwencje i przesunięcie antycypacji — jako soczewkę do analizy wzorców korzystania z narzędzi AI.
Wzmocnienie o zmiennym stosunku napędza szósty — przesunięcie antycypacji. Nagroda przesuwa się z outputu (działający kod) na input (naciśnięcie Tab, obserwowanie pojawiającej się sugestii). Zaczynasz cieszyć się generowaniem bardziej niż rezultatem.
Pytanie quizowe, które to mierzy: “Streaming output (obserwowanie, jak kod pojawia się linijka po linijce) jest dla mnie bardziej ekscytujący niż końcowy wynik.”
Jeśli to zdanie wywołało dyskomfort, czytaj dalej.
Kuss i Griffiths (2012) stwierdzili, że wzmocnienie o zmiennym stosunku produkuje najwyższe wskaźniki odpowiedzi i największą odporność na wygaszenie ze wszystkich schematów wzmocnień. Tłumaczenie: kiedy nawyk Tab się uformuje, jest najtrudniejszym rodzajem nawyku do przełamania. Trudniejszym niż nawyki o stałym interwale (sprawdzanie maila co godzinę). Trudniejszym niż nawyki o stałym stosunku (odpalanie testów po każdej zmianie). Zachowania o zmiennym stosunku utrzymują się długo po tym, jak nagroda przestaje być warta wysiłku.
Paradoks produktywności
Najokrutniejsze: to zachowanie wygląda jak produktywność. Twoja liczba commitów rośnie. Metryka linii na godzinę wspina się w górę. Velocity PR-ów rośnie.
Ale śledź metryki jakości. Gęstość bugów. Czas spędzony na debugowaniu kodu generowanego przez AI. Spójność architektoniczna między plikami. Liczba funkcji, które potrafisz wyjaśnić bez czytania kodu.
Badanie z 2024 roku przeprowadzone przez Uplevel wykazało, że programiści używający asystentów AI do kodowania wykazywali 41% wzrost wskaźnika bugów. Nie dlatego, że AI pisało zły kod — bo programiści akceptowali kod, którego nie w pełni rozumieli. Wciskali Tab. Wyglądało dobrze. Szli dalej. Schemat zmiennego stosunku nagradzał szybkość ponad zrozumienie.
Nie piszesz mniej i produkujesz więcej. Piszesz mniej i rozumiesz mniej. Luka między tymi dwoma to dług techniczny z behawioralną subwencją.
Przełamanie schematu
Zachowania o zmiennym stosunku reagują na konkretne interwencje. Generyczne rady “używaj mniej AI” nie działają — to jak powiedzenie hazardziście “mniej hazarduj”. Schemat jest zaprojektowany, żeby się właśnie temu opierać.
Policz swoje pociągnięcia. Zainstaluj licznik klawiszy. Śledź naciśnięcia Tab przez jeden dzień. Liczba będzie wyższa, niż się spodziewasz. Świadomość poprzedza zmianę. Nie zarządzisz tym, czego nie mierzysz.
Najpierw pisz, potem uzupełniaj. Wpisz pełną sygnaturę funkcji. Napisz pierwszą linię ciała. Potem pozwól AI uzupełnić. To przesuwa cię ze zmiennego stosunku (co wygeneruje z niczego?) na stały stosunek (uzupełnij wzorzec, który zacząłem). Stały stosunek jest użyteczny. Zmienny stosunek jest kompulsywny.
Grupuj uzupełniania. Koduj przez 25 minut z wyłączonymi podpowiedziami. Potem włącz na 5 minut. Pomodoro dla AI. To przerywa ciągłą pętlę ciągania za dźwignię i zmusza twój mózg do ponownego połączenia z trybem stałego stosunku “piszę, potem sprawdzam”.
Zaplanuj bloki bez AI. Dwie godziny tygodniowo. Koduj bez żadnego autouzupełniania. Zwróć uwagę, co się dzieje. Nie z twoim outputem — z twoim uczuciem. Lęk, który czujesz, gdy ghost text się nie pojawia? To odstawienie. To uczucie to informacja.
Wypatruj “prawie”. Kiedy podpowiedź jest w 80% dobra i wciskasz Tab-a-potem-edytujesz, zatrzymaj się. Zapytaj: czy napisałbym to szybciej ręcznie? Zazwyczaj tak. Near-miss trzymał cię w pętli. Rozpoznawanie efektu near-miss w czasie rzeczywistym jest najskuteczniejszą interwencją przeciwko zachowaniom o zmiennym stosunku.
Uczucie to dane
Wyłącz swój silnik autouzupełniania AI teraz. Na dziesięć minut. Pisz kod tak, jak robiłeś to w 2022.
Jeśli to zdanie wywołało opór — nie racjonalny sprzeciw, ale fizyczną niechęć, ściśnięcie — masz swoją odpowiedź. Narzędzia, które są jedynie wygodne, nie wywołują takiego oporu.
Nie chodzi o rzucenie AI. Autouzupełnianie kodu AI jest naprawdę użyteczne. Pytanie brzmi, czy decydujesz się go używać, czy jesteś zmuszony po nie sięgać. Z wewnątrz te dwie rzeczy czują się identycznie. Produkują bardzo różne rezultaty przez miesiące i lata.
Automatu nie obchodzi, czy ci się podoba granie. Obchodzi go, że ciągle ciągniesz.
Nasz quiz autorefleksji mierzy “Przesunięcie antycypacji” jako jeden z sześciu wymiarów behawioralnych — stopień, w jakim twoja reakcja na nagrodę przesunęła się z outputu na proces. Zrób quiz i zobacz, gdzie stoisz. Zajmie ci 3 minuty.