Wpis z mikrobloga

Hej. Postanowiłem coś napisać odnośnie mojej przygody z #programowanie. Oraz dać kilka wskazówek dla Mirków zainteresowanych programowaniem, którzy jeszcze nie pracują, a może by chcieli.

---------------------------------
Programowanie jako takie poznałem dopiero na studiach, wcześniej chodziłem do tech inf, ale bardzo słabego i w sumie to nic tam nie robiłem (wiedziałem jak wygląda kod ale nie pisałem - może poza jakimś html w gimnazjum :D).

No więc, poszedłem na te studia, dzienne, PWSZ w Tarnowie. Uczelnie taką wybrałem, bo chciałem skończyć jakiekolwiek studia, a raczej matura jak i lokalizacja nie pozwalały mi na nic lepszego.
Przeszedłem pierwszy rok z bdb wynikami, tzn dużo rzeczy mnie rzeczywiście zainteresowało, takich jak: algorytmy, struktury danych, programowanie obiektowe, c / c++ / python.

Czułem jednak, że najwięcej programowania nauczę się w pracy i postanowiłem coś z tym zrobić.
Najlepszą opcją było przeniesienie się na zaoczne i znalezienie jakiegoś stażu / pracy.

Za mało jednak jeszcze umiałem na staż (podstawy c++). Po researchu rynku zdecydowałem się na Javę i zacząłem naukę.
Poszło dość szybko, po jakichś 3-4 miesiącach byłem w stanie w miare sprawnie posługiwać się językiem i springiem. Naklepałem jakieś proste CRUD-y na githuba i ruszyłem w Kraków :D.

Za wyniki dostałem dość wysokie stypendium, dodatkowo udzielałem korepetycji, więc byłem w stanie coś oszczędzić na przeprowadzkę. Pozostała kwestia uczelni.
Złożyłem dokumenty na AGH IEiT no i udało się. Zakończyłem trzeci semestr, a na czwartym byłem już w Krakowie.

Pochodziłem na parę rozmów i udało mi się dorwać jakiś słaby staż za marną kasę. Pierwszy miesiąc za darmo, kolejne dwa - 1500 zł netto (zlecenie).
Wiedziałem, że przez te trzy miesiące wydrenuje się do zera z kasy, a nawet będę na minus, ale potrzebowałem czegoś na szybko, żebym mógł studiować, a pieniądze nie miały znaczenia.

Firma okazała się być całkiem spoko, dostawałem taski jak normalny developer, pisałem kod w projekcie komercyjnym, miałem jakiś tam wpływ na produkcyjny system.
Po trzech miesiącach, oswoiłem się bardziej ze Springiem i Hibernate, ogarnąłem bardziej Javę.
Dostałem podwyżkę na 3500 zł netto (zlecenie).

Po tych trzech miesiącach wziąłem się ostro za naukę. Tzn w domu się nie uczyłem, bo za bardzo nie było nawet na to czasu, a nie chciałem się też zajeżdżać programowaniem, żeby mieć chęci do pracy.
Dużo nauczyłem się przez to jakie miałem podejście - nie robiłem tasków na prędkość, starałem się zawsze dogłębnie analizować problem i szukać najlepszych rozwiązań, doskonalić kod, który napisałem, przegrzebywać się przez StackOverflow dowiadując się jak coś w Springu czy Javie działa.

Z czasem zacząłem się wprowadzać w świat Javy 8, dodałem też do tego TDD, a później BDD.
Poznałem kilka frameworków, które udało się wprowadzić do nowego projektu (Cucumber, Spring Boot, Spring Data), a także CI (Docker, Jenkins).
Taki stack doskonalę, aż do teraz.

No i tak przepracowałem te 5 miesięcy, w sumie ze stażem to 8.
Powysyłałem CV i dostałem kilka zaproszeń na rozmowę.
Zdarzało się, że nie było w ogóle odzewu na wysłane CV, albo informacja o nie zaproszeniu na rozmowę. Głównie dlatego, że wysyłałem też na oferty regular / senior, z pytaniem o pozycje juniorskie, a większkość z tych ofert były wystawiane przez agencje outsourcingowe.

Byłem w ciągu tygodnia na 3 rozmowach, (startup, software house, duże korpo(outsourcing)).

Ze startupu dostałem pozytywną odpowiedź (była tylko jedna rozmowa) - kwota jaką proponowali to 4500 netto (zlecenie).

W korpo była szybka rozmowa przez telefon, a po technicznym etapie odpadłem (miałem problemy z oszacowaniem złożoności obliczeniowych - i znaniem złożoności operacji na niektórych kolekcjach).
Od tego korpo dostałem propozycje przeprowadzenia rozmowy technicznej (1h) i po tej rozmowie stwierdzili, że jednak chcą współpracować i ocenili poziom mojej wiedzy na 'regular dev'. W końcu i tak tam odpadłem po jeszcze kolejnej rozmowie (już finalny etap), przez skypa. Dużo miałem pytań o rzeczy, które mnie nie interesowały i raczej nie ukrywałem niezadowolenia projektem jaki proponowali.

Software House zaprosił mnie na drugi etap.
Etapem drugim w software housie, była rozmowa techniczna, bardzo mądrze zresztą przeprowadzona. Zbyt prosta to ona nie była, ale dobrze weryfikowała czy ktoś myśli czy tylko klepie ten kod.
Okazało się, że chyba jednak coś myślę bo dostałem ofertę :D 5000 zł netto (zlecenie). Ja wychodziłem z kwotą 6000 zł, ale zdawałem sobie sprawę, że może być ciężko.
Ofertę przyjąłem.

---------------------------------
Co do kwestii rozwoju w celu znalezienia pierwszej pracy.

Polecam wbrew pozorom przeczytać jakąś dobrą książkę do Javy, najlepiej z wprowadzeniem do Javy 8.
Np. Horstmann w dwóch częściach
Jasne, wszystko jest w necie, jest pluralsight, są tutoriale...
Moim zdaniem książka jednak trzyma początkującego za rękę i krok po kroku wprowadza w świat programowania, pokazując jego różne aspekty i zakamarki, których w tutorialu raczej nie spotkamy.
Dziwnie się tak mówi, jak sam nie przeczytałem ksiąki do Javy przez znalezieniem pracy... No ale przeczytałem do C++ i miałem jakieś pojęcie o tym jak uczyć się nowego języka i na co zwrócić uwagę.

Przy czytaniu takiej książki robi się zadania, które bardzo dużo dają. Teorie trzeba znać, ale praktyka jest najważniejsza (w sumie to trochę jedno wynika z drugiego).

Jak ogarniesz dobrze podstawy. To wtedy warto zainteresować się Javą EE, Springiem, Mavenem, git-em, testami z wykorzystaniem TDD i BDD.

Ogólna lista rzeczy którą powinien znać junior to według mnie:
Java SE (minimum 7)
Java EE
Clean Code ! (koniecznie DRY i KISS)
Spring
Maven
Git
JUnit

Takie dodatki zwiększają też szansę na znalezienie fajnej pracy, czyli czegoś lepszego niż korpo typu Comarch, Ericpol itp. (bez obrazy :)).
Mockito
TDD
BDD
SOLID
Tomcat
Jenkins

---------------------------------
Mam nadzieję, że pomogłem. Powodzenia w szukaniu pierwszej pracy :)

#programowanie #programista15k #it #praca #rozwojosobisty
  • 27
  • Odpowiedz
Maven


@sovas: raczej wykorzystywany w starych projektach,to nawet ja jako ktoś nieznający i nie programujący na codzień w javie wiem że jak bym siadał do niej to powinienem na pewno ogarniać gradlea a potem mavena
  • Odpowiedz
@Jurigag Niestety większość projektów stoi na Mavenie. Gradle rzeczywiście można by używać w nowym projekcie, ale jak ktoś dopiero zaczyna to raczej natrafi na Mavena. Zresztą, to są narzędzia do zarządania procesem budowania, więc myślę, że znajomość, któregokolwiek z nich jest OK :)
  • Odpowiedz
@sovas: Niestety, szary user.
Zazdroszę smykałki do Javy. W moim mieście jest pełno ofert do niej. Ja próbuję wejść w gamedev/programowanie od dawna, więc bardziej bym wolał C# albo C++ (do unity3d/unreal engine). Ale z kolei tu nie ma gdzie zacząć nawet stażu bo wszyscy chcą rok doświadczenia.
  • Odpowiedz
@sovas z ciekawosci do ktorego technikum chodziles w Tarnowie, ze tak slabo bylo? Szedles tym starym trybem z jednym egzaminem zawodowym czy nowym z trzema kwalifikacjami ?
  • Odpowiedz
@sovas: można coś jeszcze dorzucić do frontu np Angulara bardzo dużo w nim projektów. W nowych projektach już coraz śmielej stosuje się Angulara2 więc warto się nim zainteresować. Nie wiem jak u Ciebie ale firmy zazwyczaj chcą żeby developer coś tam ogarniał na froncie html/css/js :)

Nie wspomniałeś nic m.in o RESTcie bo raczej o to też juniorów pytają ale skoro ktoś się uczy np springa mvc to musi ogarnąć co
  • Odpowiedz
  • 0
@m4tus Tak jak napisałeś MVC. Przez spring rozumiem core, mvc, boot, data. Nie wiem jak jeszcze w nowej firmie. W obecnej mam typescripta i angulara 2, ale za bardzo się w backend na razie wkręciłem.
  • Odpowiedz
Ogólna lista rzeczy którą powinien znać junior to według mnie:

Java SE (minimum 7)

Java EE

Clean Code ! (koniecznie DRY i KISS)

Spring

Maven

Git

JUnit


@sovas: Ale zastanów się, #!$%@?, przecież prawie każdy z wymienionych przez ciebie tematów jest tak obszerny, że potrzeba lat, żeby się w nim porządnie zadomowić ( ͡º ͜ʖ͡º)

Uważasz, że umiesz Javę? Życzę Ci, żebyś nie trafił kiedyś na
  • Odpowiedz
  • 0
@Dreando: Nie bulwersuj sie tak. Nie napisalem, ze 'znam jave'. Znam jave na poziomie juniora. Nigdzie nie napisalem, ze te tamaty trzeba ogarniac w calosci.
  • Odpowiedz