Inetum
Odkryj najlepsze AI do programowania w 2025 roku! Których narzędzi używać, a których unikać, by uzyskać najlepsze efekty w programowaniu.
W dzisiejszym artykule przyjrzymy się tematowi, który jest obecnie bardzo na czasie, a mianowicie AI w programowaniu. Sztuczna inteligencja jest coraz bardziej powszechna wśród programistów na różnych etapach tworzenia oraz rozwoju oprogramowania. Kiedy pierwszy raz widziałem AI w akcji, byłem zaskoczony jej możliwościami. Nie było to narzędzie doskonałe, ale mimo wszystko zrobiło na mnie wrażenie.
Na chwilę obecną posiadamy wiele narzędzi, modeli AI oraz bardzo dużo integracji z oprogramowaniem, z którego korzystamy na co dzień, więc każdy znajdzie coś dla siebie. Nieważne, czy programujesz, zajmujesz się marketingiem, czy grafiką – AI jest obecne wszędzie… Zapraszam was do dalszej części artykułu, gdzie porozmawiamy o tym, jak AI w codziennej pracy pozwala programistom przyspieszyć wydajność oraz poprawić jakość i czytelność naszego kodu.
Czy wiesz, że już nawet 76% osób zajmujących się programowaniem korzysta lub planuje używać narzędzi związanych z AI w swojej codziennej pracy? Albo że użytkownicy Copilota wykonywali zadania o około 55% szybciej niż bez AI? Tak wynika z przeprowadzonej przez Stack Overflow w 2024 roku ankiety.
Na chwilę obecną narzędzia AI są już tak zaawansowane, że nie tylko kod generują, ale również wspierają cały cykl tworzenia oprogramowania.
Część z was pewnie ma już swoje ulubione narzędzia, z których korzysta na co dzień. Obecnie najbardziej popularne narzędzia, o których pewnie słyszała większość osób w branży, to GitHub Copilot, ChatGPT (OpenAI) i Amazon CodeWhisperer.
Ta wymieniona trójka to pionierzy wśród asystentów i chatbotów AI, ale na rynku są też inne narzędzia, o których opowiem za chwilę.
Zacznijmy od GitHub Copilota – pioniera wśród asystentów AI, który korzysta z modeli OpenAI. Możemy go zintegrować z popularnym VS Code, dzięki czemu podczas pisania kodu będziemy mieli podpowiedzi bezpośrednio w edytorze.
Kolejnym ciekawym narzędziem, o którym pewnie słyszała większość z was, jest ChatGPT. Chat ten korzysta z modeli OpenAI, czyli tak samo jak Copilot, ale z tą różnicą, że nie jest on zintegrowany z edytorami. Pomoże ci napisać fragmenty kodu albo rozwiązać jakiś problem związany z kodem.
Z topowej trójki zostaje nam jeszcze CodeWhisperer od Amazon. Jest to swojego rodzaju asystent do programowania z użyciem usług takich jak AWS i nie tylko, więc jeśli zajmujesz się tematyką chmurową, to myślę, że warto go sprawdzić!
Poza tymi, które wymieniłem, są jeszcze inne narzędzia. Zacznijmy od Tabnine. Narzędzie to jest oparte na autouzupełnianiu i, co najważniejsze, może działać jako self-hosted, gwarantując, że nasz kod nigdzie nie wypłynie.
Możliwe, że część użytkowników słyszała o darmowej alternatywie dla Copilota, a mianowicie Codeium. Użytkownicy bardzo chwalą narzędzie, że działa całkiem przyzwoicie jako alternatywa, zapewnia automatyczne uzupełnianie i sugestie kodu, które wcale nie ustępują komercyjnym rozwiązaniom.
Ostatnim z popularnych AI, tym razem od Google, jest Gemini Code Assist. Narzędzie to potrafi zrobić nawet code review, więc jeśli szukasz AI, które wstępnie sprawdzi twój kod, to może warto spróbować?
Jak widzisz, mamy tutaj całkiem sporo narzędzi i ciężko jest jednoznacznie stwierdzić, które narzędzie będzie dla ciebie odpowiednie, a jeszcze trudniej wskazać, które będzie najlepsze z nich wszystkich. Każdy z nas oczekuje czegoś innego. Jedni będą pracować z technologiami AWS i wybiorą CodeWhisperer, a ktoś inny postawi na privacy-first i wybierze Tabnine. Znajdą się też osoby, dla których wystarczy chatbot, i wybiorą ChatGPT. W mojej ocenie każde z tych narzędzi na pewno pomoże ci w codziennej pracy.
Z narzędzi wymienionych do generowania kodu mamy dostępnych kilka opcji, ale zawsze trzeba zwracać uwagę na to, czy będziemy z nich korzystać hobbystycznie, czy realizując projekt komercyjny.
Większość narzędzi jest darmowa dla użytkowników indywidualnych, a za lepsze wersje lub dodatki trzeba po prostu zapłacić.
Są też inne narzędzia wymienione wcześniej takie jak GitHub Copilot, Tabnine, które są co prawda bezpłatne w podstawowej wersji i będą nam generowały kod, ale jeśli oczekujemy od nich czegoś więcej, to trzeba wykupić pełny plan lub specjalną subskrypcję, więc nie są w pełni darmowe.
Tak naprawdę, jeśli tworzymy coś hobbistycznie i w mniejszej skali, to większość tych narzędzi będzie dla nas dostępna za darmo (z większymi lub mniejszymi limitami). Wszystko zależy więc od licencji, i od tego, do czego użyjemy danego narzędzia. Pamiętajmy też o tym, że to, co w momencie pisania artykułu jest darmowe, za miesiąc może już nie być, bo licencja się zmieni, więc warto sprawdzić to na własną rękę przed instalacją.
Większość narzędzi, które wcześniej wymieniałem, posiada integracje z popularnymi edytorami np. (VS Code) lub IDE. Github Copilot może zostać włączony bezpośrednio w VS Code, dzięki czemu możemy się cieszyć podpowiedziami w kodzie właściwie od razu.
Copilot Chat pozwala za to zadawać pytania o kod, a Copilot w trybie „agent” wykonuje już złożone polecenia, np. uruchamia unit testy.
Tak jak widzimy, mamy cały wachlarz możliwości – od chatu w VS Code, poprzez autouzupełnianie kodu, na uruchamianiu unit testów czy modyfikowaniu całych plików kończąc. Dodatkowo pamiętajmy, że z powyżej wymienionych mamy narzędzia, które nie wysyłają kodu na zewnętrzne serwery, więc nawet przy projektach o wysokich wymaganiach bezpieczeństwa nasze zespoły security będą zadowolone, a dzięki temu będziemy mogli korzystać z AI.
AI to nie tylko generowanie kodu komponentów i rozwiązywanie codziennych problemów w kodzie. Na chwilę obecną AI potrafi przeanalizować istniejący kod w poszukiwaniu błędów lub celem sugerowania innych usprawnień. Powiem więcej, zrobi refaktoryzację i code review! Możemy ustawić takie narzędzie AI jako dodatkowego „recenzenta” naszego kodu, który wykrywa np. podejrzany kod marnej jakości, czyli tzw. „code smells”, a nawet luki w bezpieczeństwie.
Dla przykładu, Gemini Code Review wykona analizę pull requesta i podkreśli fragmenty, na które warto zwrócić uwagę i ewentualnie je poprawić.
Jeśli korzystasz z GitHuba i jego rozwiązań, to Gemini Code Assist wyłapie nawet niespójności w konwencji kodowania i sprawdzi, czy ich przestrzegasz.
Tak jak widzisz, temat jest bardzo rozległy, i jeśli dobrze dobierzemy narzędzia AI, to możemy uniknąć wielu roboczogodzin przy sprawdzaniu tego typu rzeczy podczas rozwoju oprogramowania. AI wyłapie te niuanse za nas, a my będziemy mogli skupić się na innej pracy.
1. Sprawdzaj
Zasada numer jeden, której według mnie należy przestrzegać, to ta, że AI ma ci pomóc w „nakierowaniu” na rozwiązanie twojego problemu. Pamiętaj, aby zweryfikować wszystko, co podpowie ci AI, bo nie zawsze odpowiedzi, które otrzymasz, będą prawidłowe. Jeśli już zastosujesz się do powyższej zasady, to możemy przejść dalej.
Słyszałem już od wielu osób, że AI bardzo pomaga w pisaniu testów jednostkowych, przynajmniej we frontendzie. Pisanie testów jednostkowych do najprzyjemniejszych nie należy, a w wielu przypadkach trzeba napisać bardzo dużo powtarzającego się kodu typu boilerplate. AI wygeneruje ci unit testy bardzo szybko i zaoszczędzisz przy tym sporo czasu na development, ale pamiętaj – zawsze weryfikuj to, co dostarcza ci AI.
2. Postaw na iteracyjną refaktoryzację
Kolejną rzeczą, do której według mnie AI sprawdzi się na co dzień, jest iteracyjna refaktoryzacja i ulepszanie twojego kodu. Wiesz, jak wygląda kod, w którym ktoś dopisał kawałek kodu w pośpiechu, bez większego zastanowienia, aby tylko działało? Czasami taki kod jest zupełnie nieczytelny, albo dochodzi do wielu zagnieżdżeń i tzw. ifologii. W takim przypadku AI poprawi to za ciebie i zasugeruje ci optymalne rozwiązanie. Pozbędziesz się w ten sposób mało czytelnego kodu, a twoje funkcje będą bardziej przejrzyste, kod ładnie sformatowany, a pull request dla osób robiących ci review – przyjemniejszy do czytania.
3. Bądź elastyczny
Pamiętaj, że AI nie zwalnia z samodzielnego myślenia, a najlepsze efekty osiągniesz, gdy będziesz weryfikować, ale i stosować pomysły, które według ciebie sprawdzą się w danym projekcie.
Tutaj trzeba wybrać, co jest odpowiednie w danej chwili.
Ja osobiście dostrzegam tutaj dwie główne korzyści – oszczędność czasu na prostych i powtarzalnych zadaniach oraz zwiększenie produktywności. AI świetnie sprawdza się przy generowaniu powtarzalnego i żmudnego kodu typu boilerplate, więc możemy ten czas poświęcić na coś bardziej kreatywnego.
Druga rzecz to produktywność – taki asystent może sprawić, że zajmiemy się trudniejszymi zadaniami, a te proste oddamy AI, więc będziemy też bardziej produktywni.
Ważną i niedocenianą rzeczą jest też fakt, że AI dobrze radzi sobie z dokumentacjami. Nie musimy już walczyć z przeszukiwaniem internetu czy dokumentacji, aby znaleźć jakieś informacje – AI zrobi to dużo szybciej. Dzięki temu możemy poświęcić się pracy bardziej kreatywnej, czyli skupić się np. na architekturze aplikacji, a nie na powtarzalnej i nudnej „drobnicy”.
Jednym z największych problemów związanych z AI jest to, że doświadczają tzw. halucynacji. To, co czasami wydaje się na pierwszy rzut oka poprawne, po głębszej analizie może (ale nie musi) zawierać błędy logiczne, albo może robić coś zupełnie innego, niż oczekujemy.
Jeśli porcja kodu, którą dostaliśmy od AI, jest duża, to może zdarzyć się, że będzie to trudne do wykrycia. Jeśli nie masz dobrych unit testów, to możesz nawet nie zdawać sobie sprawy, że AI właśnie dodało ci błąd w kodzie, albo, co gorsza, wprowadzić podatność bezpieczeństwa, z której nawet nie zdajesz sobie sprawy.
Kolejną pułapką jest spadek umiejętności osób, które korzystają z AI na co dzień. Jeśli będziemy zdawali się wyłącznie na AI i jesteśmy na początkującej drodze, to nasze kompetencje mogą ulec zanikowi albo nie zrobimy takiego progresu, jaki byśmy chcieli. Nie oszukujmy się, ale jeśli ktoś dostaje gotowe rozwiązanie, to jest duża szansa, że nie nauczy się tego na własną rękę i nie będzie potrafił wyjaśnić logiki działania wygenerowanego kodu. Nie mówię tutaj tylko o AI, ale generalnie o tzw. gotowcach. Krótkoterminowo raczej nikt na tym nie ucierpi, ale zastanowiłbym się, czy przy długofalowym korzystaniu z tego narzędzia nasze umiejętności rozwiązywania problemów nie spadną drastycznie.
Zalecałbym szczególnie juniorom, aby analizowali kod i pisali go samodzielnie, a to, co wygeneruje AI, traktowali bardziej jak odpowiedź na Stack Overflow, czyli bardziej jako sugestię i materiał do dalszego researchu.
Na koniec pamiętajmy też o kwestiach prawnych. Nie od dzisiaj wiadomo, że chatboty i inne generatory kodu uczą się na „cudzym” kodzie, który jest np. publicznie dostępny. Zawsze sprawdzajmy i czytajmy polityki prywatności i licencje, aby wiedzieć, co udostępniamy AI, ale jednocześnie też uważajmy na to, co samo AI nam dostarcza, aby nie otrzymać kodu łudząco podobnego do jakiegoś fragmentu z np. open source. Pamiętajmy też o aspektach security i polityce firmy, bo chyba nie chcemy, aby nasze poufne hasła czy klucze API krążyły w sieci, bo były przez nas używane w promptach, a co za tym idzie, mogły zostać użyte do trenowania modeli, prawda?
Ilość narzędzi AI oraz różnego rodzaju asystentów potrafi przytłoczyć, a podejrzewam, że to dopiero początek. Spróbujemy zaraz porównać kilka modeli AI oraz narzędzi, które posłużą nam do programowania i codziennej pracy z kodem.
Obecnie na rynku mamy sporo popularnych modeli AI oraz asystentów programowania, ale generalnie ich cel jest zbliżony – mają ułatwić i przyspieszyć pisanie kodu. Jeśli chodzi o główne różnice, to za wszystkim stoją różne modele językowe i firmy, które nad nimi pracują.
Przykładowo, GitHub Copilot korzysta z OpenAI, CodeWhisperer od Amazon jest trenowany na kodzie źródłowym open-source, a inne narzędzia korzystają z własnych modeli, które możemy uruchomić lokalnie (Tabnine), więc mamy tutaj alternatywę dla usług chmurowych.
I teraz pewnie część z was się domyśli, że OpenAI będzie nam płynnie odpowiadał w wielu językach, a CodeWhisperer będzie z kolei lepszy w kontekście AWS, bo na takich danych był trenowany. Tak właśnie jest z tymi narzędziami – takie są subtelne różnice między nimi.
Różnice, które dostrzegamy gołym okiem, będą dla nas widoczne w integracjach i ekosystemie. Mamy z jednej strony chatboty bez możliwości wejścia w kontekst projektu (chociaż są pluginy pod ChatGPT, które integrują go z edytorem), a z drugiej strony mamy Tabnine, CodeWhisperer i Gemini jako wtyczki bezpośrednio pod IDE, które dają podpowiedzi na żywo w kodzie.
Warto też zwrócić uwagę na licencję i koszty, i tutaj, jak się pewnie domyślacie, mamy dużą rozpiętość – od darmowych po bardzo drogie. Jeśli chodzi o mnie, to chyba poleciłbym któreś z tych darmowych i najbardziej dostępnych AI – Gemini lub Codeium. Dają praktycznie nieograniczone możliwości korzystania z AI bez opłat, co może być decydującym czynnikiem w niektórych przypadkach.
Z drugiej strony firma może chcieć wykorzystać narzędzie, które będzie zgodne z politykami wewnętrznymi i wtedy trzeba będzie zapłacić więcej (np. Tabnine on-premise ze względów bezpieczeństwa).
Jak widzicie, mamy tutaj spore różnice, jeśli chodzi o modele, narzędzia, pluginy oraz modele subskrypcji i licencji. Generalnie, jeśli chodzi o samą funkcjonalność, to jest ona bardzo podobna – dostajemy wygenerowany kod na podstawie prompta, ale czasami mamy możliwość skorzystania z dodatkowych funkcjonalności, takich jak np. agent mode w Copilot.
W trybie agent mode AI nie tylko podpowiada nam kod, który chcemy dodać, ale też może modyfikować całe pliki projektu i wykonywać dodatkowe czynności, np. uruchamiać komendę do unit testów. Ciekawe, prawda?
Wyobraź sobie, że masz pod ręką wirtualnego asystenta, który robi również np. code review. Właśnie tak w skrócie działa Gemini Code Assist. Jeśli tworzysz projekt hobbistyczny, jest on dostępny od Google całkowicie za darmo, a do tego oferuje bardzo wysokie limity miesięczne, których raczej w standardowej sytuacji nie będziesz w stanie wykorzystać.
Google zadbało również o to, aby dostroić asystenta do zadań stricte programistycznych, ponieważ był trenowany na rzeczywistych przypadkach kodowania. Wyróżniającą cechą jest także fakt, że Gemini potrafi czytać bardzo duży kontekst naraz. Oznacza to, że można mu przekazać cały kod źródłowy do analizy, co stanowi bardzo duży krok naprzód w porównaniu do innych narzędzi.
Jeśli szukasz wsparcia w pisaniu kodu w edytorze za pomocą AI, chcesz, aby asystent zrobił code review i podał sugestie, co poprawić (nawet pod względem code guide w obecnym projekcie), warto zainteresować się Gemini.
Na chwilę obecną widać gwałtowne przyspieszenie rozwoju narzędzi typu AI for coding. Duże firmy technologiczne, takie jak Microsoft, Amazon czy Google, prześcigają się we wprowadzaniu AI do swoich produktów.
Ostatnio widziałem, że AI nie tylko generuje kod, ale potrafi stworzyć taska w Jira nawet na podstawie treści nieczytelnej dla człowieka (np. z logów błędu na AWS). Mało tego – rozpisuje odpowiednie subtaski w bardzo ciekawy sposób, więc nie tracimy już cennego czasu na takie prace. Wystarczy, że wkleimy kawałek kodu i zweryfikujemy to, co nam podpowiada AI. Wydaje mi się, że AI będzie coraz bardziej wspierać tworzenie dokumentacji, testów, konfiguracji np. CI/CD czy analizę wymagań w oparciu o przyjętą architekturę projektu.
AI, tak jak każde inne narzędzie, potrafi pomóc, ale też trzeba uważać na pewne pułapki. Przedstawię kilka propozycji w kolejności od tych najważniejszych według mnie, które są warte przeczytania i zastosowania, kiedy będziesz korzystać z AI na co dzień w swojej pracy z kodem.
Tak naprawdę, jeśli zastosujemy te zasady w naszej codziennej pracy, to będzie się nam pracowało dużo lepiej, a jednocześnie zapewnimy większe bezpieczeństwo naszego kodu. Nasze umiejętności pozostaną na wysokim poziomie, a efektywność będzie rosła dzięki wsparciu AI.
Temat, który dzisiaj omówiliśmy, jest bardzo rozległy i dynamiczny, ale mam nadzieję, że zaciekawiłem was nim i odpowiedziałem na parę nurtujących pytań. Na koniec powiem jeszcze chyba najważniejszą rzecz odnośnie AI. Ostatecznie to my dostarczamy kod i się pod nim podpisujemy, nie AI. Trzeba o tym pamiętać i zachować po prostu zdrowy rozsądek – tak jak we wszystkim.
Inetum