Czym zajmuje się programista i jakich narzędzi używa na co dzień?

Czym zajmuje się programista i jakich narzędzi używa na co dzień?

Na zadane w tytule pytanie laik odpowiedziałby zapewne: programowaniem! Rzeczony programista w tym momencie zmrużyłby oczy, westchnął głęboko i zamruczał nerwowo pod nosem: ehh… żeby tylko! W rzeczywistości określenie “programista” nie definiuje zakresu obowiązków. Mamy bowiem web developerów, back-end’owców, analityków danych, pracowników doświadczonych w dev-ops, CI/CD, QA czy metodologii Agile. Nie wspominając już o językach programowania, w przypadku których Java, JS, PHP, C, C#, Python i Ruby to tylko początek niezwykle długiej listy. Nic więc dziwnego, że określenie w paru słowach zawodu programisty jest niemal niemożliwe.

Programista – lekarz wielu specjalizacji

Zawód programisty można porównać do współczesnego lekarza. Obecnie nie idziemy już do doktora wielu specjalizacji, ale do fachowca w konkretnej dziedzinie – kardiologa, neurologa czy ortopedy. Jedna osoba nie jest bowiem w stanie przyswoić ogromu tak szczegółowej wiedzy. Dlatego też wśród programistów i informatyków również popularne są podziały, które są następstwem nieustannie powstających nowych technologii. Ich zatrważająca liczba nie bierze się jednak wyłącznie z niepohamowanej potrzeby twórczej, ale ma przede wszystkim związek z ułatwieniem i usprawnieniem pracy programistów.

Podstawowe narzędzia stosowane przez programistów

Choć zakres obowiązków wykonywanych przez programistów może w wielu przypadkach znacząco się różnić, to istnieją narzędzia, z których bardzo często korzystają przedstawiciele tej branży – niezależnie od swojej specjalizacji. Należą do nich m.in. kontrola wersji oraz testy jednostkowe. Do czego są wykorzystywane? Jaki jest ich cel? Kto może z nich korzystać? Poniżej postaramy się odpowiedzieć na te pytania, aby nie tylko wyjaśnić ich działanie, ale też przybliżyć na ich podstawie codzienną pracę programisty.

Programowanie w wielu językach

Kontrola wersji sposobem na dobrą organizację pracy

Istotą zawodu programisty jest tworzenie czytelnego i solidnego kodu źródłowego. Często jednak praca jednej osoby nie wystarczy. W przypadku dużych projektów (np. systemu operacyjnego Windows) konieczne jest zaangażowanie setek, a czasem nawet tysięcy ludzi. Skoordynowanie działań tak dużej grupy nie należy do łatwych. Dlatego też, aby umożliwić im współpracę, a zarazem sprawować nadzór nad wprowadzanymi zmianami, korzysta się z systemów kontroli wersji.

Na czym polega kontrola wersji?

Podstawowym zadaniem systemu kontroli wersji jest śledzenie dokonywanych przez programistów zmian w kodzie. Oznacza on każdą linijkę, w której nastąpiła zmiana oraz zapisuje kto i kiedy ją wprowadził. Dzięki temu możliwe jest np. szybkie znalezienie tego fragmentu kodu, który odpowiedzialny jest za występujący błąd. System ten potrafi też wykryć, kiedy zaistnieje sytuacja tzw. konfliktu, czyli kiedy zmiany wprowadzone przez dwóch lub więcej programistów do jednego pliku dotyczą tych samych linii, a więc wykluczają się wzajemnie. Korzystanie z kontroli wersji pozwala tym sposobem na oszczędność czasu oraz utrzymanie porządku w kodzie.

Testy jednostkowe narzędziem do weryfikacji błędów

Drugim często stosowanym przez programistów narzędziem są testy jednostkowe. Polegają one na testowaniu w zupełnie odizolowanym środowisku każdej pojedynczej funkcji, z której składa się kod, aby sprawdzić, czy w każdej sytuacji (nawet takiej, która być może nigdy nie zaistnieje) spełnia ona swoje zadanie. Główną korzyścią takiego działania jest upewnienie się, że zmiany wprowadzone w jednym miejscu nie "zepsują" kodu w innym. Testy jednostkowe są także bardzo pomocne przy wprowadzaniu zmian w kodzie już istniejących programów, za których utworzenie odpowiedzialni byli inni programiści. Stanowią one wówczas świetną dokumentację, pokazującą, jak działają zaprogramowane funkcje oraz jakich scenariuszy ich działania można się spodziewać.

Programowanie

Problemy z tworzeniem testów jednostkowych

Pisanie takich testów nie jest jednak łatwe. Przede wszystkim cały testowany kod musi być napisany w taki sposób, aby przetestowanie go było w ogóle możliwe. Jeśli np. testowana funkcja będzie wykonywała wiele różnych, niepowiązanych ze sobą operacji lub korzystała z zewnętrznych zasobów, których nie możemy w żaden sposób kontrolować, to napisanie miarodajnego testu bez przepisania dużych porcji kodu może okazać się niemożliwe. Nie da się bowiem ukryć, że najlepszym rozwiązaniem są testy pokrywające 100% kodu, które pozwalają na kompleksową weryfikację poprawności.

Niekończąca się lista technik i narzędzi

Wspomniane wyżej narzędzia to jednak tylko wierzchołek góry lodowej. Programiści, w zależności od swojej specjalizacji korzystają bowiem z wielu technik, metod czy programów, które znacząco ułatwiają, a także poprawiają jakość oraz efektywność ich pracy. Oprócz testów jednostkowych używają oni również m.in. testów funkcjonalnych, integracyjnych czy end-to-end oraz innych narzędzi. Nic więc dziwnego, że wykonywany przez nich zawód porównywany jest do lekarza o wielu specjalizacjach.