Programowanie - jak zacząć naukę?
Do zostania programistą prowadzi wiele dróg. Wśród możliwych metod najbardziej popularną jest wykształcenie akademickie. Studia inżynierskie lub magisterskie dają bardzo szeroką wiedzę i solidne fundamenty pod wiele zawodów w branży IT, w tym pod karierę programisty. Jeżeli jednak zdecydowałeś się na naukę programowania, niekoniecznie jest to dla Ciebie najbardziej efektywna droga.
Na studiach, oprócz wartościowego wsparcia prowadzących oraz bogatego zaplecza merytorycznego, student jest zmuszony do nauki wielu przedmiotów, które nie są programiście niezbędne, takich jak np. zaawansowana matematyka. Dodatkowo program obejmuje wiele tematów, które przez pierwsze lata kariery są zupełnie niepotrzebne np. zaawansowane tematy związane z bezpieczeństwem lub architekturą systemów. Zasadniczym zadaniem studiów jest przygotowanie solidnych fundamentów i otwarcie wielu możliwych ścieżek rozwoju.
Alternatywnym sposobem na osiągnięcie umiejętności programowania jest odbycie intensywnego kursu zawodowego. Takie kursy trwają ok. 2-3 miesiące i mają za zadanie przygotwać nas do rozpoczęcia stażu/pracy na stanowisku początkującego programisty.
Trzecią opcją, optymalną zwłaszcza dla osób niemogących wygospodarować długiego, nieprzerwanego czasu na naukę, lub preferujących pracę indywidualną we własnym tempie, jest samodzielna nauka. W tym artykule postaram się opisać kilka możliwych ścieżek rozwoju, tak aby zainteresowany czytelnik mógł dokonać wstępnej oceny czego się uczyć i wiedział pod kątem jakich haseł przeszukiwać internet. Obecnie dostępnych jest bardzo wiele darmowych materiałów, takich jak np. Code Academy które, wprowadzają zainteresowanych w świat programowania krok po kroku, wybaczając brak umiejętności.
Poniżej wymieniłem 4 zawody, do których można się samodzielnie przygotować i na które jest realny popyt na rynku pracy. Każdy z nich wyróżnia się na tle pozostałych i pasuje do różnych ludzi, o różnych preferencjach i w różnych sytuacjach życiowych.
Oprócz charakterystyki, do każdej ze ścieżek przypisałem 3 parametry:
- Time to market - oszacowanie, jak długo zajmie nabycie umiejętności, które można wykorzystać w pracy jako junior (w przypadku SQL można go w wielu zawodach wykorzystać jako uzupełnienie umiejętności). Aby zacząć przygodę na juniorskim stanowisku, w założeniu potrzeba ok. 20 h efektywnej nauki w tygodniu.
- Trudność - subiektywna ocena, jak dużo merytorycznie skomplikowanych zagadnień trzeba zrozumieć w zawodzie.
- Perspektywy rozwoju - długość ścieżki kariery, sytuacja oraz prognoza przyszłego położenia na rynku pracy.
1. Front-end Developer
Warstwa front-endowa aplikacji to w uproszczeniu "twarz" systemu - ta część, którą widzi użytkownik. Programista front-endu może zajmować się bardzo szerokim wachlarzem czynności - od zadań bliższych grafice, do kompleksowego programowania całego front-endu - zarówno jego logiki, jak i wyglądu.
Technologie, które musi poznać każdy programista front-endu to HTML, CSS oraz Javascript - jednak są to tylko fundamenty, obecnie coraz częściej wymagana jest znajomość któregoś z javascriptowych frameworków front-endowych takich jak Angular lub React. Znajomość tego typu technologii może dramatycznie zwiększyć zarobki z ponadprzeciętnych do bardzo wysokich. Ta ścieżka zdecydowanie polecana jest osobom z zacięciem artystycznym lub po prostu lubiącym tworzyć coś rzeczywistego, bo efekty pracy front-endowca (podobnie jak programisty mobilnego) są chyba najbardziej namacalne.
Time to market: ~3 miesiące
Perspektywy rozwoju: 4/5
Trudność: (webmasterka 2/5, nowoczesne frameworki JavaScript 4/5)
2. Back-end Developer - Java/.NET
Back-end aplikacji webowej to część serwerowa, w której znajduje się obsługa całej logiki aplikacji oraz komunikacji z bazą danych. W uproszczeniu - "mózg" systemu. Programista back-endu zajmuje się przekładaniem wymagań biznesowych na kod, przewidywaniem najróżniejszych wariantów zachowań systemu oraz integracją z innymi systemami. Na późniejszych etapach kariery zakres działań poszerza się o projektowanie architektury samych rozwiązań, a z czasem całego systemu.
Java i .NET to największe rodziny technologii używane do tworzenia back-endu aplikacji webowych. Ze względu na duży popyt, jest relatywnie dużo pozycji juniorskich dostępnych dla początkujących programistów. Negatywną stroną tej ścieżki jest chyba konieczność posiadania największego (w porównaniu do innych ścieżek) zakresu wiedzy potrzebnego, by być efektywnym członkiem zespołu.
Time to market: ~4 miesiące
Perspektywy rozwoju: 5/5
Trudność: 5/5
3. Mobile Developer - Android/iOS
Programista aplikacji mobilnych tworzy aplikacje uruchamiane na telefonach/tabletach z systemem Android. Ze względu na to, że takie aplikacje potrafią być dużo mniejsze niż duże aplikacje przeglądarkowe, ten typ pracy sprzyja indywidualistom. Nnierzadko aplikacje są tworzone tylko przez jednego programistę. Programiści mobilni łatwo też mogą sprzedać swoje aplikacje w sklepach mobile - dzięki czemu moją opcję relatywnie łatwo uniezależnić się od pracodawcy/korporacji, jeśli taki jest ich kaprys i pozwalają im na to umiejętności.
Time to market: ~3 miesiące
Perspektywy rozwoju: 4/5
Trudność: 3/5
4. Programista SQL
SQL jest językiem używanym w relacyjnych bazach danych. Z wyżej wymienionych profili jest najkrótszy i najłatwiejszy do nauki, jednak ma to też swoje słabe strony. Praca ta w mojej subiektywnej ocenie jest mniej ciekawa niż programowanie aplikacji. Relacyjne bazy danych są technologią, która utrzymuje się na rynku już długo, a ich ekosystem od dawna nie rośnie dynamicznie. Technologia ta jest bardzo przydatna jako uzupełnienie wiedzy z innej specjalności - finansów, statystyki, czy analizy danych.
Time to market: ~1 miesiąc
Perspektywy rozwoju: 2/5
Trudność: 1/5
Podsumowanie
Mam nadzieję, że ten opis przybliżył podobieństwa i różnice pomiędzy alternatywnymi ścieżkami nauki. Wbrew powszechnej opinii - programista to nie jest zawód zarezerwowany dla zamkniętej kasty wybitnych matematyków i wymagający lat wyrzeczeń. Obecny niedobór programistów na rynku pracy i perspektywy wzrostu zapotrzebowania na przedstawicieli tego zawodu sprawiają, że zatrudniani są ludzie, których pracodawca dopiero planuje przyuczyć do pracy. Jeżeli znajdujesz się w sytuacji, w której rozważasz przekwalifikowanie - warto ten moment wykorzystać.