Programista to uparty samouk dążący do doskonalenia i poszerzania swojej wiedzy

Przewodnik dla Młodszego Programisty. Programowanie to nie tylko pisanie kodu, ale to tak naprawdę rozwiązywanie problemów za pomocą odpowiednich narzędzi i metod. Trzeba zrozumieć problem jaki się rozwiązuje. Istnieje wiele źródeł do nauki takich jak np. https://roadmap.sh/ ale ten przewodnik pomógł już kilku osobom i może pomoże też Tobie. Poniżej znajduje się opis jak przejść przez kluczowe zagadnienia oraz materiały na drodze do rozwoju jako programista.

Podstawy

  • 0. Jak działa komputer?

    Poznaj i zrozum takie pojęcia jak: kod binarny, CPU, RAM. Zacznij od Internetu, YouTube lub książek. Dobrym miejscem jest ten kanał: Wprowadzenie do komputera.

  • 1. Wstęp do programowania

    Zrozum podstawowe pojęcia, takie jak instrukcje warunkowe, zmienne, algorytmy, sortowanie. Możesz poczytać w Internecie, YouTube lub kupić książkę. Polecam ten kanał: Wprowadzenie do programowania.

  • 2. Jak najszybciej zacząć

    Rozpocznij praktyczne programowanie. Jaki język wybrać? To najczęstsze pytanie jakie dostaję. Nie ma znaczenia, spróbuj kilku języków, jeden po drugim, potestuj, zobacz co Tobie sprawia frajdę. Ważne, aby działać, nawet jeśli nie wszystko działa od razu. Możesz korzystać z przykładowych projektów na Github, Hour of Code, StackOverflow, czy kursów na Udemy, Coursera, lub DataCamp. Moja przygoda zaczęła się od magazynu, który widzisz poniżej. Mama kupowała mi go, gdy byłem w gimnazjum. Bardzo interesowały mnie wtedy komputery – lubiłem o nich czytać, chociaż jeszcze nie programowałem. Pewnego dnia otworzyłem sekcję "Delphi: piszemy dobry program" i tak to się zaczęło. Nie znałem wtedy jeszcze dobrze języka angielskiego, ale gdy zobaczyłem te okienka, przepadłem :) Dlatego teraz proszę – otwórz edytor i zacznij swoją przygodę!

Kluczowe Umiejętności

  • 3. Wzorce projektowe

    Wzorce projektowe to fundamenty dobrego programowania. Sprwadź:
    Refactoring Guru
    oraz implementacje w Pythonie: Wzorce projektowe w Python.

  • 4. Nauka Git

    Naucz się wersjonowania kodu, rozwiązywania konfliktów oraz zarządzania zmianami. Skorzystaj z interaktywnego narzędzia: Learn Git Branching.

  • 5. Jak działa Internet oraz aplikacje webowe?

    Dowiedz się, jak działa Internet, oraz o podstawach aplikacji webowych. Świetny kanał wprowadzający znajdziesz tutaj: Jak działa Internet.

  • 6. Praktyka

    Napisz kilka stron i gier (bo one łatwo łąpią za serce, bo bardzo szybko widać co budujesz). Dobrym darmowym edytorem jest Visual Studio Code. Phaser to jedna z najczęściej używanych bibliotek do tworzenia gier 2D w JavaScript, dostępna tutaj. A popularna biblioteka do tworzenia gier 2D w Pythonie ze wsparciem dla grafiki, dźwięku oraz sterowania. Dostępna tutaj.

Polecane książki

  • 7. Algorytmy. Ilustrowany przewodnik

    Zrozum podstawowe struktury danych i algorytmy, takie jak tablice skrótów, listy powiązane i rekurencja.

  • Czysty Kod - Robert C. Martin

    Podręcznik dobrego programisty. Poznasz zasady, wzorce i praktyki pisania czystego, zrozumiałego kodu.

  • TDD - Techniki programowania sterowanego testami

    Poznaj podstawy testów jednostkowych i metodologii TDD (Test-Driven Development).

  • Pragmatyczny Programista. Od czeladnika do mistrza

    Omówienie odpowiedzialności zawodowej, nowoczesnych technik programowania oraz dobrych praktyk.

  • Design Patterns: Elements of Reusable Object-Oriented Software

    Klasyczne wzorce projektowe, które pozwalają na tworzenie elastycznego i łatwego do utrzymania kodu. Design Patterns na Amazon.

Dodatkowe umiejętności

  • 8. Rozwiązywanie problemów

    Zrozum, jak dzielić problem na mniejsze kroki i jak przekształcić myśli na pseudokod czy diagramy. Przykłady znajdziesz na Code.org.

  • 9. Konfiguracja środowiska programistycznego

    Dowiedz się, jak skonfigurować podstawowe narzędzia: VS Code, Node.js, i Git.

  • 10. Debugowanie

    Naucz się interpretować komunikaty o błędach i używać narzędzi takich jak Chrome DevTools do debugowania.

  • 11. Struktury danych i algorytmy - Trenuj (zaawansowane)

    Zgłębiaj bardziej złożone struktury danych, takie jak drzewa, grafy, oraz kolejki priorytetowe. Ucz się zaawansowanych algorytmów, w tym algorytmów wyszukiwania w grafach (BFS, DFS), algorytmów optymalizacyjnych (np. Dijkstra, A*), oraz technik sortowania o wyższej wydajności.

  • 12. Bazy danych

    Naucz się podstaw SQL oraz różnic między bazami relacyjnymi i nierelacyjnymi. Zacznij tutaj.

  • 13. API i RESTful Services

    Poznaj, jak działają API i zasady REST. Spróbuj swoich sił w Postmanie.

Umiejętności miękkie i rozwój Kariery

  • 14. Umiejętności miękkie dla programisty

    Komunikacja i zarządzanie czasem to kluczowe umiejętności. Znajdź czas na ich rozwój. Jedna z bardziej interesujących książek w tym temacie Jak zdobyć przyjaciół i zjednać sobie ludzi

  • 15. Budowanie portfolio

    Dowiedz się, jak budować portfolio, prezentować projekty na GitHubie oraz przygotować się do rozmów kwalifikacyjnych. Uzupełnij sekcję "README.md" — to pierwsze, co inni zobaczą. Tutaj jest bardzo fajny tutorial GitHub Portfolio

  • 16. Rozmowa kwalifikacyjna: Typowe pytania i algorytmy

    Przygotuj się na pytania techniczne związane z algorytmami i strukturami danych, takie jak listy, stosy, drzewa, oraz problemy sortowania i wyszukiwania. Sprawdź LeetCode, HackerRank oraz Codewars dla ćwiczeń.

  • 17. Pytania dotyczące systemów i architektury

    Naucz się podstaw projektowania systemów, skalowalności i architektury aplikacji. W wielu wywiadach programistycznych szczególnie na wyższych stanowiskach to kluczowa wiedza.
    Polecane źródła:
    - Przewodnik stworzony przez Meta & Google engineers Grokking the System Design Interview
    - Jedna z najlepszych książek na rynku (PL) Designing Data-Intensive Applications - Martin Kleppmann

  • 18. Rozmowa z rekruterem

    Przygotuj odpowiedzi na pytania rekrutacyjne dotyczące doświadczenia, umiejętności miękkich, pracy zespołowej i motywacji. Staraj się jasno opisać swoje projekty, wyzwania oraz sposoby ich rozwiązywania.
    Polecane źródła:
    - Książka Cracking the Coding Interview - Gayle Laakmann McDowell
    - Artykuły online na temat typowych pytań rekrutacyjnych, np. 50 Common Interview Questions.

  • 19. Mock interviews

    Ćwicz w symulowanych rozmowach kwalifikacyjnych, aby poczuć się pewnie i oswoić z procesem.
    Możesz skorzystać z:
    - Symulacje technicznych rozmów Pramp
    - Rozmowy z doświadczonymi inżynierami Interviewing.io

Podsumowanie

  • 20. Kilka słów ode mnie

    Nauka jest procesem ciągłym i wymaga samodyscypliny. Umiejętność korzystania z języka angielskiego jest kluczowa dla dostępu do najlepszych materiałów i projektów.
    Pamiętaj, że praktyka czyni mistrza – staraj się rozwiązywać problemy na różne sposoby, by rozwijać różne perspektywy i techniki.

    W razie pytań, zapraszam do kontaktu. Nie słuchaj innych, że nie możesz zostać programistą. Słuchaj swojego serca i spróbuj swoich sił w tej ekscytującej przygodzie. Zapraszam też do mojej notatki o superbohaterach programowania, to dobra dawka motywacji: Heroes.

    Trzymam kciuki i miłej zabawy - na koniec TOP 10 :)

Top 10 Mantra

  • 10-punktowa mantra dla młodszych programistów

    Masz prawo zadawać pytania.
    Nie ma czegoś takiego jak złe pytanie.
    Nikt nie oczekuje, że będziesz znać każde narzędzie czy technologię.
    Nigdy nie zobowiązuj się ponad swoje możliwości.
    Pamiętaj, dlaczego zacząłeś/zaczęłaś zajmować się programowaniem.
    Mówienie "NIE" jest w porządku.
    Pamiętaj - najlepsi programiści też kiedyś byli juniorami.
    Bądź dumny/dumna z postępów, które robisz.
    Traktuj błędy w kodzie jako okazje do nauki i rozwoju.
    Sam/a jesteś odpowiedzialny/a za swoją naukę.