W programowaniu najważniejszy jest… człowiek [Część II] - Edge1S

W programowaniu najważniejszy jest… człowiek [Część II]

Blog author figure

Mariusz Wróbel

Team Leader

Rozmowa z Mariuszem Wróblem, Team Leaderem w firmie Edge One Solutions

team leader IT Solutions

Czy spopularyzowany dzięki pandemii trend pracy zdalnej jest możliwy do zastosowania także w pracy programistów?

Jeśli chodzi o pracę zdalną, to mógłbym zażartować, że programiści robili to, zanim to było modne. Zazwyczaj była to praca w trybie zmianowym, 2-3 dni w biurze, a reszta zdalnie. Pandemia oczywiście mocno to zmieniła i pokazała wręcz, że także przedstawiciele innych zawodów, np. księgowości, również mogą pracować z domu, chociaż wcześniej nikt sobie tego nie wyobrażał. Główną zaletą tego modelu jest szeroko pojęta elastyczność oraz oszczędność czasu na braku konieczności dojazdów do pracy i pieniędzy ze względu na wyeliminowanie spowodowanych dojazdami kosztów. Dzięki pandemii w bardzo znaczącym stopniu rozwinięte zostały narzędzia do pracy zdalnej, komunikatory, systemy dzielenia się treściami itd. To pozwoliło nam na znaczne rozbudowanie zespołu programistów – część z nich jeszcze nigdy nie była w naszym biurze.

Czy w kontekście pracy programistów są jakieś wady tego modelu?

Główna wada, jaką widzę, jest natury psychologicznej. Nie bez powodu programiści, czy nawet szerzej – informatycy – przez długie lata postrzegani byli jako zamknięte osoby, przesiadujące w piwnicy lub na strychu i w samotności programujące lub wykonujące inne, mniej lub bardziej zaawansowane rzeczy na komputerze. Tymczasem, jak już wspomniałem wcześniej, przy projektach programistycznych kontakt z innymi osobami jest wyjątkowo ważny, a umiejętności miękkich można nabyć tylko dzięki nieustannie prowadzonym interakcjom. Osoby, które są świeżo po studiach, albo jeszcze w trakcie, powinny na ten aspekt zwracać szczególną uwagę – chęć nieustannego zdobywania wiedzy i doświadczenia może pogłębić problemy natury społecznej. Dlatego równie ważny jest kontakt z rodziną, przyjaciółmi, współpracownikami i w naszej firmie na tego typu interakcje zwracamy szczególną uwagę.

Skąd początkujący programista powinien czerpać wiedzę i doświadczenie?

Zajmuję się rekrutacją programistów od kilkunastu lat i widzę, że wiele przez ten czas się zmieniło. Obecnie jest moda na krytykowanie studiów, ponieważ przekazywana tam wiedza dotycząca programowania szybko się dezaktualizuje. To prawda, ale nadal uważam, że studia są potrzebne, bo przekazują podstawową wiedzę, której kandydatom często brakuje. Nie wiedzą na przykład jak działa przeglądarka internetowa, sieć, system operacyjny, jak poruszać się w systemie Linux itd. Na studiach są też bardzo ważne przedmioty, jak inżynieria oprogramowania, w ramach której poznawane są metody modelowania systemów. Można nauczyć się sposobów projektowania aplikacji oraz przedstawiania różnych aspektów za pomocą technicznej nomenklatury. Sama znajomość języka programowania tu nie wystarczy.

Jak natomiast rozpocząć karierę zawodową?

Tutaj pojawiają się kolejne dwie zalety studiów. Po pierwsze, poznaje się tam wiele osób, a te znajomości mogą być później bardzo przydatne, bo gdy jeden absolwent znajdzie pracę, to na pewno będzie pytany, czy zna innych dobrych programistów, których może polecić – większość firm szuka więcej niż jednej osoby. Po drugie, będąc na studiach można iść na staż, w trakcie którego zdobywa się bezcenne doświadczenie, jak też – znowu – poznaje kolejnych wartościowych ludzi. Wszystkim przyszłym programistom zdecydowanie polecam znalezienie dobrej firmy na staż. Jak ją rozpoznać? Starsi stażem programiści będą starali się nauczyć stażystę dobrych praktyk. Jeszcze w trakcie stażu warto też zainteresować się konferencjami dla programistów, np. takimi jak warszawska Confitura. Jeśli treść wykładów podczas takiego spotkania jest zbieżna z tym, czego dowiedzieliśmy się podczas stażu, to znaczy, że wybraliśmy dobrą firmę. Natomiast zdecydowanie trzeba unikać miejsc, w których przyszły programista nie jest traktowany jak członek zespołu, gdzie oceniany jest człowiek, a nie jego kod. Idąc na staż lub na rekrutację warto także mieć przygotowane podstawowe portfolio, nad którym pracowało się podczas studiów – kod prostej gry, aplikacji, jakiś własny open source. Pokazanie takiego kodu podczas rozmowy robi bardzo pozytywne wrażenie, daje możliwość udowodnienia swojej pasji.

Co zaś dzieje się w sytuacji, gdy programista dojdzie do wniosku, że z jakiegoś powodu „nie pasuje” mu dany projekt, do którego został przypisany przez swojego pracodawcę?

Istnieją dwa rodzaje firm, które zatrudniają programistów. Jeden typ to tzw. software house, w ramach którego powstaje oprogramowanie autorskie, które potem może być sprzedawane innym podmiotom lub odpłatnie udostępniane w sieci. W takich firmach siłą rzeczy pracownik ma mniej możliwości – zazwyczaj syndrom wypalenia lub inna przyczyna niechęci do pracy kończy się zmianą pracodawcy, ale oczywiście istnieje opcja przeniesienia do innego działu, w którym wytwarzane jest oprogramowanie zajmujące się inną domeną, co może pomóc zatrzymać pracownika w firmie. Istnieje też drugi rodzaj firm, takich jak nasza, które mają wielu klientów z całego świata. Pracownik zatrudniany jest do pracy przy konkretnym projekcie, ale gdy wyrazi taką wolę, możemy wspólnie zastanowić się, czy z korzyścią dla wszystkich stron nie będzie zasadne przeniesienie go do innego zespołu. Oczywiście zawsze jest to indywidualna sprawa związana z konkretnymi motywacjami. W wielu przypadkach wiąże się też z pewnym, trwającym przez pewien czas procesem, a długość tej fazy wyjścia z projektu uzależniona jest od pełnionej przez daną osobę roli.

A czy istnieje możliwość zmiany ścieżki kariery, np. rezygnacja z bycia programistą i rozpoczęcie prowadzenia testów oprogramowania lub projektowania interfejsów użytkownika?

Niewiele jest przykładów, gdy programiści przechodzili na pozycję UX Designera. Ale często natomiast zdarza się, że testerzy jakości oprogramowania – dobrze znający mechanizmy powstawania kodu – stawali się programistami. Osoby o najbardziej otwartych umysłach mogą też próbować przejścia na stanowiska odpowiedzialne za zarządzanie projektami. Oczywiście muszą spełnić konkretne wymogi, przejść odpowiednie szkolenia – wiele firm zresztą pomaga w tym procesie, aby nie stracić wartościowej osoby.

W czasach trwających nieustannie cyberataków bardzo ważna jest kwestia bezpieczeństwa kodu. W jak dużym stopniu jest to odpowiedzialność programistów?

Oczywiście, bezpieczeństwo jest brane pod uwagę wielowarstwowo. Od programistów warstwy biznesowej aplikacji nie oczekujemy, że będą ekspertami w tym zakresie, niemniej muszą mieć podstawową wiedzę dotyczącą ataków XSS czy SQL injection i umieć zweryfikować, czy ich kod jest podatny na takie ataki. Muszą też być świadomi bezpieczeństwa różnych komponentów, z których korzystają, jak np. ryzyka wycieku danych z formularza, czy walidacji backendowej. Powinni być też w stałym kontakcie z działem bezpieczeństwa IT, jeśli taki istnieje w firmie, bo to jego pracownicy będą prowadzili szeroko zakrojone testy pod katem podatności kodu.

Na zakończenie porozmawiajmy o temacie związanym z programistami, wokół którego narosło chyba najwięcej mitów, a mianowicie o ich zarobkach…

Potwierdzam, z tymi mitami mamy do czynienia niemal codziennie. Najpopularniejszym jest to, że jeśli pójdziesz do branży IT, to wystarczy, że nie zabijesz się o klawiaturę, a już będziesz miał pracę z wynagrodzeniem większym niż średnia krajowa. To jest oczywiście nieprawda, osób bez minimalnego doświadczenia po prostu się nie zatrudnia. Zarobki rzeczywiście są bardzo dobre, ale mocno uzależnione właśnie od doświadczenia i umiejętności. Poza tym, programistów można podzielić na dwie grupy. Do pierwszej należą osoby, które chcą uczestniczyć w ciekawych projektach, nawet za niższe stawki. Dzięki temu – oprócz satysfakcji – zdobywają doświadczenie i bardzo solidny punkt w CV. Ale są też osoby, które ewidentnie chcą pracować za jak największe stawki – widać to w procesie rekrutacji. Zgłaszają się równolegle do wielu firm jak nasza i przedstawiają „kosmiczne” wręcz oczekiwania, bo wiedzą, że ssanie na rynku programistów jest bardzo duże. Czasami się im udaje, szczególnie jeśli trafią do projektu wykonywanego na zlecenie bogatego klienta. Takie osoby często próbują także aplikować bezpośrednio do firm z zagranicy.

Jak powszechne jest to zjawisko?

Jest zauważalne, ale raczej nie można powiedzieć, że to obecnie standard. Praca bezpośrednio dla klientów zagranicznych ma tak naprawdę tylko jedną zaletę – relatywnie wysokie wynagrodzenie, bo nie jest od niego odejmowana marża firmy kontraktorskiej. Główną wadą natomiast jest to, że konkurujesz z programistami z całego świata, więc już sam proces rekrutacji może być bardzo trudny. Trzeba nie tylko być specjalistą w swojej dziedzinie, ale też doskonale znać język swojego klienta, a często także mieć rozbudowaną wiedzę o uwarunkowaniach kultury biznesowej kraju, z którego on pochodzi. Zdarza się też, że godziny pracy mogą być niedogodne, gdy klient jest z innej strefy czasowej. Ale trzeba również cały czas pamiętać, że projekt, w którym obecnie się uczestniczy, za dwa tygodnie może zostać zamknięty. Gdy pracujesz dla firmy kontraktorskiej, to ona ma za zadanie w takiej sytuacji przypisać programistę do nowego projektu, aby go nie stracić. Jeśli przez pewien czas jest „bezrobotny”, to nadal otrzymuje wynagrodzenie, które zapewnia mu bezpieczeństwo finansowe, jakże ważne, gdy ma się rodzinę i kredyty. Praca bezpośrednio na kontraktach z zagranicy znacznie zwiększa ryzyko niestabilności finansowej, co z kolei zmusza do utrzymywania dużej poduszki finansowej. Dlatego, moim zdaniem lepiej jest pójść do firmy, która co prawdę pobiera pewną marżę z przychodów od klienta, ale gwarantuje pracownikom większe bezpieczeństwo finansowe.

 

Jeśli poszukujesz zespołu programistów z wieloletnim doświadczeniem, skontaktuj się z nami!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Komentarze (0):