
Kariera programisty – dla jednych spełnienie zawodowych marzeń, dla innych czarna magia tylko dla wybranych. Na czym tak naprawdę polega programowanie? Jak wygląda typowy dzień z życia programisty? W nowym cyklu wywiadów przybliżam najpopularniejsze kariery z branży IT. Rozmawiam z praktykami, ludźmi, którzy na co dzień realizują się w swojej pracy.
Magda, na co dzień senior programistka Java, po godzinach prowadzi edukacyjny profil na Instagramie
. Specjalnie dla Homodigital opowiada o tym, na czym polega zawód programisty i dla kogo jest odpowiednia ta konkretna ścieżka kariery w branży IT.
Sylwia Błach: Jak zaczęła się Twoja przygoda z programowaniem? Czy to była decyzja strategiczna, przypadek, czy może miłość od pierwszego „Hello World”?
Magda: Po liceum poszłam na informatykę, bo od zawsze lubiłam komputery, nie zdając sobie sprawy, iż czeka mnie tam programowanie. Kiedyś tak wszystkiego się nie researchowało jak dzisiaj. Jedną ze specjalności na moim wydziale była grafika komputerowa i grafikiem właśnie miałam wstępnie zamiar zostać. Programowanie szło mi dość ciężko, zaliczałam zajęcia, ale nie zawsze wszystko rozumiałam. Gdzieś na trzecim roku przyszedł przełom. Zaczęłam rozumieć, o co w tym programowaniu chodzi i jakie potężne daje możliwości. I jaką przyjemność daje tworzenie programów, jakie tylko wyobraźnia może nam podsunąć! Wtedy już wiedziałam, iż będę próbować szukać pracy w tej ścieżce. I tak po trzecim roku studiów zaczęłam pierwszą pracę jako Junior Software Engineer.
SB: Jakie technologie są Twoim głównym obszarem pracy? Frontend, backend, fullstack, a może coś bardziej niszowego?
M: Od początku szłam ścieżką Javy, ponieważ ten język był dla mnie od zawsze najbardziej przyjemny. Ale na początku kariery pracowałam w różnych projektach, trochę Javy, trochę Androida, zawsze gdzieś przewijał się JavaScript, HTML i CSS, później choćby C i technologia Bluetooth. Ale wtedy zdecydowałam – koniec z tym, wracam do Javy, to ją lubię najbardziej. Od tamtej pory wiele lat pracowałam jako backendowiec, ale pięć lat temu postanowiłam rozwinąć się również jako frontendowiec, więc aktualnie mogę się nazywać fullstackiem.
Czytaj też: Na czym polega praca programisty? Odkrywamy tajemnice zawodu
SB: Na czym adekwatnie polega programowanie? Gdy rozmawiam z ludźmi spoza branży, czasami choćby dziwią się, iż do pisania kodu używa się liter alfabetu.
M: Lubię porównywać pisanie kodu do budowania z klocków Lego. Każdy klocek pozwala wykonać jakąś akcję. Np. przeliczyć coś, wyświetlić na ekranie czy wykonać akcję w zależności od tego, co dostaniemy od użytkownika. A my programiści te klocki składamy w całość programu. I tak, kod to tekst, który komputer zamienia w przyjazny dla użytkownika albo działający pod spodem program.
Czytaj też: Najciekawsze roboty do nauki programowania dla dzieci! Który wybrać?
SB: Jak wygląda Twój typowy dzień jako programistka? Czy to bardziej sprinty, spotkania, czy kodowanie w skupieniu?
M: Od września zaczynam nowy projekt więc jeszcze nie wiem, co mnie czeka, bo w każdym projekcie wygląda to tak naprawdę inaczej. Ale w poprzednim miałam bardzo dużo czasu w pisanie kodu, bo ilość spotkań zredukowaliśmy do minimum. Ale pisanie kodu to nie jest mój jedyny obowiązek.
Żeby wiedzieć, co tworzyć dzięki pisania kodu, musimy najpierw aplikację zaprojektować. Jak ma wyglądać, i co ma robić pod spodem, gdy użytkownik jej używa.
Napisanie takiej aplikacji to zwykle kilka miesięcy pracy, więc po zaprojektowaniu dzielimy pracę na zadania, które pozwolą na uruchamianie jej od samego początku, a następnie dorzucanie kolejnych możliwości z biegiem czasu. Każde zadanie opisuje funkcjonalność, która zostanie dodana. o ile mówimy na przykład o sklepie internetowym, to po utworzeniu szkieletu projektu kolejne zadania mogą wyglądać tak: dodaj pole wyszukiwania i przycisk „Szukaj”. Dodaj pole z wynikami wyszukiwania. Podepnij się do backendu i pobierz wyniki na podstawie hasła wpisanego przez użytkownika. Wyświetl wyniki na ekranie. I tak dalej i tak dalej, każdy element aplikacji ma swoje zadanie.
Oczywiście nie wszystko da się zaplanować idealnie na początku, więc w czasie trwania projektu wpada sporo pytań i wątpliwości, czasami wymagania się zmieniają. W celu omówienia tych tematów organizujemy spotkania.
W czasie trwania projektu zdarzają się też sytuacje nieprzewidziane – na przykład spada znacząco szybkość aplikacji, albo nie działa ona w ogóle. Wtedy analizujemy na bieżąco co się mogło wydarzyć i reagujemy w miarę możliwości jak najszybciej.
SB: Branża drastycznie się zmieniła na przestrzeni ostatnich lat. Czy pozostało w niej miejsce dla juniorów?
M: Zdecydowanie jest, staże są uruchamiane każdego roku i ciągle dobrze płatne. Jest natomiast mnóstwo chętnych, przez co trzeba włożyć mnóstwo pracy i mieć dużo cierpliwości i odrobinę szczęścia. w tej chwili od początkujących wymagana jest nie tylko znajomość języka programowania, ale i różnych technologii. Oraz, co ważne, duża elastyczność co do dalszej ścieżki zawodowej.
SB: Jak radzisz sobie z presją „ciągłego uczenia się”?
M: Ja lubię się uczyć i z wiekiem i biegiem doświadczenia idzie mi to coraz bardziej sprawnie. Wyznaje zasadę, iż najlepiej rozwijać się codziennie w projekcie, więc staram się brać różne i bardzo trudne zadania, bo to właśnie w praktyce uczymy się najlepiej. Prawda jest też taka, iż wiedza nie zmienia się drastycznie z dnia na dzień, raczej idzie to płynnie, a większe rewolucje są co kilka lat, więc można za tym spokojnie nadążyć! Historie opisywane czasami na grupach „na fejsiku”, gdzie użytkownicy polecają codziennie spędzić kilka godzin po pracy na dodatkowej nauce programowania, nie mają zbyt dużo wspólnego z tym, jak jest naprawdę. Praca programisty jest wymagająca umysłowo, więc po pracy warto przeznaczyć czas na zajęcia offline lub inne pasje.
SB: Ty się specjalizujesz w Javie, ale czy można być przez cały czas programistą „jednego języka”? Czy rynek już tak się zmienił, iż zawód wymaga bardzo szerokiej znajomości różnych technologii?
M: Wymaganie znajomości wielu języków programowania to mit! Na początku drogi już jeden język programowania to ogrom rzeczy do zrozumienia, więc nie ma sensu, żeby sobie mieszać. A później warto się specjalizować. Dużo ludzi ze mną na ten temat dyskutowało i pojawiają się różne posty na ten temat na Instagramie, szczególnie w dobie AI, mówiące, żeby najlepiej w tej chwili mieć wiedzę z wielu dziedzin… Ale po ostatnich poszukiwaniach pracy uważam, iż rynek w tej chwili mocno ceni programistów z dużym doświadczeniem i zaawansowaną wiedzą w jednej ścieżce np. Java + technologie, Python i wiedza Data Science, Frontendowiec, DevOps. Nie ma w tym miejsca na wiele języków, bo po prostu przykładowo Java i technologie to już ogrom wiedzy i nie ma miejsca na inne języki i jeszcze technologie specyficzne dla nich!
Ale też nie jest tak, iż sam język wystarczy! Oprócz języka jest mnóstwo technologii do opanowania, adekwatnie z roku na rok więcej. W przypadku Javy jest to ogromny Spring framework, technologie bazodanowe, odrobina wiedzy DevOps, kolejki, cache, chmury, technologie do monitorowania projektu, wątki, programowanie funkcyjne, reaktywne i wiele wiele innych. Naprawdę jest tego ogrom.
SB: Mówimy o umiejętnościach twardych, a co z miękkimi. Czy często musisz tłumaczyć techniczne rzeczy nietechnicznym osobom? Czy to łatwe?
M: Akurat w obecnym projekcie nie było takiej potrzeby, większość ludzi, z którymi rozmawiałam miała podstawy techniczne, ale lubię tłumaczyć trudne rzeczy początkującym w łatwy sposób. Nie jest to proste, ale to fajne wyzwanie, aby rzecz trudną przestawić możliwie łatwo. Gdy ktoś powie „Aaa, teraz rozumiem!” to daje to olbrzymią satysfakcję.
Dlatego wyszłam z pasją programowania poza projekt i tworzę na Instagramie
tłumacząc co jakiś rzeczy trudne w prosty sposób.
SB: Jakie książki, kursy lub materiały najbardziej ci pomogły na początku kariery? Czy teraz warto zaczynać w podobny sposób, czy jednak branża IT się zbyt zmieniła?
M: Tutoriale na stronach internetowych. Ale musicie wiedzieć, iż ja uczyłam się bardzo dawnoooo, 17 lat temu zaczęłam studia, wtedy Internet wyglądał zupełnie inaczej.
Obecnie początkującym polecam korzystać z wideo kursów z YouTube, ewentualnie zakupić kurs wideo, ale od sprawdzonego wcześniej nauczyciela. A o ile chcą przyspieszyć naukę zainwestować w mentora! Nie jestem fanką książek, ponieważ nauka programowania to praktyka – wszystko czego się uczymy, trzeba odtwarzać na własnym komputerze, więc korzystanie z materiałów cyfrowych jest po prostu wygodniejsze.
SB: Jakie narzędzia są dla Ciebie niezbędne w codziennej pracy?
M: Używam IDE, czyli programu do pisania kodu, który wiele rzeczy ułatwia. W IDE mam też zainstalowany GitHub Copilot, który pisze część kodu za mnie. Trochę tutaj żartuje, raczej podgenerowuje fragmenty kodu, ale jest to naprawdę duże wsparcie! W IDE piszę kod, łączę się z niego z bazami danych, testuję przygotowane API, wrzucam i pobieram kod z GITa, uruchamiam aplikacje.
Git pozwala na umieszczanie napisanego kodu na serwerze, gdzie cały zespół ma do niego dostęp.
Codziennie używam też narzędzia do zarządzania projektami, gdzie mamy opisy zadań.
Ciągły kontakt z zespołem utrzymuję dzięki Microsoft Teams.
Jest jeszcze wiele innych potrzebnych programów, ale są one różne w zależności od projektu.