Skip to content

Witaj w Świecie Jutra!

  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
  • Home
  • Wszystko
  • Przebranżowienie cz.3
  • Programowanie
  • Wszystko

Przebranżowienie cz.3

Jakub Raczkowski 27 grudnia 2023

Ten artkuł jest trzecią i ostatnią częścią mojego wstępniaka do serii tekstów przedstawiających proces przebranżawiania się na programistę. Jeśli jeszcze nie czytałeś poprzednich to znajdziesz je TUTAJ (Część 1) i TUTAJ (Część 2). Dzisiaj poruszę kwestię: „jak nauczyć się języka kodu nie dość, że tanio to na dodatek dobrze”.

Myślę, że wszyscy znamy trójkąt z obrazka powyżej. Jeśli chcemy, żeby coś było szybko i dobrze to nie będzie tanio. Z kolei gdy ma być tanio to albo nie będzie dobrze, albo trochę to potrwa. A czas to pieniądz.

Dlatego osobiście odradzam całkowicie darmowy sposób przyswajania wiedzy. O ile nie uczymy się programowania z czystej pasji, naszym głównym celem jest znalezienie dobrej pracy. Zatem szybka matematyka:

  • Uczymy się 2 lata, tylko z darmowych źródeł, nic nas to nie kosztuje. Po dwóch latach znajdujemy pracę z pensją 5000zł/miesiąc przez pierwszy rok.
  • Uczymy się 10 miesięcy, płacimy za mentoring, książki, kursy. W sumie wychodzi 5000zł za całość. Znajdujemy pracę z pensją 5000zł/miesiąc przez pierwszy rok. Potem renegocjacja stawki albo zmiana firmy i wskakujemy na 10000/miesiąc.

W której z tych dwóch opcji będziemy bogatsi po trzech latach?

Nie trzeba pisać całek, aby znać wynik. No, ale żeby nie było, że się nie da – da się, tylko wyjdzie dłużej i będzie trudniej. Poniżej podzielę się z wami ciekawymi metodami jak samemu nauczyć się programowania. Nawet jeśli zdecydujecie się na płatny kurs, poniższe metody mogą okazać się ciekawym uzupełnieniem waszych studiów.

Ale najsampierw rzućcie okiem na ten wykres:

Ogólnie mówi nam on o tym, że paradoksalnie im mniej wiemy, tym wydaje nam się, że wiemy więcej. Z drugiej strony, w trakcie poznawania danego tematu powoli zauważamy naszą ignorancję oraz to ile jeszcze zostało wiedzy do poznania. Tracimy pewność siebie. Łatwo to było zauważyć w czasie pandemii – w życiu bym się nie spodziewał iloma profesjonalnymi wirusologami się wtedy otaczałem.

Największy problem z nauką samodzielną polega na tym, że:

Nie wiemy czego jeszcze nie wiemy.

Sam tak miałem kiedy zaczynałem naukę Javy rok temu. Myślałem „znam warunki, pętle pamiętam jeszcze ze studiów, raz-dwa ogarnę resztę”. Taki ch… Wiecie dlaczego pensje w IT są wysokie? To nie tak, że przedsiębiorcy są mega szczodrzy, a gdy powiesz „znam SQLa” to spadają im majtki. Wiedzy do ogarnięcia jest faktycznie masa, chętnych na naukę tego pierdolnika cały czas brakuje, a tych którym się ta sztuczka udała trzeba przekabacać dobrą kasą, aby zgodzili się kodzić dla nas. I tym samym przynosić nam jeszcze większe kokosy.

Dlatego zanim w ogóle zdecydujecie się zostać programistami danego języka spróbujcie wpierw wyszukać tzw. „roadmapę” czyli wykaz tego co trzeba (albo po prostu warto) ogarnąć zanim zaczniecie wysyłać CV. Żeby nie być gołosłownym, rzućcie okiem na to jak taka mapka prezentuje się w przypadku Javy:

Już czaicie w co się pakujecie? Dość powiedzieć, że uprzednio polecany przeze mnie kurs CodeGym pokrywa w zadowalającym stopniu zaledwie czubek tego drzewka, a mimo to żeby go ukończyć trzeba minimum pół roku codziennej, rzetelnej pracy!

Plusem bezpłatnego zdobywania wiedzy jest to, że nic nie zainwestowaliśmy, więc możemy się wycofać w każdym momencie bez uczucia, że wyrzuciliśmy pieniądze w błoto.

Minusem bezpłatnego zdobywania wiedzy jest to, że nic nie zainwestowaliśmy, więc możemy się wycofać w każdym momencie bez uczucia, że wyrzuciliśmy pieniądze w błoto.

Wiecie co najbardziej motywuje poza górnolotnymi sprawami typu rodzina, ambicje, pasja itd.? Motywuje wzmożone pragnienie nie bycia ostatnim frajerem. Bo jak inaczej nazwać kogoś kto wydał całą pensję na bootcamp, a po miesiącu uznał, że za trudne, że mu się nie chce, że to nie dla niego? Dlatego jeśli płacimy za naukę i mamy wyznaczony deadline tym bardziej ciśniemy z tematem, a mniej ważne rzeczy schodzą na bok. A to przekłada się na efekty.

Z tego właśnie powodu nauka z darmowych źródeł idzie tak opornie – w każdym momencie mamy poczucie, że możemy zakończyć przygodę i nic złego się nie stanie, nic nie stracimy. Waszym największym wyzwaniem będzie zdobycie motywacji i systematyczna praca. Piszę to z perspektywy nauczyciela, który pracował zarówno z dorosłymi którzy sami opłacali zajęcia, oraz z młodzieżą, która miała to fundowane przez rodziców.

Różnice w podejściu do nauki – O G R O M N E.

Źródło: Gettyimages

Dobrze, ale przejdźmy do sedna. Od czego zacząć?

Oczywiście od YouTube. Serwis pełen jest mniej lub bardziej profesjonalnych kursów. Od siebie mogę polecić Kanał o Wszystkim gdzie przejrzyście wyjaśniono mi podstawy Javy, tam gdzie CodeGym za bardzo komplikował. Oprócz tego autor uczy też innych rzeczy: JavaScript, Python, SQL, C++, itd. Są to podstawy a jednocześnie zajawki – bardziej konkretne tematy są schowane w jego płatnych kursach. Tym niemniej na początek jak najbardziej wystarczy.

Jako uzupełnienie tematu możemy dołożyć lekturę książki „Rusz głową. Java” (Kathy Sierra, Bert Bates, Trisha Gee) którą czyta się z przyjemnością już od pierwszych kroków z Javą. W C# mamy bardzo podobną pozycję („Rusz głową. C#” Andrew Stellman, Jennifer Greene) a w Pythonie bardzo polecana jest Python Basics (David Amos, Joanna Jablonski, Fletcher Heisler, Dan Bader). Nówki oczywiście swoje kosztują, ale to nie są tytuły sprzed roku więc jest szansa na znalezienie ich w bibliotece. No i nie zapominajmy o tanich używkach z OLX.

W trakcie studiów bardzo często (a właściwie non stop…) będziecie trafiali na rzeczy, których jeszcze nie rozumiecie:

List<String> list = new ArrayList();

Dziwne… Dopiero co uczyłem się, że interfejsy nie mają konstruktorów, a tu proszę, zmienna typu interfejsu „List”. O co kaman?

I tak jest co chwilę. Mając mentora moglibyśmy od razu do niego uderzyć z tematem, ale nawet będąc darmowymi użytkownikami jest światełko w tunelu. Nie zapominajcie bowiem, że żyjemy w świecie przyszłości, a sztuczna inteligencja już dawno wyprzedziła realną głupotę. Proste zapytanie w ChatGPT rozjaśnia sprawę:

Nie tylko wytłumaczył sytuację, a do tego zauważył błąd w typowaniu.

Przy okazji – nic nie stoi na przeszkodzie aby używać ChatGPT po polsku, choć osobiście nie zalecałbym tego w przypadku zagadnień z programowania, gdzie język angielski jest codziennością i warto ćwiczyć zawsze kiedy nadarzy się okazja.

Teorię mamy załatwioną, a co z praktyką? Pisząc „helloworldy” w nieskończoność języka się nie nauczysz. Cóż, podejścia do tematu są dwa:

Algorytmiczne i Praktyczne.

Ten pierwszy polega na tym, że oswajasz się z językiem i środowiskiem rozwiązując różnorakie problemy logiczne.

Np. „dostajesz parametr 'n’ który jest n-tym wyrazem ciągu Fibonacciego, napisz metodę która wyświetli ten wyraz”.

Osobiście mózg mi się lasuje od samego patrzenia na takie zagadki, chociaż jak się skupić i dobrze to sobie rozpisać to okazuje się, że cała funkcja ma ze cztery linijki kodu i działa. Mimo to jest to wysoce niepraktyczne tj. nie ma zastosowania w pracy. Prędzej przez pół dnia roboczego będziesz pisał dokumentację niż dostaniesz jedno zadanie w stylu „ile jest sposobów zejścia ze schodów mających n-stopni zakładając, że na raz pokonujemy 1,2 lub 3 stopnie.”

Jeśli jednak algorytmy są twoją pasją tutaj mogą ci pomóc poniższe strony:

  • CodeWars
  • HackerRank
  • LeetCode

W każdej z nich pniemy się po szczeblach rankingu rozwiązując coraz to trudniejsze zadania (w wybranym przez nas języku programowania). Może się to przydać przy tzw. live coding (programowanie na żywo kiedy rekruter patrzy ci na ręce) w czasie rozmowy o pracę. Wysoka pozycja w rankingu może również ładnie udekorować twoje CV.

Jako ciekawostkę dodam jeszcze newsletter Daily Coding Problem w którym każdego dnia otrzymujemy zagadkę logiczną do zakodowania.

Jeśli chodzi o algorytmy, ta książka bardzo często jest rekomendowana.

Drugie podejście jest bardziej praktyczne, bo przyda się później w pracy. Na początek możecie sobie zerknąć na stronę Coding Challenges gdzie autor co tydzień publikuje zadanie, które faktycznie może pomóc w różnorakich projektach. Dla przykładu TUTAJ mamy zaprogramować aplikację skracającą linki, taką samą jak ma np. tinyurl.com. Robiłem coś bardzo podobnego na CodeGym i muszę przyznać, że zadanie jest trudniejsze aniżeli się wydaje na początku. Ale stworzenie czegoś co faktycznie ułatwia życie daje sto razy więcej satysfakcji niż jakieś ciągi Fajfucziego.

Na sam koniec zostawiłem wisienkę na torcie, creme de la creme, coup de grace, chapeau bas i voulez-vous coucher avec moi w jednym! A mianowicie:

Własny projekt

Kim jest tak naprawdę programista? Inżynierem? Artystą? Tym i tym po trochu. A równocześnie takim Johnem Wickiem. Specjalistą od rozwiązywania problemów. Płatnym zabójcą kłopotów.

Ale żeby było na co polować, najpierw potrzebny jest owy problem. Jeśli ruszacie w świat programowania samodzielnie, postarajcie się wejść tam ze swoim problemem który chcecie rozwiązać kodem. Co to może być? Cokolwiek, ważne, żeby było z życia wzięte, a rozwiązanie faktycznie przynosiło jakąś wartość dodaną. Rodzice prowadzą B2B ale nie korzystają z platform typu Booking? Niech twoim celem będzie stworzenie własnego systemu rezerwacji. Grasz w Diablo i nie wiesz na jaki build postaci się zdecydować? Zrób appkę, która symuluje różne kombinacje i podpowiada najlepszą na danego bossa. Pamiętaj, że to musi cię jarać bo przy braku mentora i wcześniejszych inwestycji to będzie twoja największa motywacja!

Tu może pojawić się pytanie – kiedy zabrać się za stworzenie takiego projektu? Po czym poznać, że już jesteśmy gotowi? Przecież znając jedynie „hello world” nie będziemy wiedzieli nawet jak zacząć!

Na to pytanie niestety musicie odpowiedzieć sobie sami, ale nawet tu mogę doradzić coś takiego jak MVP czyli „Minimum Viable Product” to znaczy produkt który spełnia minimalne wymogi i nic więcej, żadnych wodotrysków. Problem w tym, że zazwyczaj już na początku chcemy, żeby nasza appka łączyła się z bazami danych, miała zawansowane testy integracyjne, używała kontenerów i wiele innych technologii o których gdzieś tam słyszeliśmy albo podpatrzyliśmy zerkając na oferty pracy.

Zapomnijcie o tym na razie. Obniżcie swoje oczekiwania i zróbcie to tak jak potraficie na ten moment, jednocześnie stale się dokształcając. Ważne żeby działało, a reszta przyjdzie później. Tworzycie prototyp na którym oprzecie kolejne wersje, bogatsze w opcje, wykorzystujące nowocześniejsze frameworki. Tak czy siak za rok będziecie z zażenowaniem patrzeć na kod który właśnie tworzycie, ale właśnie o to tu chodzi. O ciągły rozwój i zdobywanie wiedzy.

Minimum Viable Project – zaczynamy od czegoś prostego ale działającego. Potem dokładamy kolejne funkcje.

W tej właśnie atmosferze pozwolę sobie zakończyć niniejszy wstępniak. Jak mogliście zauważyć – na górze strony pojawiła się nowa kategoria: „Programowanie” w której (mam nadzieję) regularnie będę publikował kolejne artykuły pokazujące jak mozolnie, acz z uporem przebijam się do świata kodu. Będzie to coś co samemu chciałem przeczytać kiedy dopiero wstępowałem na tą drogę. Coś co może się przydać i wam, żółtodziobom którzy stawiają swoje pierwsze kroki w IT. Zatem, cytując ChatGPT:

Happy coding!

Continue Reading

Previous: Przebranżowienie cz.2
Next: Pierwszy samodzielny projekt

Related Stories

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025

Ze świata

  • Antyweb
  • Kwantowo
  • Dwóch po dwóch
Netflix odpala nową funkcję, która da użytkownikom więcej władzy
Tanie iPhone'y i Samsungi w nowym sklepie Orange
Fani Androida mają powód do radości. Wraca wsparcie uwielbianej funkcji
Wielkie nieporozumienie wokół nowego iPhone’a. Zobaczcie to, zanim zaczniecie krytykować
Chiny przejmują legendarny oddział Sony. Koniec ery
Tak chcemy wyjaśnić napięcie Hubble'a. Lepszej metody dotąd nie było
Netflix odkrywa karty o premierach. Wiemy, co pokaże na dniach
A co powiesz na ładowanie... laserem? Badacze już to testują
ChatGPT zabierze nasze pieniądze? Nowy pomysł jeszcze gorszy niż reklamy
To najmniejsza myszka na świecie. Użyjesz jej wszędzie
Ta aplikacja to „centrum dowodzenia” każdego miłośnika podróży
Kaufland zaszalał. Rozchwytywany sprzęt Parkside trafił na półki
O tych nowościach w Windows 11 jest dziwnie cicho. A szkoda
Microsoft szykuje rewolucję. Skorzystasz, jeśli obejrzysz reklamy
Te zestawy LEGO za moment znikną z rynku. Wiecie, co to oznacza?
To już ostatni dzwonek! Skorzystaj za darmo, zanim Apple to wyłączy
Masz uczulenie na sierść psa? Z tym nic ci nie grozi
Prawdziwa bomba od T-Mobile - klienci Heyah będą zachwyceni!
Garmin, Samsung i Apple na celowniku. Te zegarki mogą zniknąć z rynku
Łatwiej zmienisz przeglądarkę na iPhonie. Wystarczy jedna opcja
To by było na tyle, jeśli chodzi o możliwość ugody
Ocalić od zapomnienia
Ostatni kwant
ALH 84001 – meteoryt, o którym mówiono nawet w Białym Domu
HESS zarejestrował kosmiczny elektron o niespotykanej energii [Phys. Rev. Lett.]
Matka ciemnej materii – recenzja biografii “Vera Rubin. Życie”
Satelita, który zerwał się ze smyczy
Wiadomość od Carla Sagana do przyszłych eksploratorów Marsa
Ile najdłużej może trwać zaćmienie Słońca?
Nowa największa liczba pierwsza ma ponad 41 milionów cyfr [GIMPS]
30 lat konsoli PlayStation – Odcinek #130
Omawiamy serię The Walking Dead (gość: Stary Gracz)
Nikt nie potrzebuje cienkich smartfonów – Odcinek #129
To ostatni dzwonek na kolekcjonowanie gier i filmów
Najlepsza relacja z PGA 2025 (Poznań Game Arena)
Bumblebee wśród klawiatur. Marvo Meqa 80W – recenzja
Pierwsze spotkanie z Omoda 7 Super Hybrid
Logitech MX Master 4, Wednesday, 1670 sezon 2 – Odcinek #128
Tani pad, który chciał być jak DualSense. Test Monka Contra GT-96
Secret Service i prasa komputerowa w Polsce – Odcinek #127

To może cię zainteresować:

Mageege Moon104 – test niskoprofilowego mechanika
  • Sprzęt

Mageege Moon104 – test niskoprofilowego mechanika

11 marca 2025
Przebranżowienie cz.4
  • Programowanie

Przebranżowienie cz.4

27 lutego 2025
Smartfon Jutra
  • Sprzęt

Smartfon Jutra

15 lutego 2025
Czym jest Swagger?
  • Programowanie

Czym jest Swagger?

22 lipca 2024
  • Technologie jutra
  • Sprzęt jutra
  • Aplikacje jutra
  • Programowanie
  • Księga Drogi
  • Renowacja
  • Różności
  • Archiwum
  • Autor
Copyright © All rights reserved. | DarkNews by AF themes.