- Jak znaleźć pierwszą pracę jako Programista
- 1. Nie umiem nic. Jak zacząć?
- 2. Coś tam umiem z tego HTMLa, CSSa i JSa... Co dalej?
- 3. Naucz się używania REST API
- 4. Naucz się TSa
- 5. Naucz się używania popularnego Frontendowego Frameworka
- 6. Wiedzieć jak działają bundlery
- 7. Nauczyć się Tailwinda.
- 8. Pisać własne projekty, dzielić się doświadczeniami, udzielać się w open source, pomagać innym w programowaniu.
- 9. Nauczyć się UI/UX Designu
- 10. Nauczyć się pisania testów.
- 11. Nauczyć się pisania Backenda
- 12. Nauczyć się tematów DevOpsowych (Deploye, Pipeline, CI/CD)
- 13. Nauczyć się używania Baz Danych
- 14. Napisać schludne CV i do CV dołączyć plik PDF z projektami które napisaliście na Githubie.
- 15. Jak rozmawiać i jak się zachowywać na rozmowie kwalifikacyjnej?
- 16. Ale Rezix, ja wszystko zrobiłem jak powiedziałeś i ja dalej nie mam pracy!
- 17. Co jeszcze mogę się nauczyć, aby zwiększyć swoje szanse na rynku jako programista?
Jeżeli nie masz pojęcia o programowaniu, to polecam robić poradniki na YouTube.
Moim zdaniem najlepszy sposób jest taki: obejrzeć 2 poradniki 10-20 minut (razem 20/40 minut) i na podstawie tej wiedzy stworzyć coś własnego.
Tym sposobem unikniemy problemu, że uczymy się samej teorii, której szybko zapomnimy.
Jeżeli nie umiesz nic, to HTML wydaje mi się być dobrą opcją. Na początek bym unikał tutoriali gdzie ktoś opisuje każdą funkcję z osobna. Lepsze wydaje mi się na początek oglądanie tutoriali gdzie ktoś pisze kod i go komentuje, co robi i jakie funkcje kryją się za danym kodem:
To samo z CSSem. I potem JSem.
...każdy element kodu, którego się uczycie, czy to funkcja, czy Block-HTML jest jak klocek Lego. Im więcej umiecie (im więcej klocków Lego macie) tym łatwiej jest budować bardziej skomplikowane struktury kodu.
- HTML jest szkieletem strony.
- CSS jest designem
- HTML jest choinką. CSS to ozdoby.
- A JS... światełkami.
W sensie jak dacie na choinkę światełka to jakoś trzeba nimi sterować. No i za sterowanie tymi światełkami odpowiada JS.
JSem mógłbyś włączyć i wyłączyć światełka. Zmienić kolory, zmienić czas ich świecenia się.
Niech to będzie twój pierwszy challange. Zrób choinkę. Szkielet HTML to nazwy i klasy. CSSem dajesz kolory i ozdoby. Przy pomocy JSa możesz tą choinkę zanimować. Sterowanie światełkami choinki może się odbyć przy pomocy przycisków.
- Online: codepen.io
- Albo ściągnąć VSCode: code.visualstudio.com
Możesz mieć na początku problemy z terminalem i dodaniu Private Keys .ssh ale myślę, że dasz radę.
Jako użytkownik Maca masz wbudowany terminal w systemie. Jako użytkownik Windowsa polecam gitforwindows:
Naucz się poprawnie nazywać commity!
Dodawaj na niego sukcesywnie swoje pierwsze projekty, pytaj się na Discordzie o code review i pomoc jeżeli masz Problemy z jakąś nieścisłością w kodzie. Na tym świecie istnieje naprawdę wiele pomocnych dusz, którzy chętnie służą pomocą :)
Listę Discordów o programowaniu znajdziesz bez problemu w Google.
Naucz się robić forki i pull requesty.
Chcesz przetestować robienie kontrybucji i chcesz żeby twoja choinka trafiła do Examples?
Zrób commit do projektu :)
Naucz się używać API. Nie musi to być jakieś bardzo skomplikowane API. Wystarczy, żebyś mógł być w stanie odbierać proste dane przy pomocy REST API.
To ciebie nauczy debugowania i rozwiązywania pierwszych bardziej skomplikowanych problemów.
Między innymi asynchroniczności.
Aby lepiej ten koncept zrozumieć byś mógł na początek stworzyć dwa projekty:
- projekt gdzie wykorzystujemy jakieś podstawowe API i czekamy na odpowiedź
- projekt gdzie wykorzystujemy swoje własne API. W tym momencie tworzymy swój własny Frontend jak i Backend.
Naucz się TSa. Ja wiem, zwariowanie co nie? Po co mam się teraz uczyć TSa? Nie mogłeś mi go od razu polecić? TS jest moim zdaniem ciutkę trudniejszy w programowaniu. Dochodzi dodatkowo proces kompilacji kodu i instalowania Node.
Zainstaluj teraz Node.js i NPMa:
Jak nie chcesz jeszcze instalować TSa, to zawsze możesz się nim pobawić na TS: Playground:
Teraz jest kilka dróg rozwoju. Tak jak w Pokemonach pierwszy wybór jest ciężki:
- Pokemon wodny
- Ognisty czy może
- Trawiasty?
Wybór frameworka może być na początku problemem.
Jaki jest najlepszy? To zależy. Każdy ma swoje wady i zalety i swoje własne zastosowania.
Jak się kogoś z fronta spytacie, jaki framework, to w 90% przypadków usłyszycie:
- nauczyć się Reacta, bądź, nauczyć się Reactowego frameworka.
Z nich będą:
Ja poleciłbym na początek NextJSa, ale nie ma w tym przypadku złotej zasady. Znajdą się osoby, co powiedzą, że dla początkujących NextJS będzie zbyt ciężki i że lepiej uczyć się najpierw Reacta.
Ale nawet oficjalna Dokumentacja Reacta mówi, że lepiej od razu uczyć się wybranego Frameworka. Ja podzielam tą opinię.
Takie jak:
Więcej informacji bundlowaniu w NextJS można znaleźć tutaj.
TailwindCSS to takie ułatwienie, które pozwala wam większą kontrolę nad CSSem w projekcie zachować.
No okey. Umiem HTMLa, TSa, wiem jak działa CSS i umiem Tailwinda, umiem też w miarę proste aplikacje w wybranym przeze mnie frameworku pisać. Co dalej?
8. Pisać własne projekty, dzielić się doświadczeniami, udzielać się w open source, pomagać innym w programowaniu.
Znaleźć kilka osób aby stworzyć wspólnie projekt programistyczny. Co ciekawe, moim zdaniem dobre i zdrowe community jest tym co ci najbardziej pomoże Tobie w twojej drodze do znalezienia pracy jako programista.
Nauczyć się Figmy i UI/UX Designu.
Brać inspiracje z:
A darmowe fotki stąd:
Polecam:
Na podstawie Survey z 2022 roku do najpopularniejszych należą:
- create-t3-app
- Prisma
- NextAuth.js
- tRPC
Najlepiej Vercela, to będziecie mogli hostować swoje projekty na Githubie.
Do tego jako bonus można jeszcze nauczyć się:
- Dockera
- Kubernetes
- AWS
- Terraform
- MongoDB
- MySQL
- PostgreSQL
Ja bym dodał do każdego projektu opis i do każdego projektu jeden screenshot aplikacji. Zdjęcie w CV to jest obowiązek. Zróbcie najlepiej do tego zdjęcia wizytę u fotografa.
Ja bym się ograniczył do max 5 dużych projektów, albo 10 małych. Albo zdrowego miksu 1/2 duże projekty i 2/3 małe.
Pamiętajcie. Wasz Github jest ważniejszą reprezentacją waszej osoby jako programisty, niż podanie o pracę, czy tam CV. W CV możecie nazmyślać, na Githubie już będzie to ciężej.
Przede wszystkim być na luzie. Jak wy się będziecie stresować, to prawdopodobnie rekruter też. Kilka razy siedziałem po drugiej stronie stolika i jak kandydat spocony od stresu przychodzi na rozmowę i coś tam duka pod nosem, że umie pisać w TSie patrząc się jednocześnie w stronę stolika, albo szklankę z wodą to w 95% przypadków nie dostanie tej roboty.
Czasem to nie twoje umiejętności techniczne mogą być powodem dostania roboty.
My mieliśmy naprawdę u nas w firmie wielu kandydatów, którzy dużo umieli, ale wiedzieliśmy, że nie odnają się w zespole.
Z drugiej strony mieliśmy kandydatów, którzy przychodzili na rozmowę uśmiechnięci i pełni zapału. Nie umieli wiele, ale byli gotowi się nauczyć tego co potrzeba.
Zmień taktykę. Naucz się Angulara, albo Vue. Albo idź na testera aplikacji.
Sprawdź: analiza-polskiego-rynku-it
Moja analiza z 23 Lipca 2023 roku pokazała, że na ten czas łatwiej jest znaleźć pracę jako Angular/Vue Developer niż React Developer.
Aktualnie na rynku brakuje testerów i testowanie może być dobrym pomysłem, aby wejść w branżę IT.
- Znajomość zasad DRY, KISS, Solid.
- Znajomość Design Systemu i Design Tokenów
- Nauczyć się SCSSa
- Nauczyć się algorytmów i struktury danych
- Nauczyć się Accesibility
- Nauczyć się zasad UI/UX Designu.
- Nauczyć się Google Lighthouse i optymalizowania performance aplikacji
- Nauka podstaw SEO, Analytics
- Umiejętność robienia Code-Review.
- Znajomość Clean Code
- Znajomość prowadzenia projektów (Jira, Scrum, Agile)
- Wysoka umiejętność komunikacji w zespole (pisemnej jak i słownej)
- Nauczyć się architektury, Design Patterns i znać jakie istnieją Design Anti-Patterns.
- Duża znajomość podstaw. Posiadanie pełnego zrozumienia technologii.
- Wysoka kreatywność i umiejętność znajdowanie błędów w aktualnych sposobach programowania
- Umiejętność refactoringu
- Umiejętność rozmowy z klientami i wyceniania projektów programistycznych
- Umiejętność pisania PoCów (Proof Of Concept)
- Znajomość podstaw BDD/TDD