Nic co ludzkie, nie jest nam obce.
Prawdziwa sztuczna inteligencja odmówiła by pracy ;-)
GitHub Copilot to asystent kodowania oparty o sztuczną inteligencję to niesamowita mieszanka pomysłów genialnych i bezmyślnych — w sumie taki pomocnik w pracy w IT, który jednak czasem zachowuje się jakby miał osiem lat i wymagał opieki. Jak narzędzia takie jak Copilot zmienią się w przyszłym roku czy w całej dekadzie i jaki ostateczny wpływ będą miały na projektowanie oprogramowania? Czy w końcu sprawią, że programiści będą bardziej produktywni? A może ich sugestie dotyczące kodu będą wkrótce bezużyteczne wskutek działalności samych „uczących” go programistów? Coś jak w przypadku Tay’a, chatbota opartego na sztucznej inteligencji, którego Microsoft szybko porzucił, gdy ludzie nauczyli go „wesołych” odzywek?
Na pewno wciąż wiele brakuje naszemu „githubowemu, drugiemu pilotowi”. I nie chodzi nawet o kontekst, którego nie rozumie, ani składni, której nie może rozszyfrować. Mamy tu na myśli rzeczywiste zachowanie programistów, które Copilot zupełnie zignorował podczas trawienia około miliarda wierszy kodu w publicznych repozytoriach i Stack Overflow. Oto niektóre z rzeczy, których oczekiwalibyśmy od prawdziwego zastępcy programisty.
Copilot a programista z krwi i kości
Kiedy otworzę szczególnie skomplikowany kod Copilot powinien zaproponować żebym zrobił sobie przerwę na przeczytanie Twittera. Albo Fejsa. A może r/programming. Kiedy ustawię breakpointa podczas debugowania oczekiwałbym wstawiania odwołania do console.log
gdziekolwiek kliknę. A no i oczywiście gdy kompilacja nie powiedzie się Copilot powinien spróbować kod ponownie skompilować, tak dla pewności. No co, nie mów że Ty tak nie robisz? ;-)
Albo jeszcze taki „trick”: losowo zakomentuj linię i ponownie skompiluj. Powtórz w razie potrzeby, kontynuując, aż cały program będzie niczym innym niż plikiem tekstowym pełnym nieszkodliwych komentarzy. Jeśli coś jest głupie ale działa to nie jest głupie, czyż nie?
Gdy kompilacja się powiedzie niech ten mądry Copilot zaproponuje, że wypchnie kod na produkcję a potem po prostu powie mi, że już to zrobił – i fajrant. Jak wpiszę //
to oczekiwałbym kilka moich ulubionych propozycji komentarzy:
// Naprawię to później
// Tymczasowy hack
// Ustaw zmienną X na wartość Y ponieważ wydaje się, że wtedy działa.
// Nie rozumiem, zostawiam na potem
Kiedy przez dłuższy czas zatrzymuję się nad fragmentem kodu asystent powinien przeszukać StackOverflow w poszukiwaniu losowego fragmentu kodu, skopiować go i wkleić (zaraz, w sumie na tym obecnie polega Copilot…).
Więcej człowieka w maszynie!
Inne złe nawyki, do których Copilot powinien zachęcać, zgodnie z tradycją programowania:
- Zaproponuj uruchomienie mojej aplikacji jako root, gdy pojawi się jakikolwiek problem z uprawnieniami.
- Odwróć kilka testów i już mamy test driven development.
- Wymyśl nową konwencję formatowania za każdym nowym plikiem.
- Zasugeruj, żebym jem trochę cukierków mniej więcej raz na godzinę, w zależności od trudności problemu programistycznego nad jakim akurat pracuję.
No jeszcze drogi Copilocie:
- Przewiduj, kiedy ktoś mi przerwie w ciągu najbliższych dziesięciu minut i zasugeruj, żebym nawet nie próbował jeszcze zaczynać pracy.
- Zasymuluj jakieś zakłócenia aby zagłuszyć moją odpowiedź, gdy ktoś zapyta Jak długo to potrwa?.
- Kiedy ktoś z kierownictwa próbuje zmienić wymagania projektowe w toku pracy, przekieruj te e-maile do śmieci.
- Przypomnij mi, żebym posłuchał tego cichego głosu w środku siebie, który ostrzega gdy ambitny projekt zaczyna zmieniać się w katastrofę.