Programowanie - jak zacząć naukę?

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 13.0px Helvetica; -webkit-text-stroke: #000000} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 13.0px Helvetica; -webkit-text-stroke: #000000; min-height: 16.0px} p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Times; -webkit-text-stroke: #000000; min-height: 14.0px} span.s1 {font-kerning: none} span.s2 {text-decoration: underline ; font-kerning: none; color: #042eee; -webkit-text-stroke: 0px #042eee} span.Apple-tab-span {white-space:pre}

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.

Niemniej jednak, studia  nie są jedyną drogą do zdobycia zawodu. Według StackOverflow, jednego z najpopularniejszych serwisów programistycznych, raptem 35% użytkowników portalu ma wykształcenie kierunkowe! 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 Acaedmy które, wprowadzają zainteresowanych w świat programowania krok po kroku, wybaczając brak umiejętności.

Poniżej wymienię 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. 

 

Jest to moja subiektywna ocena, bardzo stronnicza - sam piszę backend w javie i zapewne wpływa to istotnie na moją percepcję. Jeśli rozważacie samodzielną naukę - mam nadzieję, że ten opis da Wam jakiś ogląd i punkt wyjścia do poczytania więcej o temacie.

 

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-end'owa aplikacji to w uproszczeniu "twarz" systemu - ta część, którą widzi użytkownik. Programista front-end'u może zajmować się bardzo szerokim wachlarzem czynności - od zadań bliższych grafice, do kompleksowego programowania całego front-end'u - zarówno jego logiki, jak i wyglądu.

Technologie, które musi poznać każdy programista front-end'u to HTML, CSS oraz Javascript - jednak są to tylko fundamenty, obecnie coraz częściej wymagana jest znajomość któregoś z javascript'owych framework'ów front-end'owych takich jak AngularJS 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-end'owca (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-end'u 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ęcy

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, nierzadko aplikacje są tworzone tylko przez  jednego programistę. Programiści mobilni łatwo też mogą sprzedać swoje aplikacje w sklepie google play / app store - 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

 

Mam nadzieję, że ten opis przybliżył zainteresowanym 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ć.