#Kulisy branży IT. Starszy programista Java

By 17 października 2014Kulisy branży, Ludzie IT
Wpis-Header-3

Na początek ktoś z blogowego podwórka, czyli Kuba współtworzący tego bloga. Kuba programuje od podstawówki (!). Z naszej rozmowy dowiecie się miedzy innymi, co kupić dziecku pod choinkę, by zaczęło programować, jak to jest pracować w międzynarodowym projekcie i dlaczego, nie ma sensu wpisywać w google: najlepszy język programowania. Gotowe? To zaczynamy ;)

 Cykl #kulisy branży IT to seria wywiadów z ludźmi pracującymi w IT. Chcemy pokazać jak szerokie możliwości daje ten sektor, jak różna potrafi być praca i zadania i wyzwania spotykane na co dzień, a przede wszystkim ile satysfakcji może dać praca! To wszystko po to, by zachęcić Cię do spróbowania siebie właśnie w tej branży.

Kuba, pracujesz na stanowisku Starszego Programisty Javy. Co należy do Twoich obowiązków?

Przede wszystkim rozwijanie projektu zgodnie z dokumentacją. W tym mieści się zarówno pisanie nowych funkcjonalności, sprawdzanie istniejącego kodu (tzw. code review) oraz tworzenie i utrzymywanie (ponieważ dokumentacja jest też aktualizowana w trakcie projektu) automatycznych testów.Dodatkowo uczestniczę w projektowaniu poszczególnych elementów np. proponując rozwiązania techniczne lub komentując zaproponowane rozwiązania.

W ramach obowiązków starszego programisty zajmuję się też wdrażaniem w projekt nowych osób, utrzymywaniem dokumentacji ‚okołoprojektowej’ (krótkie tutoriale, tech note’y, odniesienia służące temu, aby ktoś inny mógł po nas przejąć prace nad konkretnym modułem / elementem) oraz integracją (zapewnieniem, że tworzone w naszym zespole komponenty współdziałają z innymi i sa zgodne z ustalonymi kontraktami – czyli formalnym sposobem wymiany informacji pomiędzy modułami). Do tego oczywiście ‚gaszenie pożarów’, ale tego w umowie czy ofercie pracy nie znajdziecie ;)

Jak wyglądał początek Twojej kariery, jak się ona potem rozwijała?

Zaczęło się dość dawno temu, okolice szkoły podstawowej/gimnazjum, kiedy gry uruchamiane na pierwszym komputerze zaczęły mnie intrygować ‚a jak by to było napisać coś takiego samodzielnie?’. Oczywiście pierwszym programem nie była gra, a prosta baza danych (dane były wpisane na sztywno w kod programu) dot. jakiejś gry. Później pod choinką znalazłem serię ‚Symfonia C++’ i jakoś tak się potoczyło…

Jeśli chodzi o samą karierę zawodową, moja pierwsza praca ‚komercyjna’ to była praktyka w dziale testowania oprogramowania. W pierwszych dniach napisałem prostą aplikację – wtedy jeszcze w języku PHP – która usprawniała nam codzinną pracę w zespole. Dzięki temu przeniesiono mnie do działu automatyzacji testów, w ciągu weekendu mniej więcej poznałem składnię VB i do końca praktyki programowałem w tym języku. Jednocześnie poznałem wtedy kilka pierwszych osób z branży, z którymi po zakończeniu praktyki nawiązałem współpracę przy ich projektach.

To zapoczątkowało etap freelancingu w mojej karierze, kiedy to uczyłem się i realizowałem pojedyncze zlecenia z każdym projektem ucząc się nowych rzeczy. Zacząłem systematyzować swoją wiedzę, zrobiłem pierwszy certyfikat (z PHP), zacząłem przygotowywać sie do certyfikacji z Javy i jednoczesnie powiększać firmę. Ostatecznie doszedłem do momentu kiedy uznałem, że nie jestem w stanie sam się dalej rozwijać pracując tylko we własnej firmie z uwagi na ograniczoną wielość projektów, dostęp do wiedzy itp., co spowodowało że odsprzedałem udziały wspólnikowi i rozejrzałem się za pracą w większej organizacji, gdzie pracuję i uczę się obecnie :)

W międzyczasie oczywiście rozwijałem się na tyle, na ile było to możliwe, zrobiłem pełną ścieżkę certyfikacji z Javy, zacząłem przygotowania do certyfikacji z TOGAFa. Zdarzało mi się także organizować szkolenia z Javy dla studentów, czy prowadzić projekty badawcze na uczelni w tym zakresie.

W skrócie – programowanie odkąd je poznałem zawsze było moją pasją, dzięki czemu praca i zdobywanie nowych kompetencji jest dla mnie prawdziwą przyjemnością a nie obowiązkiem :)

Co jest potrzebne żeby móc pracować jako programista?

Jeśli chodzi o rolę developera to głównym elementem który jest potrzebny to chęć nauki i opanowanie pewnych podstaw (bardziej chodzi o koncepcje programowania). Pogląd że np. tylko na studiach zdobędziemy potrzebną wiedzę jest tak błędny, co szkodliwy (osobiście z przykrością musze powiedzieć że studia nie dały mi żadnej wiedzy praktycznej, którą wykorzystuje na co dzień).Obecnie oceniam swoją wiedzę na 10-15% ‚technologii Javy’ i uważam, że to poziom bardzo wysoki. To, czego oczekują pracodawcy, to nie znajomość wszystkiego ‚na blachę’, a umiejętnosć poznawania nowych rzeczy, pracy z nowymi technologiami/narzędziami korzystając z ich dokumentacji.Do tego potrzebne jest jedynie pozytywne nastawienie, znajomość podstaw (żargonu, żeby wiedzieć o czym czytamy) i trochę czasu :)

W przypadku developerów (powiedzmy powyżej roli juniora) przydaje się umiejętność analitycznego myślenia, ponieważ w miarę zdobywania wiedzy praktycznej z różnych obszarów, coraz częściej będziesz proszona o pomoc przy planowaniu i projektowaniu pewnych rozwiązań, a zadania które będziesz otrzymywać będą bardziej samodzielne (tzn. będą zawierały bardziej opisy od strony ‚funkcjonalnej’ pozostawiając Tobie rozpracowanie tego, jak to zrealizować z użyciem technologii dostepnych w projekcie).

Jeśli chodzi o role seniorskie w przypadku developerów przydają się choćby podstawowe umiejętności miękkie – bardzo często przyjdzie nam przekazywać wiedzę lub opracowywać ją dla ‚potomnych’, umiejętność formułowania prostych i klarownych zdań, efektywnej komunikacji staje się ważna.

Co jest najważniejsze w kwestii własnego rozwoju w roli, jaką pełnisz?

Dość ważna jest specjalizacja i ogólne rozeznanie. Choć brzmi to rochę jak paradoks, chodzi o to, żeby mieć wiedzę w okreslonej technologii (np. Java w moim wypadku) z powodów czysto praktycznych – mając duże doświadczenie z wąską grupą technologii (np. jeden język i kilka popularnych frameworków i technologii) będziesz mogła z jednej strony dzielić się tą wiedzą z osobami mniej doświadczonymi, z drugiej strony w projektach nie będziesz musiała poświęcać czasu na poznawanie podstaw, a jedynie na uczenie się tylko tych technologii, które są nowe albo nie często spotykane.

Ogólne rozeznanie, z kolei jest ważne ponieważ wraz z wrastającym doświadczeniem będziesz proszona coraz częściej o wybór technologii lub doradzenie jak można rozwiązać okreslony problem.W tym kontekście ważne jest, żeby wiedzieć jakie są alternatywy oraz być świadomym, gdzie znaleźć i jak rozumieć informacje o nich, żeby dokonać świadomego wyboru.

Oczywiście nikt nie oczekuje że będziesz znała wszystkie dostępne technologie, ale znajomość standardów (choćby do czego są używane i jak nazywają się biblioteki, które je implementują) jest konieczna na dalszych etapach kariery.

Jak wygląda dzień z Twojej pracy? Z jakimi wyzwaniami zmagasz się w swojej pracy?

Słowem wstępu pracuję obecnie w dużej firmie z branży IT, która realizuje międzynarodowe projekty.
Dzień pracy zaczynam od sprawdzenia skrzynki pocztowej, na którą od poprzedniego dnia mogły trafić zarówno nowe zadania, uwagi od innych programistów (efekt tzw. code review), ale też raporty z automatycznych systemów (np. informacja, że coś się zepsuło, spadła jakość liczona wg jakiegoś parametru itp). Jesli jest taka potrzeba, podejmuje odpowiednie działania (np. poprawiam błąd, który wyszedł lub przygotowuje jakiś raport/notatkę). Następnie podejmuję pracę tam gdzie skończyłem ją poprzedniego dnia – albo kontynuując prace nad zadaniem (staram się tego nie robić, a raczej kończyć zadania w ramach dnia, choć nie zawsze jest to możliwe) albo podejmując się nowego zadania z listy planowanych na bieżący etap.

Przed południem mamy spotkanie zespołu – telekonferencje (zespół pracuje w 3 różnych państwach) – tzw. Stand Up (to z metodyki SCRUM), podczas którego każdy krótko mówi o tym, co udało mu się zrobić, co planuje robić tego dnia oraz ew jakie napotkał problemy. Pozostała część dnia to w większości praca nad zadaniami, czasem zdarzają się sytuacje w których przełączam się na inne zadanie które jest np. pilnie potrzebne lub pomagam komuś z ich zadaniem czy też robię tzw. refactoring – poprawę ogólnej jakości kodu. Przed końcem dnia weryfikuje czy wszystie prace zostały zaraportowane w systemie oraz czy coś nie wymaga pilnej uwagi jeszcze tego dnia.

Jeśli chodzi o wyzwania są one różnego rodzaju, głównie zdarzają się problemy techniczne – przykładowo błąd który ‚chował się’ przez jakiś czas (np. jakaś niekluczowa informacja nie była zapisywana i nikt nie zauważył tego wcześniej) czy też zmiany w innym module wpłynęły na nasz i trzeba jak najszybciej się dostosowac do tych zmian (to w sumie najczęstsze problemy). Często poprawiając coś powodujemy falę mniejszych problemów (kliknij – mantra programistów ;) ) lub odkrywamy kod złej jakości który należy przepisać.

Dużym wyzwaniem jest też sama praca w miedzynarodowym zespole – najmniejszy z problemów to różnice stref czasowych (u nas największa różnica to 5h), do tego dochodzą aspekty kulturalne, temperament osób w projekcie oraz niestety czasami także problemy z kompetencjami niektórych osób (na szczęście firmy starają się same dbać o to, żeby zatrudniać osoby kompetentne lub przydzielać zadania które nie przewyższają kompetencji danej osoby). Wiadomo – im większy projekt tym więcej poziomów skomplikowania więc do tego często dochodzi koordynacja działań wielu osób.

Ogólnie to zawsze jest coś, co możnaby poprawić, ulepszyć, tylko brakuje czasu – stąd radzenie sobie z frustracjami dnia codziennego też bywa wyzwaniem (ale nie przesadzajmy, nie jest źle, po prostu każda praca wiąże się z jakimiś stresami).

Jaką radę dałbyś/dałabyś osobie która zaczyna karierę w IT?

Nie przejmuj się zdaniem innych w kwestii technologii – w IT stosunkowo silne są osobiste preferencje ;) Programista .NET bedzie Cię przekonywał, że jego technologia jest najlepsza, a przecież wiadomo, że to Java rządzi ( to żart oczywiście ;) każda z nich ma swoje wady i zalety ) – w programowaniu najważniejsze żebyś Ty się dobrze czuła z używaną technologią, żeby poszerzanie swojej wiedzy było dla Ciebie przyjemnością a nie udręką. Rynek pracy jest tak szeroki, że w dowolnej technologii można znaleźć zatrudnienie, a co może być lepszego od pracy która jest dla nas prawdziwą przyjemnością.

Druga rzecz to nie zrażaj się i nie ucz się ‚na siłę’. Zaczynając naukę dość szybko zdasz sobie sprawę, że ilość standardów, technologii, narzędzi jest ogromna, wręcz przytłaczająca. Pamiętaj o tym, że to nie znaczy że musisz je poznać czy nawet wiedzieć o nich – jak wspomniałem wcześniej swoją wiedzę z zakresu ‚całej Javy’ oceniam na 10-15%. I uważam to za wysoki wynik. Po prostu są eksperci specjalizujący się w innych dziedzinach i kluczem do sukcesu jest współpraca takich osób.

Wywiadu udzielił Jakub Derda, Starszy Programista Java, Współautor www.kobietydokodu.pl

Wielkie dzięki za miłą rozmowę!

Jeśli chcesz zadać Kubie pytanie – po prostu skomentuj ten wpis. W celu kontaktu bezpośredniego pisz na kuba@kobietydokodu.pl

IMG_0088

Cykl kulisy branży IT szuka bohaterów. Dziękujemy serdecznie za wszystkie dotychczasowe historie i wywiady! Chcesz podzielić się swoją historią i opowiedzieć o swoim zawodzie?  Napisz do nas i pomóż nam przedstawić szerokie perspektywy pracy w IT.

  •  
  •  
  •  
  •  
  •  
  • Alicja S.

    Świetny wywiad, bardzo motywujący! Dzięki! :-)

    • Cieszę się, że Ci się spodobał! Mam nadzieję że rzucił trochę światła na to, czym zajmują się programiści na codzień ;)

      • RazieL

        Dokładnie tak :-)

        Mało jest takie relacji ” od kuchni” – dzięki!

        • RazieL

          takich* – pośpiech ;-)

  • Ile faktycznie spędzasz w biurze przy komputerze – jest to naprawdę 8 godzin?!

    Wiążę pytanie z takimi zagadnieniami: kwestia bólu oczów i pleców, spadku koncentracji i utraty efektywności tego co się robi.

    • W wiekszość dni jest to pewnie bliżej 10-12 godzin bardziej niż 8 ;)
      W kwestii oczu, jest to bardzo ważne, żeby o nie dbać, np poprzez krople nawilżające. Często też odrywam wzrok od ekranu – np. notatki czy szkice i różne pomysły rozpisuje na kartkach a nie elektronicznie. Podejście do okna, spacer po kubek herbaty. Realnie na monitor patrzę może ok. 6-7 godzin? Nigdy nie mierzyłem, bardziej w sytuacji gdy czułem zmęczenie robię coś, żeby to wyeliminować.
      Jeśli chodzi o koncentrację, kwestia odpowiedniego planowania zadań. Ważne (dla mnie przynajmniej, podejrzewam, że u każdego wygląda to inaczej), żeby nie spędzić np. 5 godzin robiąc to samo. Dlatego często przeplatam zadania, uzupełniam system trackowania zadań i czasu, piszę komentarze, tesuje, na przemian z projektowaniem i programowaniem. Ważne żebyś znalazł swój ‚rytm’, na pewno jest jakaś kombinacja zadań czy kolejność ich ralizacji, która pozwoli Ci zachować skupienie przez cały czas :)

      • Gość

        Czy na takich stanowiskach łatwo znaleźć pracę jednocześnie: na pół etatu, w 100% zdalną, bez żadnych spotkań „w realu” i z nie za dużą liczbą telekonferencji, które nie potrwałyby za długo?
        Słyszałem, że np. programiści php tak mają.

        • Programowanie polega na zamianie potrzeb biznesowych klienta w konkretne rozwiązania technologiczne, więc na pewno nie da się uniknąć kontaktu z nim. To co odpisujesz na pewno pasuje do pracy freelancera, który biorąc zlecenie w 100% za nie odpowiada, sam zarządza swoim czasem i efektywnie komunikuje się z klientem. Da się zrobić. Realnie jednak, pracując na własny rachunek raczej zależy Ci na dobrym zrozumieniu klienta i sam chcesz mieć z nim wystarczający kontakt.
          Pracując w zespole potrzebujesz więcej komunikacji, by wiedzieć jak inne części projektu, poprosić o pomoc itp. Metodyki zarządzania projektami polecają częste spotkania zespołu po to by praca była efektywna. Czy odbywają się one zdalnie czy na żywo to raczej rzecz wtórna, choć na pewno łatwiej jest wejść w pewną kulturę organizacyjną poprzez pracę w jednym miejscu – chyba, że wszyscy pracują zdalnie.

          • Gość

            A czy dałoby się znaleźć pracę na pół etatu na wspomnianych warunkach, także na zlecenia?
            Jaki jest nacisk na szybkość wykonania? Pracując na pół etatu wydajność spada o połowę.

          • Będąc freelancerem zapewne tak, wtedy klient płaci za wykonane zadnia, i nie interesuje go ile czasu na to poświęcasz.
            Jeśli chodzi o stacjonarną pracę, to zależy oczywiście od firmy, ale od starszego programisty oczekuje się wkładu w firmę, rozwijania zespołu, poprawiania procesów itp. Myślę że mało firm zgodzi się na zatrudnienie senior developera na takich warunkach lub będzie to senior developer tylko z nazwy.

          • Gość

            W jaki sposób można zdobywać zlecenia jako freelancer? Zawsze można aktywnie ich szukać kiedy się chce, kiedy ma się czas, czy jest się skazanym na bierne czekanie aż ktoś się zgłosi?

  • giz

    Czy można znaleźć pracę jako Senior Developer, Architekt IT czy Starszy Programista JAVA nie mając odpowiednich studiów? Czy są one niezbędne?

    • Mając doświadczenie i wiedzę która pozwala pracować w takiej roli, nikt Cię o studia nie będzie pytał. Co najwyżej padnie pytanie, czy nie będą Ci przeszkadzały w pracy jeśli jesteś w ich trakcie (true story).
      Na stanowiskach seniorskich liczy się dużo bardziej to co potrafisz, jakie masz projekty w portfolio, kto może Ci wystawić rekomendację, czy masz certyfikaty branżowe itp. Uczelnia nie uczy rzeczy, które są potrzebne do takiej pracy.

      Natomiast jest druga strona medalu – jak się niestety przekonaliśmy wiele firm traktuje studia jako ‚warunek wstępny’ na stanowiska juniorskie – widząc brak studiów z góry zakładają, że osoba taka nie ma odpowiedniej wiedzy. JEst to głupie, ale tak to niestety wygląda – bez studiów trudniej będzie Ci się ‚przebić’ na początku swojej kariery. Co nie znaczy, że jest to niemożliwe, po prostu trudne.

  • ty

    napisz program, lub grę w javie i już. niech będzie miała jakąś tam funkcjonalność, grafika moze byc bardzo prosta, szczątkowa. to będzie coś co można pokazać w firmie potencjalne – patrzcie, to mój kod, tyle potrafię, tak umiem pisać. i w firmie stwierdzą czy chcą z taką osobą rozmawiac czy nie . prosta metoda na wejscie w tę branżę

    • ty

      aha,, ciekawy wywiad

  • Sakura

    Czy praca programisty jest stresującą?

    • Myślę, że nie bardziej niż każda inna – są sytuacje stresujące, ale plusem jest to, że o ile podążasz za procedurami / dobrymi praktykami, to właściwie wszystko da się ‚odkręcić’. Żadko kiedy od twojej pracy bezpośrednio zależy też zdrowie/życie ludzkie czy coś o sporej wartości. Z drugiej strony wraz z doświadczeniem przybywa odpowiedzialności – w zależności od firmy, projektu i stanowiska może się zdarzyć, że w środku nocy dostaniesz telefon, że system o którym nie masz pojęcia, a od którego zależy cała firma nie działa i musisz go naprawić – bywa i tak ;)
      Ogólnie wiele zależy też od Ciebie – jeśli chcesz więcej odpowiedzialności ale też szybciej się rozwijać to są możliwości, jeśli wolisz ‚spokojną’ posadkę bez stresów to także takie stanowiska znajdziesz w niektórych firmach.

  • Livruen Nati

    Brawo! Ja jak bylam w podstawowce to slyszalam, ze dziewczynki nie zostaja Informatykami i nie moglam sie w tym kierunku rozwijac. Na szczescie dostalam Burnout w wieku 27 lat, poszlam za glosem serca i teraz studiuje Informatyke xD

    • :) super, że podjęłaś taką decyzje – życzę wytrwałości w nauce i powodzenia w IT!

  • sajmplus

    Jak oceniasz certyfikaty Java (OCPJP)? Czy pomogły Ci one w znalezieniu pracy? Warto zrobić taki certyfikat czy lepiej dodać ciekawy projekt do portfolio?

    • To zależy od sytuacji – na pewno pomogły mi uporządkować swoją wiedzę. W momencie kiedy je zdawałem miałem już jakieś doświadczenie, więc nie przyczyniły się one bardzo mocno do znalezienia pracy/zleceń, ale na początku kariery mogą być przekonującym argumentem dla potencjalnego pracodawcy.
      W kwestii tego czy lepiej zdać certyfikat czy mieć projekt w portfolio – najlepiej obie te rzeczy na raz ;)

  • Lolek

    Ależ niewyjściowa facjata