Programista Java poziom startowy AD 2015

0

Cześć, potrzebuję się trochę "przekwalifikować", jestem po studiach inżynierskich, informatyka, nie robiłem programowania jako specjalność, ale chciałbym pójść w tym kierunku. "Przeszedłem thinking in Java, bez GUI (teraz to nadrabiam). Z ofert wnioskuję, że popularne wymagania to znajomość Spring, Hibernate, JavaEE, SVN lub GIT, XML, SQL i wzorce projektowe. Oprócz tego oczywiste są algorytmy i struktury danych.

Jak w Waszej opinii należy się przygotować aby dostać się na poziom wejściowy dla programisty Java, czy jakaś wiedza oprócz tej którą wymieniłem jest potrzebna, a może część z tego co tu jest odłożyć na później? Generalnie oferty są nastawione na osoby które mają już referencje. Powinienem coś napisać w ramach swojego portfolio nawet jako mały projekt OS?

2

Zawsze lepiej mieć jakiś projekt niż nie mieć ;)
SVN/GIT nauczysz się "przy okazji" pisząc dowolny projekt, to nie jest rocket science. Hibernate/JPA na poziomie podstawowym też nie. Jeśli chodzi o Spring i JEE to musisz wybrać co ma być "wiodącym" stosem bo to są generalnie konkurencyjne technologie. Warto mieć jednak na uwadzę że zwykle korzysta się po trochu z obu.

0

Miałem dopisać ale mnie ubiegłeś, jest jeszcze MVN jeśli chodzi o wersjonowanie. Generalnie utknąłem jeszcze na poziomie konsoli, chciałbym pójść w desktopy lub androidy, ale nie wiem czy to "idzie" na rynku. Chociaż na poziomie startowym to pewnie nie ma co wybrzydzać.

0

@Shalom
a Ty jak uważasz ? Przeglądając, oferty pracy przoduje JEE, jak się do tego odniesiesz ? I w co Ty byś osobiście uderzał (uznał za swój priorytet).

1

@jj44 na rynku idzie web ;)
@JanNiezbedny ja pracuje ze Springiem i mam wrażenie że to on raczej przoduje, przynajmniej w kontekście DI czy Web.

0

@Shalom Do referencji zrobić aplikację webową? Web najprostszym wejściem na rynek javy?

0

Tak najwięcej się robi Web.
Co do Spring vs JEE to Spring jest prosty i łatwo można się go nauczyć, więc polecam raczej Springa niż standard JEE

5

Nieważne czy nauczysz się Springa czy JEE. Osobiście polecam JEE, ponieważ jest mniejsze i łatwiejsze w konfiguracji (konfiguracja Springa jest trudna dla początkującego). Wystarczy chociażby porównać zależności mavena dla jednej i drugiej opcji. W JEE jest tego dużo mniej. W JEE złożoność również występuje, ale jest ukryta w serwerze aplikacyjnym. Dzieku temu masz out-of-box obsluge np. pol polaczen JDBC. Bez serwera aplikacyjnego masz dodatkowa robote. A programista szybko skupia się na dostarczeniu działającego rozwiązania, a za to sie placi. To iluzja, że zabawki jak Spring Boot spowodują, że nie trzeba mieć dokładnej wiedzy o tym jak Springa skonfigurować jeśli ktoś chce programować na poważnie.

Wiedza, którą wyniesiesz z JEE może być wykorzystana wraz ze Springiem. Zaczyna się mnóstwo nowych projektów w JEE. Robi się to bardzo często, ponieważ tam, gdzie liczy się kasa i dostarczenie produktu na czas wybiera się rozwiązanie, które spowoduje jak najmniej problemów, często chce się mieć kompletny stack. Konfiguracja Springa jest banalna jak rozumiesz, ale wymaga konkretnej wiedzy z obu specyfikacji (np. web.xm, aby zaldowac kontekst Spring). Spring bardzo często korzysta z JEE (filtry, servlety).

Większość osób, które twierdzą, że JEE jest bardziej skomplikowane niz Spring nie pracowała z tym zbyt dużo albo ma przeterminowane informacje z czasów J2EE. Ostatnio na prezentacji jednego z JUGow spotkałem się, że starszy kolega Springowiec opowiadając o Springu twierdził, że w 2015 roku występują podobne problemy jak z EJB 2.1. Po prostu opowiadał coś na podstawie zasłyszanych informacji, ale wprowadzał w błąd. Mamy JEE7.

Pierwsza rzecz: zdefiniuj wymagania. Jak będziesz wiedział co chcesz pisać wybieraj technologie (pod problem jaki chcesz rozwiązać). W przyszłości może się okazać, że będziesz próbował np. budować rozwiązanie korzystające z Hadoop / Big Data. Tego typu zabawki nie są wspierane w JEE. To jest przykładowy powód, dla którego potencjalnie można chcieć wybrać Springowy stos: obsługa innowacyjnych technologii.

Polecam bloga Adam Bien, dobrze pisze o JEE. http://adambien.com/

Ogólnie:

  • warto znać jedne i drugie, ale nie wszystko na raz
  • Spring nie wymaga serwera aplikacyjnego (w tej chwili taki TomEE też może być łatwo embeeded w aplikacji Javy SE)
  • Spring wytycza nowe trendy (wiele rzeczy ze Springa trafia do standardu, jak Spring Batch, który trafił do standardu Java EE 7)
  • Spring wykorzystuje specyfikacje z JEE np. Servlety i Filtry w przypadku Web
  • dla małych projektów korzystających z Web i bazy danych te technologie są praktycznie równoważne
  • doświadczeni programiści poradzą sobie w jednym i drugim
  • początkujący powinni wybrać jak najkrótszą drogę (użyj tego co kolega, jak masz się uczyć sam to JEE w wersji 7 i GlassFish/Payara/WildFly)
  • jedna i druga technologia nadaje się do małych projektów
  • konfiguracja Springa jest wymagajaca, ale warto zdobyc ta wiedze
  • trzeba zdobyc doswiadczenie, aby wiedziec kiedy i jak laczyc frameworki (i kiedy nie powinno sie tego robic): w JEE i Springu sa inne frameworki, wiele z nich jest rownowaznych)
  • osobiscie wole JEE jesli nie potrzebuje NoSQL
  • Spring wspiera mnostwo fantatycznych zabawek jakich w JEE byc moze nigdy nie bedzie np. AMQP, STOMP
  • na korzysc JEE przemawia, ze dzisiejsze serwery aplikacyjne sa lekkie (TomEE, GlassFish/Payara, WildFly), to moze 20 MB RAM narzutu nad Tomcatem przy starcie
0

@margor90

Cel mój jest taki aby dostosować się do poziomu wejściowego na rynek javy ASAPem. Chcę zebrać info jakie są minimalne wymogi jeśli chodzi o wiedzę w kontekście javy oraz ogólnie programistycznej a potem uzupełnić braki. Pracodawcy na ogół wymagają doświadczenia, niestety w historii zatrudnienia go nie mam więc chcę zastępczo wyprodukować jakiś dowód wartości żeby mieć kartę przetargową.

0

Z doświadczenia wiem że na rekrutacji do pierwszej mojej pracy (nie mając żadnego doświadczenia w branży) pracodawca chciał zobaczyć jakiekolwiek projekty wykonane przeze mnie. Myślę że na start Java + wzorce + jakieś tam pojęcie o JPA/Hibernate spokojnie wystarczy. GIT'a warto może nie tyle znać co po prostu wiedzieć do czego służy i potrafić wykonać podstawowe operacje typu commit, push, pull itp. Reszta jak pisał ktoś wyżej przyjdzie z czasem.

4

@jj40:
Nie licz na to, że dobrze nauczysz się JEE lub Springa w domu na tyle, aby móc konkurować z osobami z doświadczeniem. W każdym projekcie jest inna konfiguracja, inne frameworki, inne fuckupy, różne wersje technologii (czasem bardzo stare, więc nawet jak nauczysz się nowej technologii i tak będziesz musiał ogarnąć starsze , aby np. zrozumieć jak przeprowadzić migrację do nowszej wersji). Poza tym dochodzi ogromne zagadnienie jakim jest domena biznesowa klienta. Powiem szczerze, że początki są trudne.

Np. ja musiałem nauczyć się JEE5, w projekcie w którym pracuje do dziś. Potem zrobiliśmy migracje i mamy JEE7. To nie było łatwe, bo miałem małą wiedzę i musiałem mnóstwo nadrobić. Ale było warto.

Moje rady:

  • szukaj pracodawcy, który pozwoli Ci uczyć się od podstaw
  • poświęć czas na naukę SQL (PostgreSQL to dobry wybór na początek)
  • zdobądź mocne podstawy Javy SE (kolekcje), Java 8 jest rzadko używana, więc nowoczesnych wodotrysków nauczysz się później
  • zbuduj w domu aplikację JSF na PrimeFaces (http://www.primefaces.org/) obsługującą bazę danych korzystając z JEE: zobaczysz jak wygląda budowa typowej biznesówki korzystającej z bazy danych (przy okazji zobaczysz jak trywialne jest pisanie aplikacji z transakcjami w EJB3+ :) )
  • jeśli rzeczywiście zdecydujesz się na PrimeFaces nie kombinuj ze Springiem, używaj CDI
  • zrozum na czym polega SOLID i dependency injection (wiedza teoretyczna)
  • bądź psychicznie przygotowany na pracę w bardzo starych technologiach (JSP, Struts1, jak dobrze pójdzie Java EE 5 i JSF 1.2)
  • jeśli chcesz Springa to weź Spring MVC i jakiś framework z kontrolkami JavaScript
  • naucz się konfigurować serwer aplikacyjny np. GlassFisha / Payara albo WildFly
  • buduj dużo małych projektów
  • nie zniechęcaj się
  • otocz się ludźmi, którzy będą chcieli dzielić się z Tobą swoją wiedzą
0

Generalnie to mam trochę doświadczenia w PL/SQL i się zastanawiam czy nie szukać czegoś w PL/SQL i próbować znaleźć czegoś gdzie w pobliżu będzie java.

0

@margor90 Polecisz jakiś projekt który da się obejrzeć przez neta żeby móc wyrobić sobie wyobrażenie jaki poziom powinien mieć projekt żeby był przekonujący na poziom wejściowy?

@eL Najgorsze jest to jak wysyłasz CV i odzew jest mały. Stąd mój pomysł żeby zrobić projekt który można wystawić jako referencję.

0

W ogóle to Java Enterprise lepiej brzmi.

1

http://kobietydokodu.pl - poczytaj sobie tego bloga, dziewczyna opisuje jak wejść w ten biznes i pokazuje też aplikację jaką przygotowała
dodatkowo wspiera ja też doświadczony programista

0
eL napisał(a):

Myślę że na start Java + wzorce + jakieś tam pojęcie o JPA/Hibernate spokojnie wystarczy.

Ja mam o tym jakieś tam pojęcie, ale wątpie aby tylko coś takiego wystarczyło do pierwszej pracy. Z tego co się orientuje, to są totalne podstawy. Aby dostać pracę, to pewnie trzeba naprawde dobrze znać JEE lub Springa. A jak ktoś ma luki w podstawach Javy SE, to na takiej rozmowie chyba tylko się skompromituje.

1
KRK18 napisał(a):
eL napisał(a):

Myślę że na start Java + wzorce + jakieś tam pojęcie o JPA/Hibernate spokojnie wystarczy.

Ja mam o tym jakieś tam pojęcie, ale wątpie aby tylko coś takiego wystarczyło do pierwszej pracy. Z tego co się orientuje, to są totalne podstawy. Aby dostać pracę, to pewnie trzeba naprawde dobrze znać JEE lub Springa. A jak ktoś ma luki w podstawach Javy SE, to na takiej rozmowie chyba tylko się skompromituje.

Pracuję ze springiem już ponad rok, wcześniej półtora w JEE i nie mogę powiedzieć że znam dobrze którąkolwiek z tych technologii. Jeżeli ktoś naprawdę ogarnia te technologie, a nie tylko to co piszą w tutorialach, blogach czy manualach to jest już raczej seniorem lub wyżej.

Pytanie też co rozumiesz przez luki w JSE. Słyszałem że na rekrutacjach ludzie niepotrafili powiedzieć czym różni się wyjątek runtimeowy od zwykłego. To jest niedopuszczalne. Z drugiej strony, refleksji na start nie musisz dobrze znać bo i tak pewnie użyjesz jej raz na ruski rok i to też jak nabierzesz doświadczenia.

No i sprawa doświadczenia na koniec. Jak wyjeździsz 1000 godzin samochodem po placu i będziesz go umiał obsługiwać perfecto, oraz będziesz miał teorię ruchu drogowego wkutą na blachę, to miasto i tak Cię zaskoczy.

0
krzysiek050 napisał(a):
KRK18 napisał(a):
eL napisał(a):

Myślę że na start Java + wzorce + jakieś tam pojęcie o JPA/Hibernate spokojnie wystarczy.

Ja mam o tym jakieś tam pojęcie, ale wątpie aby tylko coś takiego wystarczyło do pierwszej pracy. Z tego co się orientuje, to są totalne podstawy. Aby dostać pracę, to pewnie trzeba naprawde dobrze znać JEE lub Springa. A jak ktoś ma luki w podstawach Javy SE, to na takiej rozmowie chyba tylko się skompromituje.

Pracuję ze springiem już ponad rok, wcześniej półtora w JEE i nie mogę powiedzieć że znam dobrze którąkolwiek z tych technologii. Jeżeli ktoś naprawdę ogarnia te technologie, a nie tylko to co piszą w tutorialach, blogach czy manualach to jest już raczej seniorem lub wyżej.

Pytanie też co rozumiesz przez luki w JSE. Słyszałem że na rekrutacjach ludzie niepotrafili powiedzieć czym różni się wyjątek runtimeowy od zwykłego. To jest niedopuszczalne. Z drugiej strony, refleksji na start nie musisz dobrze znać bo i tak pewnie użyjesz jej raz na ruski rok i to też jak nabierzesz doświadczenia.

No i sprawa doświadczenia na koniec. Jak wyjeździsz 1000 godzin samochodem po placu i będziesz go umiał obsługiwać perfecto, oraz będziesz miał teorię ruchu drogowego wkutą na blachę, to miasto i tak Cię zaskoczy.

Jestem totalnym beginnerem, ale na takie pytanie bym odpowiedział. Jeśli chodzi o luki w JSE, to mam tu na myśli brak znajomości takich zagadnień jak np. wątki, strumienie czy kolekcje. Ja poza Java SE umiem troche JSP, JSF, EJB3.0, ale to i tak tylko własna zabawa w domu. Przez myśl mi nawet nie przeszło, aby już szukać jakieś pracy. Wątpie aby jakaś firma chciała ze mną rozmawiać.

0

Strumienie i kolekcje to jednak obowiązek. Wątki warto liznąć, chociaż przy aplikacjach enterpirse bezpośrednio rzadko się ich używa. Zresztą, są teraz lepsze sposoby na wielowątkowość niż surowe wątki, więc w aplikacjach standalone pewnie też.

0

@KRK18 Znać dobrze lub źle to pojecie ogólne dość i trudno z tego wywnioskować co trzeba umieć.

@krzysiek050 Wiem że doświadczenie to podstawa, ale co jak się nie ma doświadczenia komercyjnego to się nie da załapać do takiej pracy?

U nas na rynku jest często problem z wymogiem doświadczenia, którego nie da się nabyć ponieważ 99% ofert wymaga doświadczenia, Staram się jakoś to ogarnąć żeby przeskoczyć to błędne koło. Nie rozumiem tej postawy pracodawców, wolałbym mieć pracownika zaangażowanego i pracowitego nawet jak ma braki niż brać byle by pasował w wybrane ramki. No ale może dlatego nie jestem pracodawcą...

0

Z loginu krwawy terrorysta napisałem Ja tylko nie zauważyłem że mnie wylogowało...

0

@KRK18 wydaję mi się, że przesadzasz... gdzie niby mamy się nauczyć dobrze Springa, czy JEE, nigdy praca w domu (dla kogoś kto nigdy nie pracował zawodowo) nie będzie nawet namiastką profesjonalnego programowania. Ja potrafię Jave SE, Hibernate (pewnie myślę, że potrafię, bo praca to skoryguje). A lista TO DO wygląda następująco :

  • przeczytać do końca Java - Efektywne programowanie
  • TDD. Sztuka tworzenia dobrego kodu
  • oszlifować wzorce (chociaż myślę, że dużo mi da "Efektywne programowanie")
  • w międzyczasie napisać 2 programy do portfolio

Jak na rozmowie zrobię z siebie idiotę to trudno, w pysk mi nikt nie da, a będę wiedział nad czym popracować.

Nikt z programistów nie jest chodzącą dokumentacją, przecież są źródła w internecie.

3

@jj44: Nie daj się omamić choremu, patalogicznemu zjawisku w branży jakim jest 'mit genialnego programisty' (wiele osób lubi nakręcać to zjawisko, jest to raczej próba wyładowywania frustracji przez ludzi, którym często nie wychodzi w innych sferach życia, nakręcana czasem przez znane osobistości, ale bez nazwisk). Generalnie większość koderów popełnia błędy i nie wie wszystkiego. Takie są fakty. Po prostu rób swoje kiedyś się załapiesz.

Szczerze odradzam zbyt duże przejmowanie się niektórymi szczegółami jak wielowkątkowość jeśli zaczynasz programowanie enterprise. Na początek wystarczy wiedzieć, że ręczne zarządzanie wątkami za pomocą wait i notify to generalnie kiepski pomysł (bo są lepsze narzędzia). Będziesz potrzebował lub aspirował na wyższy level programisty to się douczysz szczegółów: na tym polega rozwój. Większość programistów i tak nie pamięta szczegółów, z których nie korzysta. Wiedzę nad, którą pracujesz / uzupełniasz dopasuj do bieżących potrzeb. Jeśli tego nie zrobisz nigdy nie wystartujesz. Bądź uczciwy w tym co robisz.

Może się okazać, że na obecnym etapie ważniejsza będzie dla Ciebie np. znajomość SQL i podstaw optymalizacji baz niż szczegóły działania strumieni i subtelne szczegóły pracy JVM. Czasem wystarczy wiedzieć, gdzie szukać. Uczyć będziesz się przez całe życie.

Podsumowując: skupiaj się na tym co jest potrzebne TU I TERAZ. Uczyć się bedziesz przez cały czas, jeśli będziesz chciał.

0

@margor90 "skupiaj się na tym co jest potrzebne TU I TERAZ." No o to pytam, jak się dostosować do obecnego rynku.

"Uczyć się będziesz przez cały czas, jeśli będziesz chciał." Wiem, ale dobrze jest jeszcze mieć za co żyć. A mieć co odłożyć jeszcze lepiej. W stolicy betonu i szklanych drzwi nie jest to takie proste...

"Po prostu rób swoje kiedyś się załapiesz." Brzmi trochę chaoatycznie i niezbyt optymiastycznie. Są pewne trendy i jakoś trzeba się w nie wpasować żeby wejść temat, nie mogę czekać w nieskończoność, nie jestem nieśmiertelny. Wolę pokierować działaniami świadomie.

@JanNiezbedny przerabiam thinking in java, dobre czy odradzasz? Wzorce - Head First Design Patterns?

0

@jj44 "Thinking in Java" też przeczytałem, ale zawiera mnóstwo treści, na + na pewno ćwiczenia, na początku jeszcze do skorowidza zerkałem (traktowałem ją jako encyklopedie), ale teraz dużo szybciej/wygodniej po prostu wygooglować na stacku.
IMO ważne żebyś nie czuł, że stoisz w miejscu, i nie przerabiał po raz 32 polimorfizmu, czy czytał o tym, że stringi są niezmienialne etc.

0

@jj44:
Nie zapominaj też, że świat to nie tylko Java. Potrzebujesz pieniędzy na podstawowe opłaty? To żadna hańba, aby popracować jako programista innego języka albo sysadmin. Jeśli jesteś junior sporo osób chętnie doceni Twoje zaangażowanie, jeśli będzie prawdziwe i pozwoli się uczyć. Nie idzie Ci programowanie w JEE? Spróbuj analogiczny projekt w .NET albo PHP. Ważne, aby coś robić. Większość pracodawców i tak założy, że skoro nie masz doświadczenia to znaczy, że raczej niewiele potrafisz i pozwoli się uczyć. Chcieć to móc.

Warto też popytać znajomych: wiele pracodawców się nie ogłasza, a część rekrutacji to ściema.

Co więcej, powiem że Java to słaby wybór jak szukasz pewnej ścieżki, która zagwarantuje zainteresowanie. w Javie masz najwięcej frameworków. W PHP też sporo, ale mniej. Nie masz czasu? Instaluj Visual Studio. :) Łatwiej zacząć jak ma się oprogramowanie od 1 vendora.

0

No dobrze, ale powiedzcie mi czy znajomość: dość dobra Javy SE, podstawy Javy EE w tym JSP, JSF (Primefaces), EJB, html, css, javascript(podstawy), podstawy SQL, JUnit, znajomość różnych bibliotek typu JFreeChart, iText, duża liczba własnych niekomercyjnych projektów, daje szanse na to aby się gdzieś załapać, przy braku doświadczenia komercyjnego?

0

Tak

0

Ja się boje tego, że trafie do firmy gdzie będą sami doświadczeni ludzie i oni będą miażdżyć mnie wiedzą. Będę odstawał, wolniej robił zadania, nie wgryze się w projekt, który robią i w końcu mnie wyleją. Bo w sumie samo ogarnięcie tego co jest zrobione, róznych mechanizmów, które używają, może zająć dużo czasu. A który pracodawca chce za to płacić?

1

Na bank będziesz odstawał i wolniej robił zadania. Ale jeżeli będziesz się starał to nikt Cię za to nie wyleje.

W mojej firmie była sytuacja że młody i ambitny chłopak zwolnił się sam, bo nie dał rady z nerwów. Starał się, był ambitny i nikt nie powiedział mu złego słowa, ale np code review brał jako zgnojenie, zamiast metodę poprawienia jakości kodu i źle na tym skończył. A szkoda, bo materiał był dobry. Pasujesz mi do tego schematu. Jeżeli pójdziesz do pracy to nie brak znajomości narzędzi będzie twoim problemem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1