Zbiór przydatnych materiałów dla osób gotowych do rozpoczęcia swojej przygody z zawodowym programowaniem i szukających drogi dalej.
Jeżeli znalazłeś się tutaj pierwszy raz, albo zaglądasz już kolejny, to daj gwiazdkę temu repozytorium (opcja Star
w prawym, górnym rogu).
Z góry bardzo dziękuję :)
Razem z żoną przygotowaliśmy kurs z nauki podstaw programowania i podstaw języka Java. W kurs wrzuciłem wszystko, czego się nauczyłem w ostatnich latach jako trener programowania. Jeżeli sam chciałbyś skorzystać albo masz znajomych, którzy chcą rozpocząć przygodę z programowaniem, to poleć im to proszę. Wyświadczysz i mi i im ogromną przysługę :)
Poniżej znajduje się link do kursu z wbitą promocją - obecna pozwala na zakup kursu z 30% zniżką. Sam kurs jest na Udemy w najniższej możliwej cenia. To 50 godzin profesjonalnego materiału w cenie mniej więcej 4 numerów CD-Action (po 10.99 PLN każdy). Chciałem aby kurs był powszechnie i łatwo dostępny, stąd taka cena :)
Promocja: kurs w cenie 4 x CD-Action = 49 zł
Polecam :)
Przed ropoczęciem korzystania z udostępnionych tutaj materiałów zapoznaj się z kilkoma podstawowymi informacjami.
Drogi użytkowniku. Ze względu na ochronę wartości intelektualnej zachęcam Cię, abyś na wstępie zapoznał się z poniższą notą prawną dotyczącą repozytorium. Uzyskałeś dostęp do repozytorium i tym samym poniższe zapisy w całości Cię dotyczą. Proszę Cię o współpracę w ochronie tej wartości i przestrzeganie niżej opisanych zasad. Dziękuję.
Repozytorium, jego treść i zawartość podlegają ochronie prawnej. Wykorzystywanie materiałów zawartych w repozytorium może odbywać się tylko za zgodą autora.
Repozytorium jest prywatne. Udostępniane jest wybranym osobom i tylko przez te osoby może być wykorzystywane. Dalsze rozpowszechnianie i/lub kopiowanie repozytorium bez zgody autora, w całości lub we fragmentach, jest zabronione.
Autorem i właścicielem repozytorium jest Michał Kupisiński Honest IT Consulting.
Repozytorium oraz każda jego kopia (fork) muszą zachować powyższą notę prawną.
Zebrane materiały w repozytorium są wybiórczym i subiektwynym zbiorem, który ma prawo się zmieniać. Jednocześnie umieszczenie tego zbioru na poziomie repozytorium Git gwarantuje utrzymanie historii zmian, więc jeżeli taką jesteś zainteresowany, to czuj się wolny do śmiałego przeglądania hsitorii zmian.
Materiały będą rozwijane przeze mnie, ale również Ty, drogi Użytkowniku, jeżeli tylko
masz wiedzę o wartościowych materiałach i chciałbyś takie zaproponować, to możesz śmiało zaktualizować zestaw
materiałów wykonując pull-request
(w razie potrzeby wsparcia: pull request).
Każda wykonana aktualizacja wymaga mojego zatwierdzenia. Propozycje zmian będę przeglądał przynajmniej raz w tygodniu, aby
zbiór pozostał aktualny. Każdą złożoną przez Ciebie propozycję oznaczę też Twoim loginem, aby pamięć o Tobie nie umarła! ;)
Będąc tutaj korzystasz z wiedzy innych, więc gorąco Cię zachęcam, abyś wpłynął na rozwój zgromadzonych tu treści.
Zebrane materiały przeznaczone są dla osób, które posiadają już podstawową znajomość języka Java oraz towarzyszących im kategorii. Udostępnienione materiały nie mają charakteru planu nauczania języka Java czy przygotowania do stanowiska Junior Java Developer.
Rolą udostępnionych tutaj materiałów jest wskazanie możliwości dalszej nauki i samodzielnego rozwoju w poznanych technologiach i elementach języka Java.
UWAGA! Repozytorium w 2020 roku nie doczekało się jeszcze żadnej aktualizacji ale niedługo będziemy to nadrabiać :) Pojawią się namiary na nowe materiały (w czerwcu) ale mam nadzieję, że uda się też przejść z formatu repozytorium do formatu aplikacji/serwisu udostępniającego takie materiały.
- 2020-06-08 Gorąco polecam bardzo dobrze repozytorium z wieloma opracowaniami wzorców projektowych, nie tylko podstawowych ale również większości wzórców klasy enterprise czy wzorców integracyjnych: Iluwatar: Java Design Patterns
- 2019-11-13 Częstym tematem rekrutacyjnym są transakcje, a w szczególności ich obsługa w Spring. Pomijając nawet samą rekrutację, to jest to temat istotny dla każdego programisty backendu. Polecam bardzo dobry artykuł na ten temat: Transactions and Transactions in Spring
- 2019-10-17 Dodaje kalkulator ze StackOverflow, który pozwala wycenić się na rynku StackOverflow Salary Calculator
- 2019-10-16 Bardzo dobry tutorial wideo, w którym tworzona jest od podstaw aplikacja w Spring. Zaletą akurat tego tutorialu jest to, że aplikacja posiada naprawdę poprawną architekturę (warstwy serwisów, kontrolerów, obiektów transferowych - tutaj w roli obiektów XXXRequest) oraz tworzone są w niej testy jednostkowe. Polecam: CRUD Application with Spring
- 2019-09-19 WYRÓŻNIONE W trakcie jednej z rozmów rekrutacyjnych Marcin wuher44 opowiedział o portalu hyperskill.org. Miejsce to oceniam jako genialne. Już wskazanie kto jest autorem tych materiałów wiele mówi: JetBrains, a więc wydawcy IntelliJ. Nie wiem jakim cudem dopiero teraz wpadło to w moje ręcę :) Od razu dziele się tym z całą tutejszą grupą i wszystkimi nadchodzącymi.
- 2019-07-19 Dodano wyróznioną pozycję dotyczącą zasad SOLID. Bardzo często pojawiają się one w trakcie naszych rozmów IT Interview, czy z mojej inicjatywy czy z Waszej. Warto zapoznać się ich praktyczną realizacją na wybranych przykładach czystej Javy. Polecam, aby skoczyć wyżej w zasadach tworzenia oprogramowania o wysokiej jakości.
- 2019-06-28 Dodano wyróżnioną pozycję z wylistowanym zakresem wymagań dotyczących Junior Java Developer. Bardzo kompleksowa lista (aż tyle nie trzeba umieć), ale jednocześnie z podliknowanymi materiałami do każdego z tematów. Polecam jako checklistę na ile jestem przygotowany/przygotowana.
- 2019-03-15 Dodano nową sekcję
Przygotowanie do rozmowy rekrutacyjnej
z pierwszym materiałem, a więc serwisem Pramp. Za cenną propozycją ziehlke. - 2019-03-15 Dodano do
Zadania i tutoriale
nową pozycję: "HTML RefCard". Podstawowe elementy HTML w formie szybkiej pomocy. - 2019-01-31 Dodano do Książki nową pozycję: "Myśl jak programista. Techniki kreatywnego rozwiązywania problemów". Lektura polecana absolutnie dla wszystkich, którzy chcą zrozumieć, co jest w tym zawodzie najważniejsze: nie język, nie framework, nie środowisko i narzędzia, a właściwy sposób myślenia (możliwy do wyuczenia krok po kroku).
- 2018-12-14 Dodano do Książki nową pozycje: "Programowanie w Javie. Solidna wiedza w praktyce. Wydanie XI". Szczególnie polecam tą książkę, jako źródło całościowej wiedzy o języku Java. Uczyłem się od tych autorów programowania w C++ 20 lat temu, z książki "Arkana Programowania C++". Nigdy w swoim całym życiu zawodowym nie spotkałem już innej pozycji tak kompleksowej jak ta. Gorąco polecam!
- 2018-12-14 Dodano do Książki nową pozycje: "Java. Przewodnik dla początkujących. Wydanie VII", od AdrianGalus. Tym samym pojawiła się pierwsza aktywność naszej mikro społeczności :)
- 2018-12-07 Dodano do #ksiazki nowe pozycje związane ze Spring Framework oraz klasyczną Javą.
Materiały zebrane są w trzech kategoriach:
- Książki - materiały podstawowe, które pozwalają poznać kompleksowo wybrane zagadnienia
- Tutoriale - materiały praktyczne, ktore pozwalają opanować wiele zagadnień w formie zadań czy tutoriali
- Specjalistyczne - materiały omawiające wybrane zagadnienia z programowania lub konkretne technologie
Wszystkie materiały zostały udostępnione w formie pytań. Jeżeli na zadane przy materiale pytanie odpowiadasz "TAK", to materiał ten jest dla Ciebie. W pierwszej kolejności skup się na materiałach, dla których odpowiadasz stanowczo "TAK".
Nie skacz po wszystkim - Internet jest dzisiaj tak przepełniony treścią, często bezużyteczną, że możesz całe życie poświęcić na samo szukanie, z którego nic nie wyniesiesz. Lepiej wybierz swoje największe "TAK" i skup się tylko na nim. Potem kolejne, kolejne. Dobrze oddaje to poniższa grafika:
(Źródło: tutaj)
Zajrzyj tutaj i wyceń siebie: StackOvertflow Salary Calculator
Dla lokalizacji w Polsce, przy braku wykształcenia technicznego, ze znajomością Java
, Spring
i MySQL
/Postgres
oraz braku doświadczenia komercyjnego kalkulator podpowie nam średnią stawkę 4.600,- zł
Na stronie Java Code Geeks kilka miesięcy temu pojawiła się bardzo kompleksowa lista tego, co powinna nauczyć się osoba chcąca zostać Junior Java Developer. Lista jest szeroka i część wymagań może być ponad rozpoczęcie kariery. Jednak olbrzymią wartością tej listy jest to, że każde z wymagań posiada również linki do materiałów, z których można się ich nauczyć bądź zweryfikować już posiadaną wiedzę. Gorąco polecam!
Co Junior Java Developer umieć powinien
Zrozumienie dobrych praktyk programistycznych i umiejętność ich samodzielnej obrony, zaprezentowania na przykładach (swoich i cudzych) jest kluczem do tego, aby wyróżnić się na rozmowie rekrutacyjnej. Również jest bramą do Waszego samorozwoju. Jeżeli zastanowicie się nad tym jak wygląda dzisiaj programowanie, to niemal każdy problem został już rozwiązany i można go znaleźć przeważnie na StackOverflow. Zatem wyzwaniem, które dzisiaj rzuca programowanie nie jest napisanie działającego fragmentu kodu, a pisanie kodu w taki sposób, aby idealnie łączył się z innymi fragmentami. Prawdziwym wyzwaniem jest więc projektowanie, a nie programowanie. Zasady SOLID otwierają Wam drogę i pozwalają wystartować z dobrej pozycji. Jedno z najlepszych (o ile nie najlepsze) opracowanie poniżej:
Poniżej prezentuję subiektywną listę książek, które dla osoby aspirującej do stanowiska Junior Java Developer będą przydatne i wartościowe:
Pytanie | Materiał | Autor propozycji |
---|---|---|
Wyróżnione: Jeżeli zgadzasz się ze mną, że nie istnieją predyspozycje do programowania, a umiejętności, które masz dzisiaj, jutro mogą być na zupełnie innym, wyższym poziomie, to ta książka jest dla Ciebie. Jeżeli się nie zgadzasz, to ta książka też jest dla Ciebie | Myśl jak programista. Techniki kreatywnego rozwiązywania problemów, V. Anton Spraul | honestit |
Wyróżnione: Całościowy, kompleksowy przegląd języka Java na najwyższym poziomie | Programowanie w Javie. Solidna wiedza w praktyce. Wydanie XI | honestit |
Czy chciałbyś raz jeszcze w lekki sposób dowiedzieć się o języku Java? | Java. Przewodnik dla początkujących, Herbert Schildt | AdrianGalus |
Czy potrzebujesz jeszcze raz zrozumieć pewne podstawowe zagadnienia z języka Java? | JAVA. Programowanie praktyczne od podstaw, Krzysztof Barteczko | honestit |
Czy potrzebujesz zrozumieć zagadnienia zaawansowane język Java? | JAVA. Uniwersalne techniki programowania, Krzysztof Barteczko | honestit |
Czy masz trudności z formułowaniem algorytmów i rozwiązywaniem zadań programistycznych? | Myśl w języku Java. Nauka programowania, Allen B. Downey, Chris Mayfield | honestit |
Czy potrzebujesz poznać bardziej zaawansowane zagadnienia i dowiedzieć się JAK należy języka Java używać? | Java. Efektywne programowanie. Wydanie III, Joshua Bloch | honestit |
Potrafisz sprawnie posługiwać się językiem Java i rozumiesz poznane zagadnienia, ale szukasz pełnego przeglądu języka Java w zakresie młodszego programisty? | Java. Podstawy, Cay S. Horstmann oraz Java. Techniki zaawansowane, Cay S. Horstmann | honestit |
Chcesz zmierzyć się z różnego rodzaju łamigłowkami z pomocą języka Java? | Java Puzzlers, Joshua Bloch, Neal Gafter | honestit |
Rozumiesz język Java i chcesz poznać szerszy obraz tego co przed Tobą? | The Well Grounded Java Developer, Benjamin J. Evans, Martijn Verburg | honestit |
Potrzebujesz raz jeszcze zrozumieć Spring MVC? | Spring MVC. Przewodnik dla początkujących, Amuthan G. oraz Spring MVC 4. Projektowanie zaawansowanych aplikacji, Geoffroy Warin | honestit |
Rozumiesz już Spring Framework i potrzebujesz pozycji przeglądowej, zawsze pod ręką? | Spring w akcji, Craig Walls | honestit |
Jeżeli radzisz sobie z programowaniem, ale czujesz, że jakość tego co robisz mogłaby być wyższa? | Czysty Kod. Podręcznik dobrego programisty Robert C. Martin | honestit |
Chcesz zrozumieć współczesne programowanie i osiągnąć w nim mistrzostwo? | Software Craftsman. Profesjonalizm, czysty kod i techniczna perfekcja, Sandro Manusco | honestit |
Zachłysnąłeś/aś się programowaniem i szukasz inspirujących historii? | Piękny kod. Tajemnice mistrzów programowania, Andy Oram, Greg Wilson | honestit |
Kolejna lista to strony zawierająca zbiory zadań i tutoriale pod konkretne obszary techniczne
Pytanie | Materiał | Autor propozycji |
---|---|---|
Wyróżnione: Jeżeli potrzebujesz całościowego zestawu zadań, pokrywającego WSZYSTKO co musisz wiedzieć, stworzonego w sposób niezwykle atrakcyjny i w okół budowania mini projektów - TO TUTAJ | hyperskill.org | wuher44 |
Czy masz problem z układaniem podstawowych algorytmów i samodzielnym wykorzystywaniem podstaw języka? | CodingBat | honestit |
Czy chcesz rozwinąć swoje umiejętności rozwiązywania zadań algorytmicznych na trudniejszych przykładach? | SPOJ | honestit |
Chcesz ćwiczyć programowanie rozwiązując zadania i mając z tego sporo frajdy? | Hacker Rank | honestit |
j.w. | CodeWars | honestit |
j.w. | CodingGame | honestit |
j.w. | Leet Code | honestit |
j.w. | Coderbyte | honestit |
Chcesz przygotować się do zadań, z którymi możesz się spotkać na rozmowie rekrutacyjnej? | Codility | honestit |
Pytanie | Materiał | Autor propozycji |
---|---|---|
Chcesz poznać konkretne sposoby (przepisy) rozwiązania problemów technicznych na zasadzie "How to do"? | Jenkov | honestit |
j.w. | JavaTpoint | honestit |
j.w. | Java online | honestit |
j.w. | Tutorials point | honestit |
Ostatnia, ale największa lista, dotyczy już konkretnych obszarów technicznych w świecie języka Java. Jeżeli mogę Ci coś zasugerować, to znajdź temat, który Ci się spodobał i rozwijaj się w nim. Nie próbuj nauczyć się wszystkiego, bo to niemożliwe. Skup się na tym, co wydało Ci się najbardziej atrakcyjne, najciekawsze i w ten sposób buduj swój potencjał i pozycję.
Pytanie | Materiał | Autor propozycji |
---|---|---|
Świetne opracowanie bardzo wielu wzorców projektowych, aż ciężko pomyśleć o jakich ponad dostępną tutaj listę. Co więcej - każdy wzorzec jest oprogramowany, a przykłady są w Javie. Gorąco polecam | Iluwatar: Java Design Patterns | honestit |
Potrafisz programować, ale chcesz lepiej poznać zasady projektowania i rozpocząć przygodę ze wzorcami | JournalDev Design Patterns | honestit |
Podstawowa grupa wzorców to dla Ciebie już za mało i chcesz wejść naprawdę głęboko i szeroko w temat? | Java Design Pattersn | honestit |
Korzystasz z framework'ów typu Hibernate lub Spring/JEE i chce je zrozumieć? | ||
- Chcesz poznać źródło wszystkiego? | Enterprise Patterns Catalog | honestit |
- Interesuje Cię po co jest warstwa serwisów? | Service Layer | honestit |
- Obiekty transferowe wydają Ci się tylko przepisywaniem kodu? | Data Transfer Object | honestit |
- Zastanawiasz się o co chodzi z tymi transakcjami w serwisach? | Transaction Script | honestit |
- Nie wiesz czemu poza transakcją musisz zapisać zmiany w encjach, a wewnątrz transackji zapisują się same? | Unit of Work | honestit |
- Chcesz zrozumieć różnice między Servletami i np. Spring MVC? | Front Controller | honestit |
- Stosujesz wzorzec MVC, ale czasami zastanawiasz się czym jest "M"? | MVC, Page Controller | honestit |
- Wykorzystujesz repozytoria albo dao? | Repository | honestit |
- Zastanawiasz się jaką rolę pełni EntityManager ? |
Identity Map | honestit |
- Czym są Twoje encje i jaką magię czyni Hibernate? | Data Mapper | honestit |
- Nurtuje Cię po co encji ten klucz główny? | Identity Field | honestit |
- Męczy Cię błąd could not initialize lazy collection... ? |
Lazy Load | honestit |
- Korzystasz z Criteria API i chcesz wiedzieć jak to się ma do wzorców projektowych? |
Query Object | honestit |
- Jeżeli poznanie wierzchołka góry lodowej to dla Ciebie za mało? | Patterns of Enterprise Architecture, Martin Fowler (wydanie polskie) | honestit |
Pytanie | Materiał | Autor propozycji |
---|---|---|
Polubiłeś/aś Java Persistence API i chcesz je poznać w całośći? |
Java Persistene API Specification | honestit |
JPA jest interesujące ale bardziej jesteś ciekaw/a możliwości Hibernate'a? |
Vlad Mihalcea Blog | honestit |
Czujesz, że SQL jest Twoim żywiołem albo że będzie Ci potrzebny i potrzebujesz lepiej wszystko zrozumieć? | SQL ZOO | honestit |
Pytanie | Materiał | Autor propozycji |
---|---|---|
Tutorial widoe, w którym możesz zobaczyć jak stworzyć pełną aplikację wykorzystującą najważniejsze modułu/projekty Spring Framework, a co najważniejsze zrealizowaną w prawidłowej architekturze i z uwzględnieniem testów jednostkowych | CRUD Application with Spring | honestit |
Polubiłeś/aś Java Servlets i aplikacje webowe, chcesz poznać wszystko w całości? |
Java Servlets 4.0 Specification | honestit |
Znasz już Servlety i chcesz lepiej poznać Spring'a? | Spring Project | honestit |
Spring jest świetny, ale oficjalna dokumentacja trochę Cię przerażą? | Baeldung | honestit |
Obsługa transakcji w Spring | Transactions and Transactions in Spring | honestit |
Nie wiesz czy jesteś już gotowy wysyłać CV na oferty pracy? Chcesz spóbować swoich sił przed prawdziwą rozmową kwalifikacyjną? Skorzystaj z portali, gdzie możesz umówić się z innymi osobami takimi jak Ty:
Pytanie | Materiał | Autor propozycji |
---|---|---|
Darmowa rejestracja i kredyty na pierwsze rozmowy - odbywając rozmowy zdobywasz kredyt na kolejne | Pramp | ziehlke |
W sytuacji, kiedy dana technologia jest już Ci znana, ale chcesz szybko odświeżyć informacje (idealne przed rozmową rekrutacyjną), to polecam poniższą listę:
Pytanie | Materiał | Autor propozycji |
---|---|---|
Java: | ||
- Podstawy | Java Core | honestit |
- Wielowątkowość | Java Concurrency | honestit |
- Cacheowanie | Java Caching | honestit |
- JPA | Started with JPA, JPA 2.0 | honestit |
Narzędzia: | ||
- IntelliJ | IntelliJ | honestit |
- Git | Git | honestit |
- Maven | Maven | honestit |
- Tomcat | Tomcat | honestit |
Technologie: | ||
- JUnit | JUnit and EasyMock | honestit |
- Wyrażenia regularne | Regex | honestit |
- Protokół HTTP | HTTP | honestit |
- JSON | JSON | honestit |
- HTML | HTML Core | honestit |
- HTML5 | HTML5 Features | honestit |
- CSS | CSS 1, CSS 2, CSS 3 | honestit |
Projektowanie: | ||
- Refaktoryzacja | Refactoring Patterns | honestit |
- Wzorce GoF | Design Patterns | honestit |
- Wzorce architektoniczen | Modular Patterns | honestit |
- Wzorce integracyjne | SOA Patterns | honestit |
Mam nadzieję, że powyższa lista będzie dla Ciebie dobrym przejściem od nauki programowania do rozpoczęcia kariery w branży IT. Jeżeli choć jeden z zamieszczonych tutaj linków przyczyni się do Twojego sukcesu, to będzie to wystarczające wynagrodzenia.