Artur Nowakowski

Czy nauka programowania w okresie dorosłości ma sens? Jak zacząć naukę programowania?

Często przewija się w mediach informacja, że na rynku pracy brakuje programistów. Trudno się dziwić dużemu zapotrzebowaniu na ten rodzaj usług, skoro w społeczeństwie informacyjnym nawet za działanie lodówki (i jej komunikację z użytkownikiem) odpowiada program, który jest efektem pracy programistów. Jednocześnie dużo się słyszy o dobrych zarobkach programistów i w rezultacie wiele dorosłych osób zastanawia się nad zmianą zawodu. Pojawiają się pytania: Czy to możliwe i czy nie jest za późno? Jakie cechy powinien mieć dobry programista? Czym dokładnie programista może się zająć? Jakie są dostępne specjalizacje? O odpowiedzi na powyższe pytania poprosiłem pana Artura Nowakowskiego, który uczy dorosłych programowania w ramach projektu Przyszły Programista.

Przyszły programista – to znaczy kto? Czy jest to każdy, kto zaczyna się uczyć programowania? I jakie słyszałeś już o programistach opinie? Jakiś czas temu panował stereotyp, że jest to facet w okularach, zarośnięty samotnik wpatrzony w ekran i klepiący kod. Przydałyby się jeszcze dwa rekwizyty: zimna pizza rozwalona na biurku i kawa w litrowym kubku.

Sądzę, że ten obraz w ludzkich głowach na szczęście się zmienił i cały czas zmienia. Programiści są inteligentni, więc często mają swoje pasje (oprócz programowania) i coraz większą świadomość tego, że aby być wydajni w pracy, muszą umieć odpoczywać. Dawno temu usłyszałem anegdotę: „Dlaczego programiści są najlepsi w sportach ekstremalnych? Bo stać ich na sprzęt i muszą się wyżyć po całym dniu programowania”. Myślę, że odpowiedź jest całkiem prawdziwa. Kiedy rekrutujemy osoby do projektu „Przyszły Programista”, zadajemy im różne pytania (aby lepiej poznać kandydatów i zyskać pewność, że podejmiemy się poprowadzenia ich odpowiednią ścieżką, aby zostali programistami). W odpowiedzi otrzymujemy informacje m.in. o ich pasjach, zainteresowaniach, które bardzo często związane są ze sportem: biegami (maratonami), pływaniem, sztukami walki, grami zespołowymi, jazdą na rowerze, tańcem. I to nas bardzo cieszy, ponieważ po całym dniu pracy programista powinien odpocząć w sposób aktywny, by zachować równowagę.

Jakie cechy powinieneś mieć, aby zostać dobrym programistą? Jeśli zastanawiasz się nad programowaniem, to warto, żebyś wiedział, na czym polega ta praca. W skrócie można powiedzieć, że na myśleniu, podejmowaniu nowych wyzwań, rozwijaniu wiedzy i umiejętności. Jeżeli cieszy Cię rozwiązywanie łamigłówek, a w dzieciństwie lubiłeś się bawić klockami LEGO i zarazem jesteś osobą cierpliwą, wytrwałą, angażującą się w konkretne zadania i zmotywowaną do tego, by nie tylko zacząć się uczyć programowania, ale też faktycznie się go nauczyć i nie odpuścić przy pierwszych trudnościach (które na pewno prędzej czy później się pojawią) – masz podstawy do tego, by na poważnie rozważyć pójście tą ścieżką zawodową.

Bardzo istotne jest również to, czy lubisz się uczyć oraz czy jesteś w tej nauce samodzielny. Pracodawcy mocno zwracają na to uwagę. Gdy zaczynasz pierwszą pracę w zawodzie, powinieneś mieć świadomość, że najbliższe kilka lub kilkanaście miesięcy to znowu będzie głównie nauka. Pracodawcy biorą ten fakt pod uwagę i wolą przyjmować osoby samodzielne, które nie będą co chwilę pytać starszego kolegi programisty, jak rozwiązać dany problem. Musisz się zatem nauczyć samodzielności, różnych sposobów nauki i poszukiwania rozwiązań.

Oprócz tego branża IT dynamicznie się zmienia. Dlatego aby być dobrym programistą, powinieneś stale pogłębiać swoją wiedzę i rozwijać umiejętności. Oprócz wyżej wymienionych cech pracodawcy szukający programistów stawiają na ludzi, którzy potrafią się dobrze komunikować i współpracować. Łatwość w nawiązywaniu kontaktów przydaje się coraz bardziej w zdobywaniu pracy, ponieważ przeważnie programista nie pracuje sam, tylko w zespole – z innymi programistami, grafikami i pozostałymi działami firmy (administracyjnym, marketingowym), a czasem także bezpośrednio z klientem.

Ostatnią rzeczą, jaka przychodzi mi do głowy, jest pokora. Są osoby, które po przerobieniu kursu HTML i CSS na YouTube sądzą, że już wszystko wiedzą i są programistami, a do tego będą od razu zarabiać pieniądze, na które developer z doświadczeniem musi intensywnie zapracować. Pokora jest wtedy bardzo ważna. Można powiedzieć, że programista uczy się przez całe życie, a przynajmniej do emerytury.

Nauka programowania

Uważam, że jednym z najlepszych sposobów na zdobycie solidnego fundamentu, który umożliwi Ci zostanie programistą, jest pójście na dobre informatyczne studia dzienne (nie mówię tutaj o studiach zaocznych, bo w tym trybie, z powodu ograniczeń czasowych, każdy temat jest tylko lekko poruszany, przez co wiedzę trzeba i tak zdobywać samemu). Sam ukończyłem informatykę na Politechnice Rzeszowskiej i jestem zadowolony z lat, które poświęciłem na naukę. Dzięki studiom zdobędziesz podstawy nie tylko z zakresu programowania, ale również matematyki, fizyki, elektroniki, budowy komputera, systemów operacyjnych, grafiki komputerowej, sztucznej inteligencji czy sieci komputerowych.

Opanujesz wiele różnych języków programowania – zaczniesz od C++, by później przejść przez Javę, JavaScript, PHP i wiele innych. Poznasz bazy danych. Uzyskasz wiedzę z zakresu algorytmiki, struktur danych, wzorców projektowych, projektowania i testowania aplikacji. Spotkasz wielu wymagających nauczycieli, którzy przekażą Ci swoją wiedzę. Dlatego jeśli jesteś po liceum lub technikum, polecam Ci rozważenie tej ścieżki.

Jeśli jednak masz pracę i okres studiów jest już za Tobą, to rozumiem, że nie możesz sobie pozwolić na kolejne 3–5 lat inwestycji w siebie, czyli porzucenie obecnej pracy i powrót na uczelnię. W takim wypadku rozważ szkolenie stacjonarne lub online (w zależności od tego, ile masz wolnego czasu, jakie koszty możesz ponieść itd.).

A co z samodzielną nauką programowania? Oczywiście możesz zacząć uczyć się z Internetu – mnóstwo wiedzy znajdziesz w artykułach, na blogach czy w filmach na temat programowania. I do takiej nauki zachęcam wszystkich, którzy chcą mieć o programowaniu pojęcie i wykorzystać tę wiedzę dla siebie – do usprawniania pracy własnej, znajomych lub członków rodziny. Warto programowanie zamienić w hobby. Jeśli jednak chodzi o osoby, które po samodzielnej nauce chcą szukać pracy jako junior developerzy, robi się już trudniej. Temat programowania i zawód programisty są od jakiegoś czasu bardzo popularne. Z każdej strony można usłyszeć, że programistów ciągle brakuje – i jest to prawda (ale w domyśle chodzi o programistów z doświadczeniem). Coraz więcej osób uczy się zatem programowania na własną rękę. O pracę stara się mnóstwo ludzi, którzy uczyli się samodzielnie. Nie mają portfolio, dobrych nawyków, nikt im nie powiedział, na co zwracać uwagę, jakich błędów nie popełniać albo jak się uczyć.

Większość osób, które przysyłają nam zgłoszenia do projektu „Przyszły Programista”, odpowiada, że miała już styczność z programowaniem – na studiach (do projektu przyjmujemy absolwentów kierunków inżynierskich i ścisłych) lub w trakcie samodzielnej nauki. Niektórzy kandydaci próbowali szukać pracy jako programiści, lecz okazało się, że to, co umieją, nie wystarczy, aby tę pracę (a czasem choćby odpowiedź na wysłane zgłoszenie) otrzymali. Dlatego obecnie ważne jest, aby wyróżnić się spośród kandydatów na dane stanowisko. Warto mieć mentora, który będzie wskazywał, czego i z czego się uczyć, w jaki sposób to robić, jak wyszukiwać błędy, pisać kod itd. Później przyjdzie czas na budowę solidnego portfolio, które będziesz mógł przedstawić przyszłemu pracodawcy. Warto też brać udział w dyskusjach na forach programistycznych, pomagając innym w rozwiązywaniu ich problemów, czy w projektach open source. Tym wszystkim będziesz mógł się pochwalić w CV i wyróżnić na tle konkurencji.

Od czego zacząć naukę?

Załóżmy, że chcesz zostać programistą. Jak zapewne wiesz, masz do wyboru różne ścieżki kariery: front-end, back-end albo full-stack developer.

  • Ogólnie rzecz ujmując, można powiedzieć, że front-end developer zajmuje się tym, co widać. Da się to w miarę szybko wprowadzić i zobaczyć – przykładowo na stronie internetowej. Na „froncie” zajmować się można układaniem elementów strony, jej wyglądem, animacjami, strukturą informacji, optymalizacją pod przeglądarki i wyszukiwarki. Co powinien umieć początkujący front-end developer? Z pewnością powinien dobrze opanować HTML, CSS, Java Script, do tego jakiś framework. Dobrze by było, aby przyswoił także podstawy języka typowo back-endowego, np. PHP.
  • Back-end developer zajmuje się logiką i architekturą aplikacji, algorytmami, komunikacją z bazą danych, przechowywaniem danych, obsługą wyjątków czy infrastrukturą serwera. Są to rzeczy wymagające pracy, której efekty nie będą od razu widoczne. W przypadku back-endu przydają się – jeszcze bardziej niż we front-endzie – zdolności matematyczne i analityczne oraz abstrakcyjne myślenie. Języków back-endowych jest naprawdę dużo. Każdy programista pracujący w danym języku proponuje jakiś inny. Ja polecam rozpoczęcie nauki od C++. Od niego również zaczyna się na studiach informatycznych. To jeden z najważniejszych języków programowania w informatyce, a twórcy nowszych języków, takich jak Java, JavaScript, C#, PHP, czerpali z niego pełnymi garściami. Po dobrym poznaniu C++ będzie Ci więc dużo łatwiej przestawić się na inny język. Co istotne, znajomość C++ jest znacznie lepiej postrzegana przez pracodawców niż znajomość wyłącznie PHP lub JavaScript. Dzięki temu znacznie zwiększą się Twoje szanse na otrzymanie pracy.

Przeglądając programistyczne fora internetowe, trafiłem na wypowiedź, która dobrze obrazuje, jak to jest z nauką tylko jednego języka: „Wbrew pozorom specjalizacja wcale nie jest aż tak pożądana w informatyce. Potrzeba osób wszechstronnych. Logiki może nie będziesz musiał pisać cały czas, ale warto, żebyś to umiał. Bo inaczej będziesz zawsze juniorem, któremu trzeba pokazywać, jak się coś robi, albo robić za niego trudniejsze kawałki kodu” (wypowiedź z forum 4programmers). Jest to ważne także dlatego, że – jako osobie niezwiązanej wcześniej z programowaniem i niemającej praktycznej, doświadczalnej wiedzy na temat tego, jak programowanie wygląda – raczej trudno będzie Ci zdecydować, czy chcesz zostać front-endowcem, czy też back-endowcem.

  • Full-stack developer to ktoś, kto łączy wiedzę z zakresu back-endu, front-endu, administracji i baz danych. Taka osoba jest bardzo cenna i najczęściej poszukiwana, szczególnie w mniejszych firmach i start-upach, gdyż nie mogą sobie one pozwolić na zatrudnianie kilku programistów, którzy będą się zajmować oddzielnymi zadaniami. Specjalizacje przeważnie poszukiwane są w korporacjach, a nie wszystkim praca w korporacji odpowiada. Szczególnie pasjonaci mogą mieć z nią problem, ponieważ są tam jednym z trybików i zanim ich kod, nad którym długo pracowali, zostanie wdrożony, może minąć kilka czy kilkanaście miesięcy. Dlatego dobrze jest mieć umysł stale otwarty na naukę nowych rzeczy. Tym bardziej że kilka lat temu popularne były inne języki programowania, a obecnie prym wiodą inne.

Moim zdaniem zaszufladkowanie się już na samym początku programistycznej ścieżki nie jest najlepszym pomysłem. Uważam, że osoba, która myśli poważnie o zostaniu programistą i chce skutecznie konkurować z innymi o pierwszą pracę, powinna zdobyć solidne podstawy – nie tylko w zakresie jednego języka programowania. Jak już wspomniałem, polecam rozpoczęcie nauki od języka C++ strukturalnego i obiektowego. Bardzo ważne jest dobre opanowanie algorytmiki (umiejętności tworzenia algorytmów), poznanie HTML, CSS, JavaScript i baz danych MySQL. Trzeba także zaznajomić się, przynajmniej w stopniu podstawowym, z Javą. Jej znajomość jest kluczowa, abyś mógł dalej się rozwijać, gdyż większość przykładów zawartych w książkach o programowaniu napisano właśnie przy użyciu tego języka. Do tego dochodzą jeszcze: poznanie narzędzia do pracy zespołowej, czyli GIT oraz nauka pisania „czystego kodu”. Warto również poznać wzorce projektowe.

Fundament jest najważniejszy, ponieważ dzięki niemu łatwiej i sprawniej dopasujesz się do największego zapotrzebowania pracodawców w Twojej miejscowości w danym czasie – a to znacznie podniesie Twoje szanse na otrzymanie pracy. Musisz mieć świadomość, że w pierwszej pracy przez kilka czy kilkanaście miesięcy będziesz się znowu intensywnie uczył, tym razem tego, czego konkretnie będzie wymagało Twoje stanowisko. Dlatego jeśli zyskasz solidne podstawy, umiejętności i wiedzę, jak w szybki i skuteczny sposób uczyć się nowych języków, frameworków i innych rzeczy, możesz liczyć na szybszy awans.

Czy jesteś więc przyszłym programistą?

Podsumowując: sądzę, że możesz się nazwać przyszłym programistą, jeżeli masz silną motywację do realizacji tego planu. Jeżeli jesteś zdeterminowany i zaangażowany w naukę programowania, otwarty na nowe wyzwania i rozwijanie umiejętności przez całe życie, a jednocześnie cierpliwy i wytrwały. Z całego serca Ci tego życzę i mam nadzieję, że jeśli spotkamy się za kilka lat, będziesz mógł powiedzieć: „Jestem dobrym programistą”.

W jednym artykule trudno zmieścić wszystkie ważne informacje na temat rozpoczęcia nauki programowania, dlatego jeśli chciałbyś go zgłębić, zachęcam Cię do lektury artykułów na blogu strony projektu: przyszlyprogramista.pl/blog. Życzę Ci powodzenia w nauce programowania, bo warto się uczyć.

Strona projektu, o którym mowa w artykule dostępna jest pod adresem: przyszlyprogramista.pl.

Artur NowakowskiAutor
Artur Nowakowski jest programistą, przedsiębiorcą oraz filozofem. Ukończył informatykę na Politechnice Rzeszowskiej, studia MBA na ASBIRO oraz filozofię i teologię na Dominikańskim Studium Filozofii i Teologii. Założyciel Projektu PrzyszlyProgramista.pl oraz sklepu UlgaDlaKregoslupa.pl