Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Dzień dobry,

zwracam się do Was drodzy programiści z kilkoma pytaniami. Z góry dziękuję za poświęcony mi czas.

Postanowiłem wkroczyć na rynek pracy i potrzebuje kilku informacji.

Jak sprawdzić swoją wiedzę?

Znalazłem taki test http://testykwalifikacyjne.pl/java-test-junior-developer/ rozwiązałem go 2 razy, raz mi wyszło 50% raz 65%. Czy to znaczy jest jestem tylko w połowie drogi do juniora? Mam pewne 'ale' do tego, ponieważ czytałem na różnych blogach i tu na GoldenLine, że podobno na Juniora zbyt wiele się nie wymaga. Natomiast przyznam, że w tym teście było dużo trudnych pytań które podziałały jak kubeł zimnej wody.

Dlaczego chcę sprawdzić swoją wiedzę?

Ponieważ chcę szukać pracy i potrzebuję jakieś odniesienie – czy moja wiedza jest już wystarczająca żeby próbować swoich sił, czy też powinienem się jeszcze douczyć i ewentualnie czego powinienem się douczyć? A może moja wiedza przekracza już poziom juniora i powinienem aplikować na „normalnego” programistę?

Wiąże się to również z tym o jakie kwoty mógłbym negocjować, chciałbym żeby były adekwatne do mojej wiedzy.

Krótko o mnie:
Na studiach miałem 1 semestr Javy. Po zakończeniu studiów rozpocząłem dalszą, samodzielną naukę programowania. Szczególnie zainteresowałem się nowoczesnymi aplikacjami webowymi. Poznałem podstawy związane z tworzeniem REST Api (Spring Boot, Spring Data REST, JPA, Spring Security, DI, programowanie pod interfejsy, MVC) oraz ich konsumpcja w AngularJS. Również miałem styczność z Grails. Przeczytałem książkę „Spring w Akcji. Wydanie III”, autora Craig Walls. Wiem, że wszystko co do tej pory poznałem to zaledwie wierzchołek góry lodowej, jednak jestem zainteresowany dalszym rozwojem. Dodatkowo oglądam również materiały z konferencji o spring na youtubie.

PROJEKTY:
#2
Projekty mające na celu zapoznanie się z nowymi technologiami. Szczegóły do wglądu na https://github.com/cwichu

#1
Zaprojektowanie i wykonanie aplikacji bazodanowej (pracy dyplomowej) – „Internetowa ankieta oceny wykładowców przez studentów na Wydziale Przyrodniczo – Technicznym KPSW” z wykorzystaniem:
--> Baza danych: MS SQL SERVER 2008 R2
--> Interfejs użytkownika: PHP, HTML, CSS
(dokumentacja dostępna na życzenie)
Jarema Antosz

Jarema Antosz Java Developer, VSF
Experts GmbH

Temat: Przygotowanie do szukania pracy, potrzebna porada

Pytanie, czy masz na koncie już jakiś komercyjny projekt? Projekty akademickie to jedno, ale praca nad komercyjnym projektem to często już zupełnie inna bajka. Nie chodzi tu często o znajomość API i bibliotek, a raczej o to, czy "czujesz" pewne tematy.
Może po prostu zwróć uwagę na to, jakiego doświadczenia wymaga się w danej ofercie. Z dobrym nastawieniem w porządnej firmie szybko rozwiniesz swoje umiejętności.
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Nie mam komercyjnego doświadczenia, to będzie moja pierwsza praca. No właśnie nie wiem jak to sprawdzić czy to „czuję”, a bardzo jestem ciekaw. Widzę oferty dla Juniora ale wymagania są 1-2 lata doświadczenia + cała litania technologii. Nie chce kłamać o umiejętnościach tylko dlatego żeby mnie HR raczył zauważyć. Zakładam ze po 1-2 latach programowania nie jest się już Juniorem, chyba powinno się widzieć szerszy obrazek tego jak to ma działać? No chyba, że po 2 latach ktoś dalej ogarnia tylko podstawy... wtedy chyba jest coś nie tak? Czy się mylę?
Jarema Antosz

Jarema Antosz Java Developer, VSF
Experts GmbH

Temat: Przygotowanie do szukania pracy, potrzebna porada

Próbuj, co Ci szkodzi. Sporo ofert jest kopiowanych z kalki. Sporo firm jest otwartych na osoby bez doświadczenia, ale za to z chęciami.Ten post został edytowany przez Autora dnia 07.04.15 o godzinie 19:56
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Jak to jest z wypełnianiem "umiejętności" tu na profilu GoldenLine?

np czy powinienem dodać umiejętność Maven? nie jestem Maven - ekspertem, ale wiem o co chodzi i jak dodawać dependency's natomiast nie potrafię dokonywać bardziej skomplikowanych konfiguracji plugin'ow czy innych rzeczy. Czy powinienem przemilczeć znajomość Maven?

to samo tyczy się serwerów np Tomcat, Glassfish, wiem, że istnieją i jaką pełnią rolę natomiast wiem, że można je konfigurować ale z tym już bym sobie nie poradził.

podobna historia z ORM. Użyłem Spring Data REST, który bazuje na Spring Data JPA, który implementuje JPA z użyciem np. Hibernate. Generalnie domyślam się, że znajomość JPA jest istotniejsza niż znajomość poszczególnych frameworków, ponieważ one i tak implementują JPA. 70% ofert wymaga Hibernate, czy zatem powinienem dodać do umiejętności "Hibernate" jeżeli defakto nigdy go bezpośrednio nie użyłem, a użyłem go jedynie za pośrednictwem warstwy abstrakcji Spring Data REST? W zasadzie Spring Data REST tylko eksportuje warstwę domeny jako REST end-pointy, czy zatem jeżeli np samodzielnie wykonałem warstwę domeny z relacjami między encjami to czy mogę wpisać sobie w umiejętności Hibernate? czy też powinienem to przemilczeć?

Ta sama historia, jeśli chodzi o Spring, a poszczególne jego moduły. Miałem styczność z Spring Boot który wykonał za mnie cała konfiguracje. Orientuje się w adnotacjach, natomiast jeszcze nie konfigurowałem springa przez XML. Powinienem wpisać sobie w umiejętności "Spring" czy też wyszczególnić konkretne moduły np. Spring Boot itp?

Pytam w kontekście tego jak optymalnie uzupełnić swój profil GoldenLine. Każdy kto miał do czynienia ze springiem, w ten czy inny sposób (w kontekście web) miał do czynienia z maven/grandle, tym czy innym serwerem, tą czy inną bazą danych. Czy wpisywać umiejętności wszystkie, natomiast przy rozmowie telefonicznej wyjaśniać w jakim kontekście i w jakim stopniu się miało z nimi do czynienia? Czy np. dodawać niestandardowe umiejętności typu "cośtam - podstawy", zakładam, że jak będę tworzył nowe własne umiejętności to system GoldenLine może ich nie zindeksować jako tych popularnych i potencjalna osoba rekrutująca szukająca po słowach kluczowych nie odnajdzie mnie, ponieważ moje słowa kluczowe będą nowe i nie popularne.

Jak to jest?
Jarema Antosz

Jarema Antosz Java Developer, VSF
Experts GmbH

Temat: Przygotowanie do szukania pracy, potrzebna porada

Hmmm... może po prostu wpisz Java, Spring, JPA, Hibernate i Maven? Wydaje się, że na stanowisko juniora nikt nie będzie od Ciebie wymagał cudów, a raczej dobrej znajomości core Java i JPA / Hibernate. Skup się na solidnych podstawach.
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Jarema Antosz dziękuję, że poświęcasz mi czas, Twoje uwagi są dla mnie bardzo ważne.

Edit:
Ok, umiejętności dodane. Te co mi doradziłeś + Git - bo podstawy znam i mam tam swoje eksperymenty, MVC, REST oraz Linux Ubuntu. W zasadzie zastanawiałem się również czy nie dodać AngularJS, niby zrobiłem jakieś podstawowe CRUD operacje na REST Api (i przyznam, że SPA robi wrażenie), ale w sumie z JavaScript'u jestem słaby i mogło by mnie to chyba bardziej pogrążyć niż pomóc. Nie mogę się doczekać najbliższej rozmowy rekrutacyjnej, aż jestem ciekaw jakie dostane problemy do rozwiązania. Czas ruszać podbić świat :)Ten post został edytowany przez Autora dnia 08.04.15 o godzinie 22:43

konto usunięte

Temat: Przygotowanie do szukania pracy, potrzebna porada

Zrobiłem ten śmieszny test. Takich pytań na rozmowie o pracę raczej nie będziesz miał. Niektóre są zbyt szczegółowe (nikt nie dokumentacji w głowie), niektóre dziwnie sformułowane, poza tym nie musisz znać odpowiedzi na wszystkie pytania, żeby dostać pracę (właściwie to chyba nigdy na żadnej rozmowie o pracę nie odpowiedziałem na wszystkie pytania). Rozmowy o pracę są dosyć elastyczne, jak nie znasz odpowiedzi to nie kombinuj tylko mów wprost, że nie wiesz i ewentualnie dodaj jak byś szukał odpowiedzi, gdybyś trafił na taki problem w pracy. Poza tym będzie też dużo pytań, powiedzmy "otwartych", np. "Jakie pan robił projekty na studiach", "Jakie problemy pan natrafił pracując nad projektem X" (w Twoim wypadku to raczej pewniaki). Wynik rozmowy jest wypadkową tego co wiesz i jak dobrze rokujesz.

Co do tych umiejętności to są różne podejścia. Ja kiedyś przeczytałem, że lepiej wpisywać bez podawania poziomu znajomości, bo to już kwestia osoby technicznej, żeby to zweryfikowała na rozmowie. Wydaje mi się to dobre, bo i tak często nie potrafimy sensownie ocenić siebie samych. Ja wpisuję wszystko co potrafię na jakimś podstawowym poziomie używać (powiedzmy, że zrobienie jakiegoś krótkiego tutoriala to za mało :) )

PowodzeniaTen post został edytowany przez Autora dnia 08.04.15 o godzinie 22:39
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Tomasz Szatkowski dzięki za opinie, jest dla mnie ważna.

Również uważam, że przerobienie tutoriala step by step to troszkę za mało aby od razu chwalić się umiejętnością w CV. Myślę, że najlepiej to pobrudzić sobie ręce i zrobić coś co wykracza poza założenia tutoriala, jakiś eksperyment oparty o własne założenia. Powstaną wtedy problemy, które trzeba rozpracować samemu, a to już jakaś wiedza chcąc nie chcąc jest.
Jarema Antosz

Jarema Antosz Java Developer, VSF
Experts GmbH

Temat: Przygotowanie do szukania pracy, potrzebna porada

Na pewno warto się pochwalić, że na własną rękę badasz różne tematy i starasz się zdobyć wiedzę oraz eksperymentujesz z różnymi narzędziami. W naszej branży ważniejsza jest moim zdaniem umiejętność szybkiej nauki, niż znajomość n liczby frameworków w małym palcu. Oczywiście, warto dogłębnie wgryźć się w core java, ale narzędzia warstwy widoku to często kwestia aktualnej mody.
Z mojej strony dodam jeszcze, że warto zainteresować się zagadnieniami tzw. "czystego kodu".Ten post został edytowany przez Autora dnia 08.04.15 o godzinie 23:05
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Zgadzam się w 100%

Nie wierzę w to, że jeżeli ktoś w swoich umiejętnościach wymienia 20 frameworków to je wszystkie zna. Chyba pobieżnie... Na swoim głupim przykładzie: od ponad pół roku zagłębiam się w REST serwisy z springiem, ogólnie z Java, czymś do frontendu i przez chwile z Grails. Wnioski?

Jak zaczynałem było:
Grails 2.4.4,
Spring Framework 4 dopiero wchodził,
coś tam o Java 7 słyszałem,
spring boot był w wersji 1.9.x
AngularJS 1.3.8

Teraz?
Grails 3.0
Spring Framework 4.1
Java 8 (i Java 9 zapowiedziana) interfejsy funkcyjne, lambdy itp
Spring boot już prawie 1.3 (a reszta popularnych modułów również do przodu jedzie)
AngularJS 2.0+ podobno wszystko robi inaczej bo coś tam zmieniają fundamenty

Tak, że rynek narzędzi ruszył o jakieś 10% w ciągu ponad pół roku... i to z każdym narzędziem. Dlatego uważam, że niemożliwym jest, żeby znać wszystko na bieżąco jeśli ktoś ma wypisane 20 frameworków w umiejętnościach. Tak realnie wydaje mi się, że z 5 narzędzi można śledzić może więcej, ale nie aż tyle.

Dlatego właśnie doszedłem do wniosku, że nauka dla samej nauki nie ma sensu. A praca programisty odnosi się do jego zdolności do adaptacji, do aktualnie używanych technologii w projekcie. Może się mylę wyjdzie w praniu.

Jeżeli nowe technologie też Cię interesują, jak mnie. Zobacz https://www.meteor.com/ , jest to tzw. full stack JavaScript framework, coś jak MEAN Stack lub jak połączenie AngularJS+Firebase. Bazuje na ostatnio modnym nodeJS, mongoDB. Czyli tzw. real-time web app. Za każdym razem jak następuje zmiana w bazie danych, subskrybenci (client) są powiadamiani i pobierają nowe dane. Cała bajka z websockets publisherami i subskrybentami. Takie nowości jak OAUTH do praktycznie dowolnego konta czy to facebook czy gmail czy inne można osiągnąć 1 komendą w wierszu poleceń, coś niesamowitego. Wystarczy, że dojdziesz do połowy ich tutoriala, dla mnie to było jakieś 20 minut, a masz gotową prostą appke w stylu "TODO list". Podobno w springu jest coś podobnego i nazywa się Spring Reactor ale jeszcze się do tego nie dokopałem.

Websockets, dwustronna komunikacja przeglądarki i serwera to jeszcze dla mnie nie odkryte tereny. Jednak uważam, że jest to niesamowite, a gdyby do tego wrzucić jeszcze hadoop to wogóle niesamowita niesamowitość :)

konto usunięte

Temat: Przygotowanie do szukania pracy, potrzebna porada

Jak zaczniesz szukać to znajdziesz niejedną ofertę z Javą 1.5.

Rynek jest delikatnie do tyłu w stosunku do tego o czym się pisze, bo jeśli coś działa to po co to psuć?

Przejście z Angulara 1.x do 2.x też pewnie trochę potrwa.

O Pythonie 3 to nawet nie mówię, bo tam to jest bardzo wyraźne :D
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

rynek zacofany, a programiści lubią nowinki, szach mat dinozaury!! :)

konto usunięte

Temat: Przygotowanie do szukania pracy, potrzebna porada

Tadeusz Ć.:
Nie wierzę w to, że jeżeli ktoś w swoich umiejętnościach wymienia 20 frameworków to je wszystkie zna. Chyba pobieżnie...

To prosta sprawa. Z jednej strony wiele ogłoszeń o pracę jest niepoważnych, z drugiej strony wiele CV jest również niepoważnych ale co na to począć? Jak się jest początkującym to trzeba się jakoś przebić. Musisz zdawać sobie sprawę z jednej zasadniczej rzeczy. Zasada 80/20 obowiązuje dosłownie wszędzie a co do JAVA (i wszystkich innych języków programowania) pewne rzeczy będą wykorzystywane częściej niż inne.

Mogę się założyć że jak już z czymś pracowałeś, to masz utrwalone we własnej głowie to co jest wykorzystywane najczęściej. Zresztą nawet przeanalizuj sobie jakieś kody OS, i zobacz ile z tego co oferuje JAVA jest wykorzystywane i jak często.

Uczyć się tego wszystkiego (i nie mówię tu o nie wiadomo ilu FW ale nawet o takim Springu) niemal wszystkiego i to jeszcze na pamięć to jakiś kompletny debilizm, od tego jest dokumentacja żeby sobie zajrzeć a to co masz już utrwalone w głowie pozwoli Ci po prostu dość szybko i sprawnie tworzyć aplikację. Coś jak pamięć podręczna która przyspiesza operacje na dysku komputera.

Te testy w których masz odpowiedzieć (analizując to w głowie) jaki będzie wynik jakiegoś tam fragmentu kodu to również jakiś kompletny debilizm i nie wiem co ma to sprawdzać. Od tego masz kompilator (choćby online) żeby sobie sprawdzić jaki będzie wynik. Poza tym jak coś napiszesz i nawet nie sprawdzisz to jaką to ma wartości? Pewnie te testy zakładają, że ten kto je zda na 100% jest takim magikiem, że każdy kod który pisze jest niemal bezbłędny że nie trzeba sprawdzać ale to nie ma zastosowania w praktyce.

Nawet NetBeans czy Eclipse już jak coś tam piszesz w IDE to Ci będzie na bieżąco sprawdzać kod i wyświetlać z lewej strony na pasku czerwone czy żółte ikonki i nie dotyczy to tylko JAVA ale i np. PHP czy jakichś innych obsługiwanych przez to IDE języków.
Sebastian S.

Sebastian S. Java Developer w
J-LABS sp. z o. o.

Temat: Przygotowanie do szukania pracy, potrzebna porada

Ja do niedawna byłem w podobnej sytuacji. Również próbowałem dostać się na juniora java developera. Byłem na kilku rozmowach, na których programiści ostrzeliwali mnie pytaniami.

Przede wszystkim musisz mieć solidnie opanowaną czystą Javę. Pytania jakie padały raz były szkolne, a raz takie, że bez zaglądania pod maskę ani rusz. Np. szczegółowe różnice pomiędzy listą, a setem. Kiedy stosować listę, a kiedy set.

Na różnych uczelniach inaczej podchodzą do nauki programowania, a i poziom samych studentów decyduje o wykładanym materiale. U mnie niestety 4/5 kolegów i koleżanek bała się programowania jak ognia, więc za dużo się nie nauczyłem.

Dlatego, gdy zauważyłem, że nie mam większych problemów z nauką programowania, to zacząłem interesować się tym, szczególnie po praktykach, które otworzyły mi oczy i sprowadziły na ziemię.

Zainteresowałem się Springiem, Hibernate, AngularJSem, Mavenem, Eclipse itp. itd. Mój projekt dyplomowy opierał się na REST i SPA oraz wyżej wymienionych technologiach. Bardzo dużo się nauczyłem pisząc od podstaw aplikację na dyplomówkę.

Warto chwalić się aplikacjami, które się napisało (np. podać link do twojego profilu na githubie). Choćby to były małe i nie uwzględniały przypadków takich jak jednoczesna edycja tego samego rekordu przez kilku użytkowników. Grunt to dobrze rozdzielić logikę i wyróżnić warstwy biznesowe.

Wracając do firm... to niektóre są wręcz niepoważne. Dostajesz test pisemny i kompilujesz na kartce. Który absolwent napisze z palca metodę operującą na plikach tekstowych? Rozumiem znać na pamięć podstawowe struktury, ale string builder? Niektórzy chyba myślą, że absolwent wchłonął całe Thinking in Java albo specyfikację Javy i recytuje je równie dobrze jak Zdrowaś Mario... Test pisemny jako forma kwalifikacji kandydata, to oznaka, że szukają robota, a nie człowieka.

Gdy odbywasz rozmowę z programistą, to wypytuje cię on w taki sposób, aby zobaczyć czy rozumiesz dane zagadnienie. Nie chodzi o to, aby pisać kod, który działa tak, a nie inaczej i nie zastanawiać się nad nim. Na rozmowie wyjdzie czy wiesz po co w ogóle jest adnotacja @Transactional, bo to, że widziałeś to na tutorialu i działa, to nie wszystko.

Warto odbyć kilka rozmów kwalifikacyjnych, gdzie programista rozmawia z tobą. Oswoisz się wtedy z rzeczami, na które jest kładziony największy nacisk i zaczniesz trochę inaczej myśleć.

Firm, które inwestują w absolwenta jest jak na lekarstwo. Pomijając demotywujące ogłoszenia, to często bywa tak, że chcą abyś miał już 2 lata doświadczenia po ukończeniu pierwszego stopnia studiów albo miał potwierdzony udział w projektach Open Source. Tylko nie biorą pod uwagę, że najzdolniejszych wyłapują giganci i nie każdy student ma jednocześnie i predyspozycje i czas, aby pracować jako programista podczas studiów bądź pisać projekt za projektem po godzinach.

Jedyna rada na takie nastawienie to bycie upartym, nauka we własnym zakresie i próbowanie gdzie się da i ile się da, nawet gdy od 20-stej firmy dostajesz informację, że obecnie jesteś za słaby i zachowają twoje CV na wszelki wypadek.Ten post został edytowany przez Autora dnia 10.04.15 o godzinie 22:40
Tadeusz Ćwichuła

Tadeusz Ćwichuła Application
Developer

Temat: Przygotowanie do szukania pracy, potrzebna porada

Sebastian Sobiech jak bym czytał o sobie. Tylko, że ja pracę dyplomową zrobiłem w PHP bez wzorców tak, że typowe spagetti :) U mnie też na cały rocznik ledwo kilka osób coś ogarniała tak, że poziom musiał być dostosowany do wszystkich.

Po studiach zrobiłem reseach na rynku. Wybrałem Jave, również byłem z niej dobry na studiach. Dalej aplikacje desktopowe vs webowe, wybrałem webowe. Odkryłem istnienie wzorców. Uznałem, że to niesamowite, że klikam w przeglądarce, a treść sama się ładuje bez przeładowania strony (SPA), jak w apce desktopowej. Dodatkowo znalazłem REST i to, że po stworzeniu takiego serwisu wiele urządzeń może używać - czy nie super?.

Wszystko fajnie. Moja mina po wygoglowaniu "How to build www in java" - bezcenne. Mnogość technologii porażająca. Serwery... tomcat, jetty, glassfish, jakiś JBoss, testy? co to są testy?, ORM? orm nawet fajne... JPA, Hibernate TopLink i chyba coś tam jeszcze. Type warstw tyle pakietów, domena, repozytoria, servisy, controllery, Servlety, frameworki Spring struts play wiecej wiecej wiecej.

Każdy tutorial używa innego zestawu, a o gigantycznym pliku pom.xml nie wspomnę. Tak było na początku mojej znajomości ze światem Java. Teraz już jest dużo lepiej i w miarę wiem co do czego, a nawet coś tam posklejałem z użyciem właśnie Spring Boot, AngularJS

Również ciekawe doświadczenia podczas googlowania "Spring SPA" ... tyle jest tych wiosennych kurortów odnowy biologicznej :D

Następna dyskusja:

programisci Java do pracy w...




Wyślij zaproszenie do