Na czym polega praca programisty? Jak wygląda typowy dzień pracy programisty?

Wyobraź sobie, że pojawiasz się w pracy gotów na osiem godzin programowania, tylko po to, żeby odkryć, że w rzeczywistości będziesz programował dwie, trzy, cztery godziny, nie więcej. Taka jest rzeczywistość. Programiści robią coś więcej, niż tylko programują. Ale co w takim razie robią, skoro nie piszą kodu całymi dniami?

Na czym polega praca programisty?

Generalnie rzecz ujmując, praca programisty polega na rozwiązywaniu problemów. Na rozwiązanie problemu składa się wykonanie kilku czynności: analiza problemu, pomysł na rozwiązanie, implementacja (czyli pisanie kodu) oraz przetestowanie rozwiązania. Czasami rozwiązanie problemu zajmuje dużo czasu, a czasami przychodzi z łatwością. Nie raz rozwiążesz coś w dwadzieścia minut, zamiast w dwa dni, które miałeś na to zaplanowane. Innym razem oszacujesz, że coś zajmie Ci dwa dni, a w rzeczywistości nad rozwiązaniem problemu spędzisz cały tydzień. Czasami cały dzień będziesz zmóżdżać się nad zadaniem, tylko po to, żeby kolejnego dnia, na świeżo, rozwiązać problem w pięć minut. Zadanie, na które za pierwszym razem potrzebowałeś całego dnia, za drugim razem wykonasz w pół godziny. Nie ma w tym nic dziwnego. W zasadzie to różni doświadczonego programistę od początkującego. Czas rozwiązywania problemów oraz jakość tych rozwiązań. Nie ma czegoś takiego jak idealny (lub perfekcyjny) kod. Kod może różnić się np. długością, złożonością, czasem wykonania, czytelnością. Na jakość kodu bardzo często mają także wpływ okoliczności, w jakich został napisany, np. zbliżający się deadline, praca bezpośrednio na środowisku produkcyjnym, zmiana założeń projektu w ostatniej chwili. Czynniki mające wpływ na czas i jakość rozwiązywania problemów można mnożyć.

Jak wygląda typowy dzień pracy programisty?

Praca programisty daje dużą elastyczność odnośnie tego, jak może wyglądać dzień pracy. Jak w takim razie wygląda typowy dzień pracy programisty? W zasadzie nie ma czegoś takiego jak typowy dzień pracy  programisty. Tak naprawdę każdy dzień jest inny, każdego dnia zmagamy się z innymi wyzwaniami, rozwiązujemy różne problemy, i to jest chyba jedna z największych zalet tej pracy. Brak nudy i monotonii. Oczywiście nie każdy dzień jest pasjonujący i pełny wyzwań. Czasami robimy wszystko, tylko nie programujemy. Walczymy ze sobą, innymi ludźmi i maszynami. Poniżej opiszę przeciętny dzień mojej pracy w firmie (korporacja) w wersji optymistycznej i pesymistycznej.

Dzień pracy programisty – wersja optymistyczna
  • 8:00 – przyjście do pracy
  • od 8:00 do 9:45 – programowanie (rozwój)
  • od 9:45 do 10:00 – Daily Scrum
  • od 10:00 do 11:30 – programowanie (rozwój)
  • od 11:30 do 11:50 – przerwa na drugie śniadanie
  • od 12:20 do 16:00 – programowanie (rozwój)
  • 16:00 – wyjście z pracy
  • 20 minut – krótkie przerwy w międzyczasie na rozprostowanie kości, kawę, uzupełnienie wody, przekąskę

W wersji optymistycznej przez większość dnia mogę zająć się tym, co sprawia mi najwięcej przyjemności, czyli programowaniem. Takie dni najczęściej występują, gdy rozpoczynam pracę nad nowym projektem, bądź zajmuję się rozwojem pewnych funkcjonalności. Wtedy pracę w ciągu dnia przerwy mi w zasadzie tylko Daily Scrum. Jest to codzienne spotkanie, w którym biorą udział wszyscy członkowie zespołu. Podczas takiego spotkania każda osoba udziela odpowiedzi na trzy pytania: Co zrobiłeś wczoraj? Co zrobisz dzisiaj i ile Ci to jeszcze zajmie? Czy napotkałeś na jakieś przeszkody? Skupiając się na tym, czego każda osoba dokonała wczoraj i dokona dzisiaj, zespół zyskuje doskonałe zrozumienie, ile pracy wykonano, a ile zostało do wykonania.

Dzień pracy programisty – wersja pesymistyczna
  • 7:00 – przyjście do pracy
  • od 7:00 do 7:45 – sprawdzenie poczty i odpisanie na maile
  • od 7:45 do 8:00 – przerwa śniadaniowa
  • od 8:00 do 9:00 – konsultacje wewnątrzzespołowe
  • od 9:00 do 10:00 – Sprint Review
  • od 10:00 do 11:00 – spotkanie z analitykami
  • od 11:00 do 12:00 – lekcja językowa
  • od 12:00 do 12:40 – przerwa obiadowa
  • od 12:40 do 13:00 – przygotowanie środowiska
  • od 13:00 do 14:00 – reprodukcja błędu
  • od 14:00 do 14:30 – szukanie przyczyny błędu (debugowanie)
  • od 14:30 do 14:45 – programowanie (poprawa błędu)
  • od 14:45 do 15:00 – obsługa zgłoszenia
  • 15:00 – wyjście z pracy
  • 20 minut – krótkie przerwy w międzyczasie na rozprostowanie kości, kawę, uzupełnienie wody, przekąskę

W wersji pesymistycznej przez większość dnia zajmuję się wszystkim, tylko nie programowaniem. Takie dni też się zdarzają. Są raczej rzadkością, ale się zdarzają. Wtedy wykonuję to wspomniane wcześniej „coś więcej”, czyli np. czytanie i odpisywanie na maile, konsultowanie się ze współpracownikami w sprawie rozwiązania jakiegoś problemu (czasem to my pomagamy, czasem ktoś pomaga nam), udział w Sprint Review – spotkanie organizowane na zakończenie Sprintu w celu prezentacji efektów prac i dostosowania wymaganych funkcjonalności produktu (jeśli to konieczne), spotkanie z zespołem analitycznym w celu omówienia zmian wprowadzanych w systemie (np. wynikających z przepisów prawnych), lekcje języka obcego oferowane przez pracodawcę, naprawianie błędów zgłoszonych przez klientów i testerów oraz wiele innych czynności.

Twój dzień pracy może wyglądać zupełnie inaczej. Wiele zależy od tego, jaki jest zakres Twoich obowiązków. W jakiej firmie pracujesz. Na jakim jesteś etapie swojej kariery. Czasem będziesz pisał kod całymi dniami, a czasem w ogóle. Z moich obserwacji wynika, że im mniejsza firma, dla której pracujesz, tym więcej czasu spędzisz na programowaniu. Im większa firma, tym więcej będziesz miał innych zajęć, a co za tym idzie, mniej czasu spędzisz na kodowaniu.

Co robi programista, kiedy nie pisze kodu?

Naprawianie błędów

Czasami piszesz nowy kod, implementujesz nowe funkcjonalności, ale częściej jednak naprawiasz błędy w starym kodzie. Czasem to Ty napiszesz kod, który zawiera błędy, czasem zrobi to inny programista. Twoim zadaniem jest to naprawić. W tym celu należy odpowiednio przygotować środowisko, powtórzyć błąd, znaleźć przyczynę błędy i go poprawić. Sporą część czasu spędzisz na naprawianiu kodu, zarówno swojego, jak i napisanego przez innych, dlatego warto dobrze opanować sztukę debugowania.

Projektowanie

Większość dobrych programistów nie zabiera się od razu do kodowania. Zamiast tego poświęcają trochę czasu na zaprojektowanie tego, co chcą zaprogramować. Robią to odpowiednio wcześnie, dyskutując z innymi programistami i analitykami, dlaczego zrobienie czegoś w ten, a nie inny sposób jest lepsze niż ten inny sposób. Jest spore prawdopodobieństwo, że jako programista spędzisz sporo czasu, pracując z zespołem – albo samym sobą – w celu projektowania systemu.

Eksperymentowanie

Czasami Twoim zadaniem będziesz zabawa z nowymi technologiami i narzędziami, by zobaczyć, do jest lepszym rozwiązaniem danego problemu. Będziesz tworzył prototypy funkcjonalności czy komponentów, zanim zostaną one użyte w kodzie produkcyjnym. Nie raz będziesz pisał przykładowy program, w którym  zastosujesz nowe API czy technologię, którą wykorzystasz do stworzenia nowej funkcjonalności czy do naprawienia błędu.

Testowanie

Testowanie jest integralną częścią procesu wytwarzania oprogramowania, a jednym z zadań programisty jest upewnienie się, że testuje swój własny kod, zanim wprowadzi go do repozytorium i dystrybucji. Jako programista powinieneś być odpowiedzialny za jakość swojego kodu. W miarę możliwości powinieneś poświęcić czas na testowanie swojego kodu, aby upewnić się, że działa poprawnie w różnych przypadkach.

Spotkania

Spotkania są niezbędne w celu planowania pracy i określania szacunkowego czasu realizacji zadań (estymacja). Spotkania przeglądowe również są ważne w celu zaprezentowania pracy, uzyskania informacji zwrotnych i sugestii czy zrobienia postępów. Czasami trzeba podjąć ważne decyzje dotyczące projektu, które wymagają obecności programisty rozumiejącego technologię. Obecność takiej osoby może być istotna dla podjęcia dobrej decyzji. Czasami może wydawać Ci się, że spotkania to strata czasu (czasami tak jest), ale większość organizowanych spotkać ma ku temu słuszne powody.

Interakcja z klientem i zespołem

Wartość programisty to nie tylko jego umiejętność programowania, ale też zdolność komunikacji i przekładania wymagań biznesu czy klienta na rozwiązania technologiczne. Oznacza to, że będziesz musiał rozmawiać z klientami, team leader’em, analitykami, czasami z testerami i innymi programistami, by zrozumieć, co tak naprawdę masz stworzyć dla końcowego klienta. Czasem odbędzie się to w formie mailowej, innym razem w bezpośredniej interakcji, bądź formie spotkania.

Szkolenia

Zawód programisty wymaga niemal ciągłego rozwoju, śledzenia nowinek  i zdobywania nowych umiejętności. W wielu firmach pracodawcy stwarzają sprzyjające ku temu warunki. Zachęcają do nauki, organizując szkolenia wewnętrzne oraz wysyłając programistów na szkolenia zewnętrzne. Oferują także dofinansowania do różnego rodzaju kursów, zapewniają dostęp do platform e-learningowych, organizują lekcje językowe. Programista powinien uczyć się po godzinach, ale też w czasie pracy.

Mentoring

W miarę zyskiwania doświadczenia i stawania się lepszym w tym, co robisz, będziesz spędzał coraz więcej czasu na szkoleniu innych programistów, doradzaniu im i pomaganiu w rozwiązywaniu problemów, z którymi nie potrafią sobie poradzić. To, co wnosisz w ten sposób do zespołu, wykracza poza samą umiejętność programowania.

Podsumowanie

Większość rodzajów prac wykonywanych przez programistę już omówiliśmy. Nie jest to jednak wszystko. Programista wykonuje jeszcze wiele innych czynności, jak choćby obsługa zgłoszeń (zmiana statusu, dodanie komentarza, przepięcie zgłoszenia) w systemie do zgłaszania i śledzenia błędów, ewidencja wykonanych zadań, przekonywanie klientów do pewnych rozwiązań, wizyty u klientów, instalacja oprogramowania. Zależnie od tego, gdzie pracujemy, zakres wykonywanym prac może być zupełnie inny.


Bądź na bieżąco!

Dziękuję za przeczytanie tego artykułu i mam nadzieję, że spotkamy się jeszcze na moim blogu. Jednocześnie mam do Ciebie wielką prośbę: jeśli cokolwiek co przeczytasz na tym blogu uznasz za wartościowe, to KONIECZNIE mi o tym napisz (w komentarzu, bądź mailowo). Każdy potrzebuje nieco motywacji i znacznie łatwiej będzie mi usiąść do tworzenia kolejnego materiału wiedząc, że Tobie też się to przydaje. Zachęcam Cię do polubienia strony na Facebooku oraz subskrybowania kanału na YouTube.

Polub stronę na Facebooku

Chcesz otrzymywać powiadomienia o nowych artykułach? W takim razie zapraszam Cię do polubienia strony na Facebooku. Miej pewność, że nie przegapisz kolejnych postów!

Subskrybuj kanał na YouTube

Wkrótce na YouTube pojawią się praktyczne kursy dotyczące programowania aplikacji na platformę .NET.