Grafika: https://www.kibrispdr.org/pre-5/gambar-pokemon-charizard.html
„Mateusz, chcę zostać programistą! Tylko… od jakiego języka zacząć? Każdy, kogo pytam, mówi mi co innego”. Często przychodzi do mnie ktoś z tym dylematem. Czy Ty też chcesz rozpocząć swój trening programisty? To odpowiedź na to pytanie jest już w zasięgu rzutu Pokéball’em! Możesz wejść w odpowiedni nastrój, słuchając wykonania piosenki Pokemon od Studia Accantus i… zaczynamy!
Z życia na kodach
Pamiętasz jak Ash Ketchum, główny bohater serii Pokemon zastanawiał się jakiego Pokemona wybrać: Charmander, Squirtle czy Bulbasaur? Taki twardy orzech do zgryzienia miał każdy rozpoczynający przygodę Trenera Pokemon. W końcu, ku zaskoczeniu jego i wszystkich młodych widzów, najwierniejszym kompanem wszystkich jego przygód został, znany wszystkim Pikachu — elektryczna mysz. Jednak Ash po drodze łapał też inne Pokemony, bo Pikachu nie był efektywny do walki z każdym napotkanym przeciwnikiem. Aby spełnić swoje marzenie i zostać Mistrzem Pokemon, młody chłopak, musiał dobierać odpowiednie typy swoich Pokemonów do stworków trenerów, z którymi przyszło mu walczyć.
Język programowania jest jak… Pokemon!
Tak samo Ty, skoro marzysz o byciu programistą… A przecież tak jest? Prawda!? To musisz się zdecydować jaki język programowania wybrać na początek. Pokemony zależnie od typu były mniej lub bardziej efektywne w danych sytuacjach i podobnie jest z technologiami. Jeśli w grach typu Pokemon musisz przepłynąć na oddalone wyspy, na pewno będziesz potrzebować Pokemona typu wodnego, na którym popłyniesz (Pikachu niestety prawdopodobnie nie da rady) — analogicznie wybierając język dla aplikacji mobilnych, nie weźmiesz takiego, w którym programuje się sterowniki do lodówek.
Ogniste Pokemony nie sprawdzają się dobrze przeciw wodnym.
(Kliknij obrazek, aby powiększyć)
Jeśli dopiero co wyruszasz w fascynujący świat tworzenia systemu albo chcesz poszerzyć swoje kompetencje, to opowiem Ci trochę, o zastosowaniach języków programowania, z którymi działałem w mojej karierze zawodowej.
Najlepszym być naprawdę chcę…
…jak nigdy dotąd nikt! Taki wers piosenki z czołówki wspominanego Anime towarzyszył mi w dzieciństwie. Mając ten tekst w pamięci dam Ci teraz zadanie na kolejne akapity tego wpisu: Szukaj czegoś, co Cię fascynuje! Masz już pomysł na jakąś aplikację? Albo chciałbyś umieć zaprogramować coś na wzór kolejnego Facebooka, albo grę komputerową? Przechodząc przez kolejne języki programowania „złap je wszystkie” niekoniecznie będzie dobrą radą.
Wybierz na początek jeden język, z którego zamierzasz być „najlepsza/y jak nigdy dotąd nikt”! Skup się na tym, który pozwoli Ci wykonać wymarzony program. A wtedy przyszła praca programisty i związane z nią benefity (If you know what I mean 💵💵💵) przyjdą same.
Pozwól, iż będę dla Ciebie jak profesor Oak dla trenerów Pokemon. Wprowadzę Cię w ten świat, pokazując przykładowe zastosowania i omawiając szanse na znalezienie zatrudnienia. Wszystko oprę na moich doświadczeniach z pracy zawodowej i prowadzenia mentoringu dla innych programistów.
Angielski
W świecie Pokemon istnieją „Legendarne” stworki, których spotkanie może wywołać niemałe zaskoczenie. Angielski w tym zestawieniu może rodzić podobne emocje. Przecież mieliśmy rozmawiać o programowaniu! I tak właśnie się dzieje… zaczynamy od najważniejszego języka dla programisty.
Nie musisz być koniecznie brytyjskim erudytą, choćby nie musisz się w nim w ogóle odzywać. Jednak pisząc kod, będziesz go z pewnością stosował (no, chyba iż pracujesz w PKP). Łatwiej dogadasz się też z kolegami/koleżankami z zespołu, gdyż „ponglish” w stylu „zmerdżowałem tego pull requesta” jest na porządku dziennym.
Dodatkowo-najlepsze źródła wiedzy z IT są właśnie w tym języku. Konieczne będzie też rozumienie dokumentacji używanych technologi. Niezliczone filmiki z różnych konferencji, z wiedzą światowej sławy ekspertów też czekają aż zapiszesz je w swoim PokeDexie. Nie powtarzaj mojego błędu i nigdy nie kupuj książek z programowania po polsku :)
Reshiram - legendary Pokemon 5. generacji. Opis w PokeDexie, oczywiście po angielsku :)
(Kliknij obrazek, aby powiększyć)
Szkoła jak wiemy z doświadczenia, uczy nas wpisywać brakujące słowa w pola, a nie rozmawiać czy przynajmniej rozumieć. A to rozumienie i czytanie jest tutaj kluczowe. Dla mnie najbardziej pomocny był angielski Metodą Callana. Jeśli jeszcze nie jesteś w stanie zrozumieć filmiku z YouTube po angielsku, to czas zapisać się na kurs. Jednak jeżeli oglądasz seriale po angielsku czy czytasz artykuły z zagranicznych mediów, no to pierwszy krok do programowania masz już za sobą!
Java
To język programowania, który dał mi pierwszą pracę, więc od niego tutaj zacznę. Javę możesz wykorzystać głównie do backendu, czyli części serwerowej aplikacji.
Frontend to ta część, którą widzisz-wierzchołek góry lodowej, backend to cała reszta. Np. wyszukiwarka Google „na froncie”, to ekrany do wpisania szukanej frazy i wyświetlania wyniku — niby nic skomplikowanego. Jednak to na backendzie dzieje się cała “magia” z indeksowaniem stron, bazami danych i proponowaniem Ci odpowiednich wyników.
Zrodlo: x.com/@alvinfoo
(Kliknij obrazek, aby powiększyć)
Do poznania kompletnych podstaw języka dobry jest darmowy kurs JavaStart (robiąc go wybierz IntelliJ IDEA zamiast Eclipse). Mi bardzo pomogła też książka:
- Java. Kompendium programisty
- Java: The Complete Reference — po angielsku (jeśli tylko czujesz się na siłach, to lepiej od razu czytać w języku oryginalnym).
Gdy już zbudujesz solidne fundamenty, to kolejnym krokiem jest np. zapoznanie się ze Spring Boot — narzędziem, które w prosty sposób pozwala tworzyć właśnie wspominany backend. Java ma jeszcze inne ważne zastosowanie — możesz w niej tworzyć aplikacje mobilne na Androida, ale o tym zaraz. Język też od pewnego czasu ciągle się rozwija, przez lata najnowsza była wersja 8 (do 2017), ale kiedy piszę ten artykuł, najnowszą jest wersja 21 i język jest wciąż regularnie ulepszany.
Ze względu na mnogość ofert pracy jest to bardzo dobry wybór. Wystarczy tylko spojrzeć na kategorię Java portalu Just Join IT.
Kotlin
Gdyby nie Kotlin, to już dawno Java odeszłaby dla mnie w zapomnienie. To mój ulubiony język, który stosuje do backendu, jak i aplikacji mobilnych. Zasada jest prosta: w Kotlinie zrobisz wszystko, co w Javie i jeszcze więcej! Większość kojarzy go z Androidem, właśnie dlatego, iż Google wybrało Kotlina jako oficjalny język tworzenia aplikacji na tą platformę (wcześniej była to właśnie Java). Warto znać podstawy Javy, żeby wiedzieć „co się dzieje pod spodem”, gdyż Kotlina można postrzegać jako ewolucję Javy (bazują na tej samej technologi, uruchamiane są dzięki JVM - wirtualnej maszyny Javy).
Kotlin to ewolucja Javy, podobnie jak w Pokemonach.
(Kliknij obrazek, aby powiększyć)
Tworzenie aplikacji mobilnych dało mi wielką motywację do programowania, gdyż w końcu robiłem „coś, co widać”, zamiast wypisywać tylko tekst na ekran. Może z Tobą będzie tak samo?
W takim razie warto przejrzeć platformę Udacity. Znajdziesz na niej wiele darmowych kursów wysokiej jakości (przygotowanych m.in. przez Google) jak np. ten z podstaw Androida w Kotlinie: Developing Android Apps with Kotlin. Jeśli wybierzesz choćby inny język programowania, i tak warto przejrzeć tę platformę e-learningową.
Kiedy poznasz już, jakie są możliwości danego języka programowania, to pomyśl jaką aplikację możesz zrobić dla siebie i po prostu szukaj materiałów, które pomogą Ci ją wykonać. W czasie kiedy uczyłem się Androida, wraz z grupą znajomych, często graliśmy w znaną grę towarzyską — Mafię. Dlatego zabrałem się za robienie aplikacji, która upraszczała jej prowadzenie i połapanie się w coraz bardziej skomplikowanych zasadach. Znajdź cokolwiek, co sprawi Ci frajdę, nie musi to być od razu drugi Instagram.
Pierwsza aplikacja, jaką wykonałem na Androida.
(Kliknij obrazek, aby powiększyć)
W liczbie ofert, kiedy piszą ten artykuł, na Just Join IT wygrywa jednak wciąż Java - 1435 ofert do 461 ofert z Kotlina. Jeśli jednak chcesz być programistą Androida, jest to z pewnością adekwatna droga, ale nie jedyna…
Dart (Flutter)
W takim razie płynnie przechodzimy do Fluttera. Kolejnej technologii od Google. Dzięki temu narzędziu, używając języka Dart, będziesz w stanie pisać aplikacje, które zadziałają jednocześnie na Androidzie i iOS. Możliwe jest też pisanie aplikacji na przeglądarkę internetową i komputery. To bardzo dobry wybór dla firm, które nie mają pieniędzy, na dwa zespoły programistów a chcą mieć aplikacje w AppStore i Google Play. Jednak z punktu widzenia początkującego programisty ciężko o zatrudnienie. Zazwyczaj, jeżeli ktoś już umie pisać aplikacje natywne na Androida lub iOS, dopiero wtedy rozwija się w kierunku Fluttera. Flutter ma też swoje ograniczenia i czasem bywa tak, iż musisz jednak napisać kawałek kodu w Kotlinie (Android) lub Swift (iOS). Wiele dobrych tutoriali znajdziesz na oficjalnej stronie Flutter.dev.
C++
Miałeś C++ albo Pascala w szkole? Niestety Cię rozczaruję… z profesjonalnym programowaniem miało to kilka wspólnego. Na pewno to nie jest argument, żeby w tych językach kontynuować naukę. Miałem ten język tylko w liceum i na studiach więc nie rozpiszę się za wiele. C++ może być dobrym wyborem, np. jeżeli chcesz robić gry komputerowe, używając Unreal Engine. Jednak, żeby zajmować się tym zawodowo, trzeb być naprawdę wyjadaczem. Ofert na Junior C++ Developera prawie nie znajdziesz (raptem 23 na Just Join IT).
Niedawno mentorowałem osobę, która szukała zatrudnienia w C++. Kiedy do mnie przyszła, była już po kilku miesiącach nieudanych prób zatrudnienia. W końcu zaproponowałem jednak zmianę na C#, co okazało się strzałem w 10, jeżeli chodzi o pierwszą pracę.
C# (.NET)
Wspomniany już C# to bardzo dobry język na wejście do branży. Szczególnie jeżeli mowa o backendzie aplikacji webowych, które wykonujemy dzięki frameworka .NET Core. Co prawda, możesz, wykonać też frontend (część wizualną) używając technologi Blazor, ale sam jeszcze nigdy nie widziałem zastosowania tego w realnych aplikacjach na produkcji. Jego wielką zaletą jest spójność wykorzystywanych technologi i podejść. Większość pochodzi od Microsoftu i nie trzeba przeglądać połowy internetu, zanim zdecydujesz się, w jaki sposób zrealizować dane zadanie. Niektórzy robią też w nim aplikacje mobilne dzięki platformy Xamarin, ale już dawno nie znam nikogo, kto by w tym programował.
Bardzo dobrym wprowadzeniem (choć trochę starym) do C#/.NET, jak i ogólnie programowania jest darmowy kurs od Piotra Gankiewicza Becoming a software developer .
Ofert dla programistów .NET jest sporo, prawie tyle, co na Javę. W indeksie najbardziej popularnych języków programowania, który znajdziesz TUTAJ to właśnie C# zaliczył największy wzrost w 2023 roku.
JavaScript (+ HTML/CSS)
Czy chcesz, żeby choćby Twoja mama zrozumiała co robisz w pracy? Wtedy wejście w świat frontendu jest doskonałym wyborem! Będziesz odpowiadać właśnie za to, co widzą użytkownicy aplikacji. Warto mieć zmysł estetyczny i odróżniać więcej kolorów niż czerwony, zielony i niebieski.
Tutaj wybór jest oczywisty — koniecznie musisz opanować JavaScript oraz HTML i CSS (w ramach ciekawostki: te dwa ostatnie nie spełniają definicji “języka programowania”, chociaż w Familiadzie o tym nie wiedzą). HTML opisuje strukturę strony — w jakim miejscu co się znajduje. CSS nadaje temu wygląd, a JavaScript dodaje interaktywność (np. co ma się stać po kliknięciu przycisku).
HTML opisuje strukturę strony — w jakim miejscu co się znajduje. CSS nadaje temu wygląd.
(Kliknij obrazek, aby powiększyć)
Później istnieją też ewolucje tych języków jak TypeScript czy SCSS. Zacząć możesz od darmowych kursów na freeCodeCamp.org.
Kiedy poznasz już podstawy JavaScript, konieczne będzie opanowanie jednego z frameworków, dzięki czemu łatwiej zrobisz większe aplikacje webowe. To konieczności, aby zostać Junior Frontend Developerem. Obecnie najbardziej popularny jest React:
Dobrze też poznać postawu UI/UX Designu i program do projektowania interfejsów jak Figma. Z osobami, które się w tym specjalizują, będziesz musieć współpracować. Jedna mentorowana przeze mnie osoba, choćby odkryła bardziej pociąg do projektowania niż kodowania i została Designerem zamiast Frontend Developerem, z czego bardzo się cieszę. To właśnie daje indywidualny mentoring — możliwość znalezienia tego, co siedzi w Tobie i przekucia w pracę, którą będziesz kochać.
JavaScript ma bardzo szerokie zastosowania. Jak najbardziej możesz też wykonać w nim Backend aplikacji — wtedy zastosujesz Node.js. Aplikacja mobilna? Z wykorzystaniem np. React Native to nic trudnego. Electron - i już mamy aplikację desktopową! Mieć w swoim narzędziowniku JavaScript, to prawie jak Pokemon każdego typu w drużynie. W przeciwieństwie do C# ciężko tutaj o jakieś standardy. Na wszystko znajdziesz multum różnych rozwiązań. Parafrazując słynne powiedzenie w programistycznym światku: “w czasie kiedy czytasz ten artykuł, na pewno wyszedł jakiś nowy framework do JavaScript”.
Skoro jesteśmy w wątku Pokemonów, to pokażę Ci dwie aplikacje programistów po około 2 miesiącach intensywnej nauki z mentorem. Możesz zobaczyć je tutaj: Pokemon Fight i Pokemon Quiz. Wykonali je kursanci CodersCamp — największego kursu programowania webowego w Polsce, na którym odpowiadałem za stronę merytoryczną. Dzięki temu zdasz sobie sprawę, co jest możliwe i czego od siebie oczekiwać na początku. Zastosowane technologie to właśnie oczywiście HTML/CSS i JavaScript. Mentorem tego zespołu był Łukasz Dutka, który na YouTube prowadzi kanał Droga Programisty.
Ofert w JavaScript jest zdecydowanie najwięcej KLIK, ale trzeba się wczytać, żeby dokładnie wiedzieć czy chodzi o backend/frontend, a może oba na raz. Programistów, którzy zajmują się całością aplikacji, określamy Full-Stack Developerem.
Na sam koniec — różnica między Java i JavaScript. To totalnie różne języki programowania.
(Kliknij obrazek, aby powiększyć)
Python
Podobno Słowem Roku 2023 została „sztuczna inteligencja”. Z Pythonem nie miałem wiele wspólnego i nie przepadam za tym językiem. Jeśli chcesz robić aplikacje webowe, to wg. mnie powyżej omawiane są lepszym wyborem. Jednak… jeżeli chcesz realizować Machine Learning czy wejść w świat Artificial Intelligence to Python będzie niezastąpiony.
Czy matematyka w programowaniu jest potrzebna? zwykle moja odpowiedź brzmi: NIE poza kompletnym podstawami. Jednak nie wyobrażam sobie pójścia w AI, jeżeli matematyka nie była Twoją mocną stroną — oczywiście wszystko da się nadrobić :) Co innego to wykorzystanie już gotowych bibliotek (takich jak Tensorflow) czy integracja z ChatemGPT — tutaj większość pracy jest zrobiona dla Ciebie i zrealizujesz to w większości wspomnianych języków.
Ruby
Zostawiłem na koniec ten język. Chociaż tak naprawdę to pierwszy, z jakim miałem styczność i choćby o tym nie wiedziałem! Jak to możliwe? W trakcie tego artykułu przewinęło się kilka screenshotów z gier Pokemon. Jednak to nie żadna z oficjalnych produkcji na konsole Nintendo, ale moja własna gra, od której właśnie zacząłem przygodę z programowaniem. To dlatego pytanie “jak zacząć programować” już zawsze będzie mi się kojarzyć z Pokemonami.
Jako małe dziecko marzyłem, żeby zrobić własną grę Pokemon. Pamiętam jak w podstawówce mój brat grał na GameBoy, a ja rysowałem na kartce, jakie zrobiłbym tam miasta i trenerów. Kiedy byłem już w gimnazjum uznałem, iż przecież właśnie mogę to zrobić! I tak przez różne fora i pisanie z różnymi osobami na Gadu-Gadu (dawne czasy!) wszedłem w świat RPG Maker.
Tak też spotkałem się z Ruby, chociaż mój Pokedex nic o nim nie wiedział. Ukrywał się pod enigmatycznym skrótem RGSS, co oznacza Ruby Game Scripting System. I zacząłem w nim pisać skrypty dedykowane dla RPG Maker XP (program, który w prosty sposób pozwalał tworzyć gry RPG — klucz do niego na Steam można kupić za mniej niż 20 złotych).
Jeśli chcesz żyć z programowania i nie masz za dużo wolnego czasu, to jednak nie polecam takiej “zabawy”. Chyba iż jednak chcesz to robić tylko hobbystycznie albo zainteresować swoje dzieci programowaniem — to może być naprawdę dobry start. Takie zajęcie bardzo rozwija też umiejętności graficzne czy opowiadania historii. Dla inspiracji poniżej dwie mapy ze wspominanej gry.
Screenshot największego miasta w mojej fanowskiej grze Pokemon.
(Kliknij obrazek, aby powiększyć)
Screenshot drogi z Elektrownią w mojej fanowskiej grze Pokemon.
(Kliknij obrazek, aby powiększyć)
Samo Ruby nie jest tylko językiem RPG Makera, ale jego zastosowania są bardzo szerokie. Wiele znanych w Polsce firm takich jak UPacjenta czy JustJoin.it używa tej technologi. Sam poza wspominanym zastosowaniem nie miałem dużo styczności, ale podobno sprawdza się do startupów, gdzie czas wyjścia na rynek jest kluczowy. Jednak ciężko o znalezienie pracy w tej technologii. Jak mówi Andrzej Krzywda, prezes firmy Arkency (specjalizującej się w Ruby): to społeczność, gdzie pracę znajduje się głównie na zasadzie poleceń.
Jak zdecydować?
To co? W końcu padło na Twojego wymarzonego Bulbasaura? Czy może wydaje się, iż jednak niespodziewany Pikachu? Jak widzisz języki programowania, mają często zbliżone zastosowania. Do aplikacji na Androida użyjesz Kotlina albo Fluttera, za to do Backendu wybierzesz Java/Kotlin/C#/JavaScript.
Jak więc dokonać tego wyboru? Backend czy frontend? Wolałbyś się bawić graficznie czy kiedy rozmowa schodzi na kolory, to już wywieszasz białą flagę? Może wolisz siedzieć gdzieś w algorytmach/logice biznesowej i robić bazy danych? A może jednak gry? Widziałaś/eś ostatnio jakąś aplikacje i myślisz: „też chciałabym/chciałbym umieć coś takiego zrobić!”. A może jesteś bardzo dobry z matematyki, algorytmów i chciałbyś to wykorzystać w AI?
Na to musisz sobie odpowiedzieć już sam/sama lub z pomocą mentora!
Ramię w ramię, w wielki bój!
Na początku przygody z programowaniem warto bazować na doświadczeniu kogoś innego, aby nie błądzić i nie marnować cennego czasu. Ja uczyłem się sam, więc z pewnością Ty też dasz radę! Jednak może jakiś Twój znajomy programista będzie w stanie Ci pomóc? Ash też nie podróżował sam przez świat Pokemonów, ale niemal od samego początku towarzyszyli mu Misty i Brock. Nawet złowrogi Zespół R, też nie działał w pojedynkę.
W przeszłości organizowałem wspomniany kurs CodersCamp dla setek początkujących programistów kompletnie za darmo. Nauczyło mnie to przekazywania wiedzy i tłumaczenia skomplikowanych zagadnień. Istnieje szansa, iż znajdziesz kogoś, kto będzie chciał, rozwijać te umiejętności prowadząc Ciebie. Porównując swój rozwój, kiedy byłem praktycznie „samoukiem” (studia kilka uczą z programowania) do osób, które działały z mentorem, widzę wręcz przepaść. Choć oczywiście każdy ma swój preferowany styl nauki i może Ty będziesz lepiej przyswajać, ucząc się w pojedynkę.
Teraz z racji innych obowiązków i przyjemności rodzinnych, takich jak mój mały Synek, organizuję swój czas inaczej i współpracuję z bardzo ograniczoną liczbą osób. Gdybyś jednak był zainteresowany/zainteresowana indywidualnym mentoringiem ze mną… To mogę tylko za czołówką Pokemonów powiedzieć: „Trenuj ze mną, nadszedł czas!” i zaprosić Cię na konsultację TUTAJ. Możesz też przyjść ze znajomym, jeżeli zamierzacie razem uczyć się programowania :) Jest to oczywiście inwestycja, ale najlepsza z możliwych — inwestycja w siebie i umiejętności, których nikt Ci nigdy nie odbierze. Szczególnie iż wejść do branży jest teraz o wiele ciężej, niż jeszcze kilka lat temu — trzeba być naprawdę najlepszym!
W 2023 r. było trudniej o pracę w IT. Liczba ofert spadła o 26% i zwiększyła się konkurencja: łączna liczba aplikacji urosła o 54%. Juniorzy byli najrzadziej poszukiwani na rynku pracy IT — oferty pracy dla tej grupy to zaledwie nieco ponad 5% wszystkich ogłoszeń.
~ Raport Just Join IT
Znajdę w sobie moc
Niezależnie czy wyruszysz w tę podróż samotnie, czy z kimś zasada nauki jest zawsze taka sama:
- Poznaj podstawy języka programowania (po prostu jak w nim pisać, jakich konstrukcji się używa — aby wyrazić to, co chcesz).
- Odpal tutorial z robienia aplikacji od A do Z i rób dokładnie to, co prowadzący. Nie pomijaj żadnej części, ale możesz wprowadzać swoje modyfikacje, sprawdzać co się stanie kiedy coś zmienisz.
- Bazując na wiedzy z punktu 1 i 2 zakoduj aplikację wg. własnego pomysłu (co ja robiłem, możesz znaleźć w treści artykułu) i douczaj się tego, co konieczne, aby zrealizować cel.
Możesz zacząć od najprostszej z możliwych, a potem coraz bardziej zwiększać poziom trudności budując swoje portfolio. Taki zestaw zrealizowanych aplikacji będzie nieoceniony w trakcie poszukiwania pierwszej pracy!
To jak, wiesz już jaką aplikację wykonasz? Pomysłem i swoimi rozterkami, możesz podzielić się w komentarzach poniżej.