Jak 12 doświadczonych ekspertów Javy ułożyłoby swoją drogę do zostania programistą od zera?

Zadałem pytanie ekspertom, którzy od wielu lat zajmują się programowaniem w Javie, szkoleniem innych osób oraz wystąpieniami na przeróżnych znanych prelekcjach takich jak JUG, devox czy confitura.

Na początku swojej drogi sam chciałbym dostać TAKIE rady od TAKICH osób!

Po przeczytaniu tych wszystkich wypowiedzi w Twojej głowie będzie tyle wskazówek i nowej wiedzy, która pomoże Ci optymalnie ruszyć z kopyta!

Miłego czytania i wdrażania!

(kolejność wypowiedzi jest losowa, nie ma lepszych i gorszych wszystkie są pomocne!)

Eksperci

  1. Jakub Pilimon
  2. Jakub Nabrdalik
  3. Sławek Sobótka
  4. Jakub Kubryński
  5. Ola Kunysz
  6. Jarosław Pałka
  7. Grzegorz Piwowarek
  8. Darek Mydlarz
  9. Marcin Grzejszczak
  10. Jarosław Klimas
  11. Przemek Bykowski
  12. Bartłomiej Chmielewski

Odpowiedzi ekspertów

Jakub Pilimon

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Rad, aby zaplanować swój proces nauki jako Junior Developer może być wiele.

Natomiast należy pamiętać, że nie na każdą radę jest czas i miejsce – jako 20-latek (początek pracy jako Java Developer) mógłbym nie zrozumieć co mówi do mnie 31-latek (mój obecny wiek). Zwyczajnie brakowałoby mi doświadczeń odnośnych.

Co usłyszałem 9-11 lat temu, zastosowałem i przyniosło owoce to:

  1. Zrozum problem biznesowy
  2. Skup się na modelowaniu
  3. Naucz się testować swój kod
  4. Zapoznaj się na juniorskim poziomie z DDD i TDD

Narzędzia trzeba znać, ale przychodzą i odchodzą. Co z kolei chciałbym 11 lat temu usłyszeć to: Wątpliwości są OK. Będziesz popełniać błędy. Będą dni, w których pomyślisz, że to nie dla Ciebie. Nie słuchaj wszystkich i nie ucz się wszystkiego, znajdź mentora, za którym chcesz podążać”.

Jakub Nabrdalik

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Najłatwiej nauczyć się Javy robią jednocześnie projekt i to najlepiej pod okiem kogoś, kto już umie dobrze, by dać nam feedback i wskazać nam błędy.

Czyli teoretycznie, najlepiej jest najpierw znaleźć robotę i w niej się uczyć. Problem w tym, że z perspektywy firmy, to jest nieopłacalne (zajmiesz kupę czasu doświadczonego człowieka).

Stąd sugeruję:

  • Uczyć się kodując jakiś pet-project w jakimś konkretnym celem. Wiedzę teoretyczną znajdziesz w tutorialach, książkach, video szkoleniach etc.
  • Spróbować się załapać na staż (ale będzie ciężko – firm które to dają, zielonemu człowiekowi, jest mało, w Warszawie np. Allegro, TouK, etc.)
  • Skorzystać z gotowych programów edukacyjnych z mentorem (np.: kiedyś mentorowałem 20h w programie Women in Technology – bardzo fajny feedback dostałem, więc chyba zadziałało)

Najtrudniej jest zacząć, czyli zaczepić się na rynku. Po tym jak już mamy podstawy, jest zdecydowanie łatwiej.

Unikałbym:

  • Nie należy pracować w firmie, w której przestaliśmy się rozwijać. Pamiętaj, że na początku ważniejsze są doświadczenia niż pieniądze.
  • Nie należy zwlekać ze startowaniem do firm – jeśli chcesz aplikować do roboty dopiero wtedy gdy czujesz, że dasz jej radę, to nigdy nie zaaplikujesz.
  • Nie należy oczekiwać pieniędzy na początku – pamiętaj że celem jest doświadczenie. Pieniądze będą później.
  • Należy kwestionować jak coś jest robione i szukać “best practices”. W danej firmie wcale nie muszą być takie “best”.
  • Jeśli masz już wybór: unikałbym dużych i starych projektów. Najwięcej się nauczysz uczestnicząc w projekcie od początku.
  • Nie należy uczyć się zbyt szeroko. Chcesz być full-stack developerem na starcie – będzie cholernie ciężko. Skup się na jednym języku, nie wchodź od razu we frontend i backend na raz, nie ucz się wszystkiego po łebkach, skup się na najważniejszych, sprzedawalnych umiejętnościach.

Sławek Sobótka

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Paaanie… kiedyś to były czasy… 20 lat temu nauka Javy była prosta, bo nie mieliśmy praktycznie wyboru: Było smutne EJB i sexi Spring, był smutny Ant i wchodził Maven, na uczelni był Netbeans a na praktykach w firmach pół-bogowie używali Eclipse.

Nie dziwię się współczesnym młodym ludziom, że świat enterprise jest przytłaczający. Zewsząd masa opcji, każda niby darmowa, ale jak prześledzi się przepływ $ to widać, że branża działa jak dealer: pierwsza działka gratis a jak się wciągniesz to pogadamy. Każdy dostawca kusi tym jak szybko robi się hello world i “zaawansowane” CRUDy w jego nowej zabawce. A po drugiej stronie ulicy trawa jest jeszcze bardziej zielona… U miłośników kolejarstwa crudy robi się jeszcze szybciej i do tego od razu na cloudzie;)

Miałem to szczęście, że karierę zacząłem w dziale badawczo-rozwojowym w jednej firm, gdzie mieliśmy czas i pieniądze na eksperymentowanie z nowościami, ale również na refleksje i zgłębianie pryncypiów. Bo moim zdaniem doświadczenie wymaga 2 składowych: doświadczania nowych rzeczy (a nie powtarzania 10 lat tego samego) i reflektowania się nad skutkami swoich decyzji. Na to musi być czas.

Pierwsza rada, jaką bym sobie dał to skupić się na pryncypiach i znaleźć sobie takie miejsce do pracy gdzie masz na to przestrzeń. Bo piniądze to nie wszystko na początku kariery… przecież nie musisz od razu mieć Ferrari, przyjdzie na nie czas, na początek przecież M2 Competition też daje radę 😉 Różnica pomiędzy naparzaniem crudów (lub złożonych systemów ale crudem) a rozumieniem pryncypiów jest taka jak pomiędzy klockami Duplo a Technics. Pryncypia nie są łatwe, rozumie się je po zdobyciu tak zwanych doświadczeń odnośnych, ale pozwalają robić więcej, lepiej i szybciej. Dlatego zacząłbym od książek na temat architektury i solidnej inżynierii programowania. Wzorce architektoniczne, projektowe, clean code, testowanie. Mimo że być może nie są potrzebne na początku, nie w pierwszy projektach, to ich znajomość pozwala uczyć się szybciej – bo po prostu złożone rozwiązania są zbudowane z tych patternów, inaczej się nie da. Więc, zamiast uczyć się na pamięć api, możesz rozumieć konieczność i nieuniknioność decyzji. A to, że znasz ich nazwy powoduje, że możesz komunikować się z seniorami.

Druga rada to rozumieć na czym polega biznes – innymi słowy, na czym zarabia Twój klient. Dzięki temu możesz optymalizować swoje decyzje pod tym kątem. Możesz rozmawiać i zadawać pytania pod tym kątem. I nagle z anonimowego członka brygady remontowo-akrobatyczno-wyburzeniowej stajesz się partnerem do rozmowy i doradcą. Pomogą tutaj techniki Domain-driven Design i Event Storming.

Trzecia rada to zbudować sobie jakąś “drugą nogę” – tak jak litera Pi – stoi na 2 nogach. Jedna to ekspertyza techniczna. A druga niech to będzie jakiś skill miękki. Może mentor, może trener, może doradca, może ten, który umie zadawać pytania w punkt… Nie jest to trudne, istnieje sporo “wzorców projektowych” i “procedur miękkich” które podpowiadają jak to zrobić. A przy okazji zachodzą ciekawe zmiany w naszej sieci neuronowej 🙂

Kilka linków od Sławka:

Jakub Kubryński

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Ogólnie jak rekrutuje juniorów, to przede wszystkim staram się ocenić potencjał takiego człowieka.

Oczywiście w przypadku osób z małym doświadczeniem jest to bardzo trudne i może być mylące, natomiast ja koncentruje się na rozmowie o tym, z czego dany człowiek “czuje się mocny”. Jeżeli ktoś w ostatnim projekcie wykorzystywał technologię X, to oczekuje, że ten konkretny kawałek ekosystemu będzie znał dość głęboko. Czyli rozumiał, po co wykorzystywał daną technologię, jakie ma ona zalety, jakie wady, czy była jakaś alternatywa, jak rozwiązywał problemy, etc. Mówiąc krótko: ma być prawie ekspertem w tym wąskim wycinku. Dzięki temu jesteśmy w stanie oszacować, na ile dana osoba ma mindset drążenia tematów i dociekania działających tam mechanizmów. Później w ramach dalszego rozwoju będzie pracował w kolejnych projektach i w ten sam sposób poznawał kolejne technologie.

Akurat Java ma to do siebie, że jej ekosystem jest ogromny. Nawet jeżeli ograniczymy się do aplikacji webowych i Spring Framwork, bibliotek i wzorców, z których możemy korzystać są dziesiątki. Nie ma ludzi, którzy znają wszystkie, ale wyjątkowo cenimy tych, którzy potrafią się ich szybko nauczyć i “uprodukcyjnić”. Przez to ostatnie rozumiem, że wiedzą, na co zwrócić uwagę i jakie potencjalne konsekwencje pociąga za sobą wdrożenie/wykorzystanie danego rozwiązania.

Błędem zdecydowanie wśród juniorów jest kroczenie szeroko, ale bardzo płytko. Wtedy dostajemy osobę, która nigdy nie wyszła poza poziom tutoriali i nawet nie zdaje sobie sprawy z różnicy między napisaniem hello world a zrozumieniem danej technologii.

Ola Kunysz

Jak zaplanowałabyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikała?

Gdybym teraz chciała rozpocząć swoją drogę zawodową jako Java dev, zdecydowanie najwięcej czasu poświęciłabym na tworzenie swoich projektów.

Budowanie umiejętności i obycie z ekosystemem JVM jest kluczowe. Zamiast czytać kolejne książki skupiłabym się na budowaniu portfolio na GitHubie z dobrym README i przejrzystą strukturą. Tylko tak można się zderzyć z prawdziwymi problemami i douczyć brakujących umiejętności. Nawet jeśli projekty są bardzo proste, od razu widać proaktywne działania.

Nie zaniedbywałabym też networkingu, uczestnictwa w konferencjach czy lokalnych JUGach (Java User Group). Samo przysłuchiwanie się prezentacjom i rozmowom dużo daje.

Jarosław Pałka

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Zacząłbym od nauczenia się składni języka, poznania takich narzędzi jak IDE, narzędzi do budowania czy też git, na poziomie przyzwoicie podstawowym.

Na sam początek nauki wystarczy sama konsola jshell (której znajomość potem tylko pomoże w zawodowym życiu).

Unikałbym jak ognia poznawania koncepcji programowania obiektowego i funkcyjnego, bo to tylko może zniszczyć wasz zapał i chęć do życia. Musicie poczuć się swobodnie z językiem i narzędziami, by składnia i narzędzia nie przeszkadzały wam w dalszej nauce. Walka z brakiem przecinka czy nawiasu, potrafi skutecznie zgasić pożar waszego zapału.

Nauka języka programowania (i nie tylko), to proces, w którym uczymy się nowych rzeczy, by potem zrozumieć, że można to zrobić inaczej, prościej, efektywniej. Jednak zrozumienie u podstaw jak działa np. pętla, pozwoli się w pełni cieszyć zastosowaniem do realizacji tego samego zadania z wykorzystaniem strumieni z Java 8. Musisz być gotowy, że często będziesz się uczył konceptów i wzorców, by potem zastąpić je innymi “lepszymi” abstrakcjami.

Nauka języka jest jak ogr, a ogr jak cebula, ma warstwy. Oczywiście, możesz pójść na skróty, jednak twoja wiedza będzie powierzchowna. A brak zrozumienia fundamentów za jakiś czas okaże się największą przeszkodą w karierze i pracy w ciekawych projektach. Ci, co chodzą na skróty, piszą CRUDy, jak mawia staropolskie przysłowie. Gdy już narzędzia w twych dłoniach będą posłuszne Twojej woli, spróbuj znaleźć sobie projekt, który zrealizujesz.

Szczerze wierzę w naukę przez pracę z kodem. Programowanie to rzemiosło. Efektywny programista bazuje na pewnych nawykach, których wypracowanie wymagana godzin pracy z kodem. Sam polecam napisanie swojego własnego REPL’a. Pomysł prosty, dobrze opisany i pozwala dotknąć wiele aspektów języka i biblioteki standardowej. Potem już pozostaje podnoszenie sobie poprzeczki, przez realizację coraz trudniejszych projektów. Nie zapomnijcie, że język programowania, to tylko część waszego warsztatu. Starajcie się zrozumieć jak działa internet, protokół HTTP, bazy danych. Sam język nie da wam zatrudnienia. A jak już będziecie mieli dość pamiętajcie o absolutnych podstawach efektywnej nauki.

Po pierwsze, znajdźcie sobie mistrza.

Ale takiego prawdziwego, nie coach, czy trenera, ale mistrza, kogoś, kto was poprowadzi, wskaże błędy, zarazi zapałem i pasją. Programowanie to rzemiosło, a rzemiośle ciężko bez mistrza.


Po drugie, społeczność.

Konferencje, meetupy, hackathony. Poznajesz ludzi, którzy chcą się dzielić wiedzą, którzy wiedzą co teraz jest ważne, jakich technologii unikać. Darmowe, niekończące się źródło wiedzy i doświadczenia. Pamiętaj tylko, jeżeli społeczność nabija się z Twoich braków, zmień społeczność, nie warto zadawać się z toksycznymi ludźmi.

Po trzecie, open source.

Nie musisz kontrybuować. Ale projekty open source, są świetnym miejscem, gdzie może podejrzeć cudzy kod i poznać techniki i paradygmaty w ich praktycznym zastosowaniu. I nie przestawaj pytać, dlaczego i jak to działa. Obudź w sobie dziecięcą ciekawość. Nauczy się też odpuszczać, pójdź na spacer, jak się nie kompiluje :). Bo to, co zabija w tej branży to codzienne małe porażki, przekładana równie małymi sukcesami.
Oczywiście, każdy początkujący chciałby zobaczyć swoje dzieło. Możesz zacząć od zbudowania strony internetowej. Jednak uwierz mi, nie zawsze najkrótsza droga jest najszybszą

Grzegorz Piwowarek

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Jeśli miałbym wskazać najważniejszą rzecz, to wskazałbym na znalezienie mentora, który pomógłby nam przejść ze stanu “nie wiem, czego nie wiem”, do “wiem, czego nie wiem”, wybrać wartościowe materiały (internet jest pełen błędnych informacji i kontrowersyjnych opinii) oraz na bieżąco korygować błędy, które popełniamy. Widziałem na własne oczy, jak szybko zdolne osoby potrafią się rozwijać pod czyimś czujnym okiem.

Poza nauką samego języka, starałbym się jakoś wyróżnić na tle konkurencji za pomocą portfolio projektów czy kontrybucji open source.

Długofalowo, spędziłbym dużo czasu na poznanie podstaw teoretycznych. Nie pomoże nam to wiele na wczesnych etapach kariery, kiedy jeszcze lepimy pierogi z frameworków, ale otworzy trochę drzwi prowadzących do ciekawych projektów i ponadprzeciętnych stawek.

I na sam koniec: pamiętajcie, że lepiej nie odkładać nauki języka angielskiego na później.

Grzegorza znajdziecie na jego blogu https://4comprehension.com. Grzegorz również szkoli innych!

Darek Mydlarz

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

  1. Idź na studia informatyczne, jeśli tylko możesz – zbudujesz solidne fundamenty oraz rozszerzysz swoje horyzonty – może się okazać, że zajara Cię inna działka IT niż na początku Ci się wydawało
  2. Wcześnie zacznij pracę na część etatu – na drugim/trzecim roku studiów. Pracuj na pół etatu, skonfrontuj swoją wiedzę teoretyczną (ze studiów) z praktyczną z pracy.
  3. Doświadczenie z pracy pozwoli Ci lepiej wybierać interesujące przedmioty na studiach i łatwiej będzie Ci wybrać, z których lepiej się przyłożyć, a które przejść mniejszym nakładem sił.
  4. Chłoń wiedzę od bardziej doświadczonych. Jeździj na konferencje, oglądaj nagrania na YouTube. Po polsku z Confitury czy WJUG-a, po angielsku z Devoxxa.
  5. Nie bój się często zmieniać pracy. Jak widzisz, że przestajesz się rozwijać w swojej firmie i nie ma możliwości na szybki rozwój, poszukaj innej. Zawsze staraj się być najmniej kompetentny w zespole na począktu swojej drogi i chłoń wiedzę od bardziej doświadczonych.
  6. Nie zapominaj o czytaniu sprawdzonych książek. Czysty Kod, Czysta Architektura, Domain Driven Design, Effective Java, Test Driven Development i tak dalej dadzą Ci dużo dobrego.
  7. Nie przejmuj się syndromem oszusta. Ja (i wiele innych doświadczonych osób) do dziś szukam “banalnych” rzeczy w Google. Każdy czegoś nie umie.

Darek rozwija Sztukę Kodu => https://sztukakodu.pl/

Marcin Grzejszczak

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Dobre pytanie… To, czego mi brakowało na początku to dobrego mentora. Ponadto fajnie jest dostać listę dobrych książek, które warto przerobić.

Najważniejsze jest mieć w sobie chęci, żeby dużo ćwiczyć. Moim zdaniem kodowanie trzeba mieć wyćwiczone w praktyce, tzn. wkuwanie kodu na pamięć niewiele da. Znam parę osób, które przebranżowiły się i skupiły się na tym, żeby wykuć się teorii po to, aby przejść rozmowę rekrutacyjną. Nawet im się to udawało, natomiast nie były one w stanie potem napisać najprostszej aplikacji. Dlatego jak ja się uczyłem programowania to wziąłem sobie książkę “Thinking in Java” i czytałem ją od deski do deski robiąc przykłady po kilka razy, aż ta wiedza została mi “w palcach”.

Nie każdy natomiast ma tyle samozaparcia, żeby uczyć się samemu. Dla takich osób proponowałbym zainwestować czas w jakieś naprawdę dobre szkolenie z podstaw programowania w Javie. Jeśli szkolenie jest dobrze prowadzone to dana osoba powinna nauczyć się dobrych praktyk, a nie tylko pisania kodu. Wydaje mi się, że powinno też nauczyć podstaw wykorzystania znanych narzędzi typu Spring czy Hibernate, które potem z dużym prawdopodobieństwem można założyć, że będą używane w projektach.

Znajomość narzędzi to jedno, natomiast znajomość wspomnianych dobrych praktyk to drugie. Sugerowałbym, mając już opanowane podstawy programowania, żeby zaznajomić się z takimi kanałami na Youtube jak Java User Groups (JUGs) z różnych miast (np. WJUG – Warsaw JUG) i oglądanie prelekcji osób, które od lat programują i dzielą się swoimi doświadczeniami. Bardzo często mówią one nie tylko o tym jak coś robić, ale nawet częściej, jak czegoś nie robić. To samo dotyczy książek informatycznych, które potrafią całkowicie zmienić postrzeganie różnych zagadnień. Książkami, które zmieniły mój sposób programowania na pewno były bez dwóch zdań “Growing Object-Oriented Software, Guided by Tests” oraz “Clean Code: A Handbook of Agile Software Craftsmanship”.

Blog Marcina https://toomuchcoding.com

Jarosław Klimas

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

1) Praktyka i jeszcze raz praktyka, podczas studiów (a może i wcześniej, im szybciej, tym lepiej) szukałbym opcji, aby robić coś dla kogoś, mały projekt, jakiekolwiek zlecenia nawet za darmo, tak żeby nawet zaczynając mieć już coś do wpisania w CV.

2) Kiedyś nie było takich narzędzi jak Github, ale dziś wręcz obowiązkowo trzeba budować portfolio ze swojego kodu, więc znalazłbym jakiś dobry pomysł na projekt i tworzył go prywatnie, poddając regularnej ocenie bardziej doświadczonym osobom (np. na grupie FB). Istotne jest stosowanie dobrych praktyk, a samemu ciężko wszystko wyłapać. Doświadczona osoba wie, na co zwrócić uwagę.

3) Korzystałbym z dobrych kursów tworzonych przez zawodowych programistów z wieloletnim doświadczeniem i uczył z nich w domowym zaciszu i nie piszę tego dlatego, że akurat my takie udostępniamy, ale dlatego, że tak można najszybciej nauczyć się tworzenia kodu według dobrych praktyk. Najlepiej uczyć się na podstawie tego, co programiści znają od podszewki z codziennej pracy, bo w końcu junior do takiej pracy właśnie trafia.

4) Dziś ważne jest to, jak się pisze kod, czyli warto dokształcić się z zakresu technik “czystego kodu”.

5) Trzeba też pojąć podstawy testów jednostkowych, ponieważ dziś są istotnym elementem w pracy programisty (dawniej różnie z tym bywało).

6) Angielski na poziomie czytania dokumentacji to must have.

Czego najlepiej się uczyć? Tego co najczęściej używane w firmach: Spring (ze Spring Bootem), Hibernate, bazy danych (m.in. relacje), komunikacja http (w tym REST).

Dodatkowe przemyślenia… Dużo zależy od rodzaju firmy, do której ktoś chce startować na junior dev-a. Istotnym czynnikiem jest miasto. Inne wymagania będzie miała mała firma np. z Dębicy (z całym szacunkiem do Dębicy – fajne miasto), a inne z Warszawy czy Wrocławia. Inaczej wyglądają oczekiwania w przypadku dużych korporacji z dobrą marką na rynku, a inaczej kilkuosobowych firm, które wręcz proszą się o programistów. W topowych firmach angielski na poziomie czytania dokumentacji to minimum, jak również dobry projekt w portfolio oraz dobra znajomość frameworków (Spring, Hibernate). W niszowych firmach w mniejszych miastach czasem wystarczy zapał i umiejętność programowania w Javie plus podstawy frameworków.

Największym błędem, jaki można popełnić, to próba nauki bez regularnej oceny kogoś z zewnątrz, ponieważ niezależnie od tego ile książek przeczytamy, czy ile pooglądamy kursów nic nie zastąpi kilku słów konstruktywnej krytyki ze strony kogoś bardziej doświadczonego. Taki model można zamknąć w zdaniu: “Ucz się z dobrych źródeł i regularnie weryfikuj swoją wiedzę”. Trzeba jednak umiejętnie wyszukiwać osoby, które mają nas weryfikować, ponieważ wśród nich także mogą trafiać się osoby stosujące błędne wzorce. I tu dochodzimy do kolejnego błędu…uczenie się złych wzorców. Raz nauczysz się robić coś źle i potem ciągle robisz to źle. Musisz się uczyć na błędach, marnujesz czas, przez co zwalniasz swój postęp. A trzeba pamiętać, że ciężko jest się wyzbyć złych nawyków.

Jarek na co dzień rozwija https://javappa.com/

Przemek Bykowski

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Punkt pierwszy to dołączenie do społeczności.

Sam kiedy zaczynałem przygodę z programowaniem zaczynałem od C# i dołączyłem do grupy .NET i tego doświadczenia nie zamieniłbym na nic innego. W ramach tej grupy było dużo mądrych głów dużo organizowanych szkoleń i projektów. I teraz jeżeli miałbym jeszcze raz zacząć naukę z programowaniem to znowu bym postarał się poszukać jakiejś społeczności. Aktualnie żyjemy w czasach COVID więc takich grup na Facebooku jest naprawdę sporo. Wystarczy tylko i wyłącznie znaleźć partnerów do wspólnego kodowania, wymieniania się doświadczeniami i wspólnej nauki. To jest naprawdę ogrom wiedzy i motywacji, więc przede wszystkim dołączenie do społeczności online i aktywny w nich udział. Nie chodzi o to żeby tylko dołączyć, ale chodzi o to, żeby rozmawiać, wspólnie się uczyć, inicjować różnego rodzaju wspólne tworzenie projektów czy też naukę i przerabiane materiałów.

Punkt drugi to jest równoległe czytanie książki.

Oprócz tego, żebym dołączył do grupy, to na boku czytałbym jakąś książkę. Jeżeli chciałbym być Javowcem zacząłbym od czytania Horstmann’a, który napisał świetną książkę do Javy i również do Springa. Ale jeżeli chodzi o Springa to poleciłbym moją książkę, ale ona będzie dopiero za parę miesięcy dostępna i przede wszystkim czytając tę książkę wcale bym się nie “spinał”. Czyli jakbym czytał tę książkę, to bym poświęcał na nią od trzydziestu minut do jednej godziny dziennie i nie działał w ten sposób, że w tym momencie czytam książkę i nie robię nic innego. To mam być tylko i wyłącznie jeden z elementów harmonogramu w moim dniu, czyli spokojne czytanie książki. To jest bardzo ważne, ponieważ wiele osób pomija czytanie książek i w związku z tym piszę kod naprawdę brzydki, nie stosuje dobrych praktyk albo wykonuje jakieś rozwiązanie na okrętkę. Czytając książki możemy się dobrze zapoznać z API Javy czy jakiegoś frameworka. Myślę, że to jest konieczność czytania jakiejś książki, żeby nabrać dobrych praktyk i najlepszej znajomości języka czy też frameworka. Ale tak jak powiedziałem nie “spinać się z książką” po prostu wytyczyć sobie, że będę ją czytał np. 40 minut dziennie i po 40 minutach odkładam. I tak po prostu każdego dnia. Ważne, żeby to było regularne. Ale nic takiego co by nas obciążało.

Trzeci punkt znalezienie mentora.

O znalezieniu mentora już opowiedzieliśmy w wywiadzie (podpunkt Mentor) i tam najlepiej rozwinąć ten temat.

Czwarty punkt to jest robienie projektu i opowiadanie o nim.

Przede wszystkim wziąłbym sobie za cel zrobienie jakiegoś projektu do portfolio. Jak już dołączyłem do grupy to nic nie stoi mi na przeszkodzie, aby znaleźć ziomków i z tymi ziomkami wspólnie robić jakiegoś rodzaju projekt. Wymyślić jakiś projekt, który mógłby rozwiązywać jakiś problem, ale niekoniecznie. To zawsze może być coś prostego tylko i wyłącznie po to, żeby mieć do portfolio. Wówczas dbać o swoje portfolio, żeby to było widoczne na GitHubie, pokazać kontrybutorów, czyli osoby, z którymi robię ten projekt. Jednocześnie w ten sposób pokazuję, że umiem pracować zespołowo i mam doświadczenie w robieniu projektów. Wiele osób, które zaczyna robić projekt robi je samemu. I to nie jest najlepsza praktyka. Robiąc projekt z kimś, uczymy się nowych praktyk od tych pozostałych osób, a dodatkowo pokazujemy pracodawcy, że umiemy pracować w zespole. Co jest chyba najważniejsze na ten moment. Jak już bym robił ten projekt, to dzieliłbym się jego rezultatami. Czyli np. jak udało mi się zrobić jakąś część tego projektu to pokazuje to na LinkedIn i na grupach na Facebooku. Możesz napisać: słuchajcie robimy projekt i on jest na etapie takim i takim. Warto się tym dzielić, prosić o komentarz, o feedback i wcale się nie martwić o to, że ktoś może lekko to skrytykować. Grunt, żeby po prostu pytać o najlepsze praktyki, zwyczaje, pomysły i w ten sposób dostajemy ciągłą informację zwrotną jak mamy się rozwijać.

Jakich błędów bym unikał opowiem na podstawie doświadczeń, jakie miałem jako trener. Czyli co robią kursanci, a ja tego nie pochwalam i warto byłoby nad tym popracować. Przede wszystkim nie pisać kodu po polsku. Zdaję sobie sprawę, że dużo osób może mieć problem z językiem, ale po prostu warto ten język się nauczyć. Nie trzeba znać od razu całego angielskiego, żeby pisać kod w tym języku. Wystarczy po prostu nauczyć się podstawowej nomenklatury, ponieważ wiele rzeczy się powtarza w kodzie i wystarczy tylko i wyłącznie nauczyć się kilku słów kluczowych, a później umiejętne wplatać je do kodu źródłowego. Jeżeli jesteśmy już przy pisaniu kod. Często w naszych konsolach jeśli pojawia się jakiś problem, to środowisko programistyczne jasno nam powie gdzie się pojawił dany problem i wystarczy ten problem wpisać do Google’a. Dużo początkujących osób chyba jest nieprzyzwyczajonych do googlowania informacji, do szukania kodów błędu. Dużo problemów, jakie się pojawiają w pracy z Javą jest już opisanych. Czy to na StackOverflow lub w innych serwisach. Wystarczy tylko zapoznać się z tymi serwisami i nauczyć się z nich korzystać. Jak wpisać do wyszukiwarki. Jak działa tak StackOverflow. Bardzo częste jest to, że początkujący programiści, zamiast przepisywać kod, który jest podany w odpowiedzi, to przepisują kod, który jest napisany w pytaniu, który nie działa. Więc przede wszystkim obycie się z Google, StackOverflow i innymi serwisami dla programistów, w ramach których możemy zadawać pytania i uzyskiwać odpowiedzi. To jest ważne, żeby nie bać się zadawać pytań na różnego rodzaju forach, grupach czy też serwisach.

Kolejną rzeczą jest solidne nauczenie się debugowania.

Nie powinniśmy raczej pisać kodu w taki sposób, żeby początku do końca wiedzieć co w którym momencie dana linijka kodu nam zwróci. Wszystko można podejrzeć w debuggerze. Więc jeśli nauczymy się solidnie korzystać z debugera to możemy w łatwy sposób sami zdiagnozować błąd. Nie siedzieć przed kodem i zastanawiać się co on może zwrócić, jak on może zwrócić, co on zwraca, czego nie zwraca, tylko po prostu szybko debugerem przelecieć kod, sprawdzić i zobaczyć co jest zwracane. Dużo środowisk programistycznych jak np. IntelliJ ma wspaniałego debuggera, więc może to nam znacznie ułatwić pracę.

Ostatnim punktem jest to, że trzeba pamiętać, aby czytanie nas nie zablokowało.

Dużo osób na przykład wychodzi z założenia, że ja jeszcze nie robię żadnego projektu, bo nie czytałem książki. Tak jak powiedziałem książka powinna być gdzieś z boku, a nie powinna być główną częścią. Sam miałem ten problem, że nie wiedziałem jak po prostu to pożenić, dlatego też czytałem książkę, a dopiero potem pisałem aplikacje. Ja, bym te procesy zrównoleglił. Przede wszystkim robić projekt, ale wydzielić jakiś fragment dnia na czytanie książki. Z drugiej strony nie wolno też zaniedbywać czytania, bo dużo osób mówi: A, tam książka to i tak zapomnę lub A tam, książka to tam nauczę się tego w praktyce. Nie. W praktyce się można nauczyć praktyki, a do teorii trzeba mieć jakieś źródło. Jeżeli nie mamy funduszy, to można zainwestować w książkę. Jeżeli mamy fundusze to najlepiej zainwestować w kursy, ponieważ w kursach mamy tę wiedzę podaną w znacznie sprawniejszej i przystępniejszej formie. Dużo zależy od funduszy, jakim dysponujemy. Jeżeli chcemy jeszcze bardziej przyspieszyć ten proces, to możemy zainwestować w mentora. To znacznie przyspieszy nam ścieżkę kariery.

Więcej o Przemku:

Jestem trenerem i zawodowym programistą, który aktualnie mieszka i projektuje systemy SaaS w Norwegii. Potrafię dotrzeć do programistycznego umysłu, wytłumaczyć skomplikowane rzeczy w łatwy sposób. Inspiruję do działania, i przekazuję sporą dawkę motywacji. Właśnie to pozwoliło mi na zbudowanie społeczności pasjonatów programowania 🙂 Po godzinach nagrywam filmy na mój kanał 🔴YouTube, publikuje na 🗣blogu i prowadzę swoją społeczność o wdzięcznej nazwie Bycza Zagroda 🐂. Poza tym trenuje crossfit i jestem maratończykiem. Zawsze pełen pozytywnej energii do działania! 🙂 Złap mnie na LinkedIn ➜ https://www.linkedin.com/in/przemyslaw-bykowski/

Bartłomiej Chmielewski

Jak zaplanowałbyś teraz swój proces nauki, by zostać Junior Java Developerem i jakich błędów byś unikał?

Przede wszystkim nastaw się, że zostanie developerem to proces – maraton, a nie krótki sprint. Gdy już zdecydujesz się pójść tą drogą,
zacznij zdobywać wiedzę. Kup jedną dobrą książkę do Javy lub dowolnego innego języka, który Cię zainteresuje. Przerób ją starannie.


Jeśli po jej przeczytaniu nadal uważasz, że chcesz zostać developerem to świetnie! Zacznij zdobywać umiejętności, które będą Ci towarzyszyć
przez całą karierę. Bycie developerem oznacza, że w Twoim arsenale musi pojawić się wiele zdolności. Będziesz je wykorzystywać
przy okazji różnorodnych projektów. Ich listę możesz znaleźć w moim Handbooku, jak również u Bartka na javaready.pl. I pamiętaj, rób jeden krok na raz. Nie rozdrabniaj się i nie ucz się każdej nowej technologii, bo wygląda fajnie. Pamiętaj o swoim celu.

Co każdy Junior powinien wiedzieć? Junior Java Developer Handbook od Bartłomieja Chmielewskiego: https://bartlomiejchmielewski.pl/junior-java-developer-handbook/

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *