fbpx
Jak wybrać język programowania
8 kroków

Krok 1 – Wybór technologii i języka programowania

Podróż powinno zacząć się od decyzji, dokąd chcemy dotrzeć. Jeśli wyruszymy tam, gdzie nas oczy poniosą, wsiądziemy w pierwszy pociąg, który akurat przyjechał na stację, albo pójdziemy śladami spotkanego po drodze towarzysza… w końcu gdzieś dotrzemy, ale niekoniecznie będzie to miejsce, w które chcieliśmy trafić.

Podobnie będzie, gdy zaczniemy naukę programowania nie posiadając określonego celu. Łatwo w takiej sytuacji wpaść w pułapkę rozpoczynania dziesiątek kursów i nie kończenia żadnego z nich, lub częstych zmian decyzji odnośnie tego, w czym chcemy się specjalizować. Internet pełen jest sprzecznych porad, a każdy ze znajomych programistów może polecić nam coś innego. Nie ma w tym nic dziwnego – większość osób poleci nam to, co im samym sprawdziłoby się najlepiej. Nie oznacza to jednak, że będzie to najlepsze dla nas.

Decyzji o wyborze technologii języka programowania nie możemy też odłożyć w czasie, ani od niej uciec, ucząc się po trochę wszystkiego, ponieważ nie istnieje coś takiego, jak uniwersalny programista. Owszem, osoby bardzo doświadczone, które pracowały w różnych firmach, przy różnego typu projektach mogą posiadać szeroki zakres wiedzy obejmujący kilka obszarów programowania, jednak jeśli dopiero zaczynamy, próba złapania kilku srok za ogon jest bardzo złym pomysłem.

Zdecydowanie lepiej skupić się na jednej dziedzinie i w niej osiągnąć poziom pozwalający na rozpoczęcie pracy.

A zatem musimy zdecydować, który obszar programowania najbardziej nam odpowiada

  • Front-end – tworzenie warstwy aplikacji najbliższej użtykownikowi. Projektowanie okien programów i stron internetowych, programowanie interakcji na nich (np. przycisków czy rozwijanych menu). Dbanie o to, aby całość wyglądała estetycznie i działała intuicyjnie. Główne języki: HTML, CSS, JavaScript. Główne technologie: React, Angular.
  • Back-end – tworzenie warstwy aplikacji, której użytkownik nie widzi. Programowanie logiki działania danego systemu, jego interakcji z bazami danych, rozwiązywanie problemów związanych z wydajnością działania aplikacji. Główne języki: Java, C#, C++, C, Python, PHP i inne.
  • Full-stack – połączenie dwóch powyższych. Tworzenie całości aplikacji: wewnętrznej logiki, połączenia z bazami danych oraz zewnętrznej warstwy, w którą komunikuje się użytkownik. Główne języki: wymienione w obu punktach powyżej.
  • Data science – przetwarzanie i analiza danych. Tworzenie ich wizualizacji, przewidywanie trendów na przyszłość. Główne języki: Python (biblioteki Numpy, Pandas, Matplotlib), R. Główne technologie: Hadoop, Spark.
  • Programowanie aplikacji mobilnych – podobnie jak full-stack, ale tworzenie oprogramowania na urządzenia mobilne (telefony, tablety), a nie na komputery. Główne języki: Kotlin, C#, Swift. Znajomość platform, na które się programuje: Android i iOS.
  • Bazy danych – tworzenie i zarządzanie bazami danych. Główny język: SQL. Znajomość baz danych: MySQL, PostgresSQL, Microsoft SQL Server i innych.
  • DevOps – usprawnianie procesu tworzenia, testowania, budowania i uruchamiania oprogramowania tworzonego przez innych programistów. Główne technologie: Linux, Bash, PowerShell, Python i wiele innych.

Jak odnaleźć się w tym gąszczu możliwości? Jak zdecydować, co jest najlepsze dla nas?

Przede wszystkim warto poświęcić kilka wieczorów na poczytanie i zapoznanie się z charakterystyką różnych języków programowania.

Po krótce omówię tu trzy najpopularniejsze wśród początkujących programistów języki:

Python

Python to język bardzo popularny i uważany za łatwy do nauki (choć osobiście uważam, że tyczy to tylko poziomu podstawowego). Stosuje się go w back-endzie, często we współpracy z frameworkiem Django, który pozwala budować zaawansowane serwisy internetowe. Drugim częstym zastosowaniem Pythona jest data science ponieważ stworzono do niego bardzo popularne biblioteki: NumPy, Pandas, Matplotlib. Python znany jest z ogromnej ilości biblitek, dzięki któremu jest językiem bardzo uniwersalnym. Python jest językiem dynamicznie typowanym i daje programiście wiele swobody (co niesie też ze sobą ryzyko łatwiejszego popełniania błędów).

Tu możesz poczytać więcej na temat cech charakterystycznych Pythona:

JavaScript

JavaScript to również bardzo popularny język, stosowany głównie we front-endzie, do tworzenia skryptów działających na stronach internetowych. W JavaScripcie napisane są dwa bardzo popularne frameworki Webowe: React i Angular. Podobnie jak Python, JavaScript jest językiem dynamicznie typowanym.

Tu możesz poczytać więcej na temat cech charakterystycznych JavaScripta:

Java

Java to najpopularniejszy na świecie język programowania używany głównie do zastosowań biznesowych. Uważany jest za trudniejszy do nauki niż Python lub JavaScript. Najpopularniejszym frameworkiem do tworzenia aplikacji w Javie jest Spring, a do współpracy z bazami danych Hibernate. Java jest językiem statycznie typowanym, czyli tworzenie kodu jest znacznie bardziej sformalizowane niż w Pythonie czy JavaScripcie. Statyczne typowanie bardzo jednak przydaje się w dużych projektach, a głównie takie buduje się w Javie.

Tu możesz poczytać więcej na temat cech charakterystycznych Javy:

Warto przyjrzeć się też składni, czyli po prostu sposobowi zapisu języka, w jakim chcemy pracować. Być może okaże się, że z jednymi językami jest nam bardziej “po drodze” niż z innymi. Poniżej przykład jak wygląda Hello World, zapisany w trzech róznych językach.

Python:
print("Hello World!)
JavaScript:
console.log("Hello World")
Java:
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Prints the string to the console.
    }
}

Decydując się na technologię i język programowania, warto odpowiedzieć sobie też na kilka pytań.

Jak wyobrażamy sobie swoją wymarzoną pracę jako programisty?

  • Jeśli wyobrażamy sobie siebie tworzących piękne, estetyczne, przyjemne w użyciu i intuicyjne interfejsy lub jeśli satysfakcję sprawia nam myśl, że dzięki naszym usprawnieniom tysiące użytkowników jakiegoś serwisu będą mogły z niego korzystać w przyjemniejszy i bardziej intuicyjny sposób – to znak, że bardziej ciągnie nas w kierunku front-endu.
  • Jeśli kręci nas optymalizacja, pisanie wydajnego kodu i algorytmy, jeśli nie interesuje nas warstwa wizualna, ale ukryta pod nią logika i to, jak aplikacje działają pod spodem – to znaczy, że prawdopodobnie bardziej nadajemy się na programistę back-end.
  • A jeśli naszym ulubionym programem jest Excel, lubimy statystykę, proceny, wykresy i analizujemy wszystkie dane, jakie tylko wpadną nam w ręce – to znaczy, że będziemy szczęśliwi pracując w dziedzinie data-science.

Jak wyobrażamy sobie idealne miejsce pracy?

  • Jeśli marzy nam się praca w międzynarodowej korporacji, w której odbywamy codziennie kilka spotkań z ludźmi z różnych stron świata i zajmujemy się budowaniem wielkich, złożonych serwisów – to powinniśmy szukać pracy jako programista Javy lub C#, które są językami najpopularniejszymi w wielkim biznesie.
  • Jeśli natomiast wolelibyśmy przychodzić do biura w t-shirtach ze śmiesznymi napisami, a nogi w klapkach trzymać na biuru podczas programowania – to prawdopodobnie lepszym wyborem będzie dla nas JavaScript lub Python i praca w startupie.

Warto jednak wiedzieć, że świat programistyczny nie jest taki prosty i zdarzają się w nim startupy, w których programuje się w Javie, oraz średnie i duże (oraz bardzo poważne) firmy, w których używa się Pythona.

Kilka innych czynników, które warto również wziąć pod uwagę.

Dostępność metod nauki

Wybierając język warto mieć świadomość, że niektórych z nich jest się znacznie łatwiej nauczyć, niż innych.

Praktycznie każda szkoła programowania oferuje bootcamp z Pythona i Javy, a ilość kursów online dotyczących tych języków liczona jest zapewne w tysiącach. Gdybyśmy jednak zapragnęli nauczyć się C, to o bootcampach możemy raczej zapomnieć i będziemy musieli raczej posiłować się podręcznikami i nieco mniej licznymi kursami online.

Dostępność ofert pracy

Przed podjęciem decyzji warto przeszukać serwisy z ofertami pracy i przefiltrować wyniki tak, aby wyświetliły tylko oferty z naszej okolicy. Dzięki temu dowiemy się w jakim języku i technologii będziemy mieli największy wybór pracodawców, a jakich lepiej unikać, jeśli nie bierzemy pod uwagę zmiany miejsca zamieszkania.

Serwisy, do jakich warto zajrzeć, to Pracuj, Bulldogjob, JustJoinIT. Ten ostatni wyposażony jest nawet w mapę!

Popularność danego języka

Niektóre języki tracą na popularności, inne zyskują. Są takie, które powoli odchodzą do programistycznego lamusa (np. Fortran), a inne cały czas zyskują na popularności. Jeśli planujemy swoją karierę zawodową długofalowo, to warto przeanalizować, czy wybrana przez nas technolgia nie stanie się za kilka lat niepopularna.

W tym celu można użyć narzędzia Google Trends, które pozwala przeanalizować popularność danej frazy wyszukiwania w czasie. Jest to dobry miernik tego, jak często internauci wyszukiwali informacje o danym języku, a co za tym idzie, również jego popularności.

Poniżej wyniki dla Javy i Pythona w okresie od 2004 do lipca 2020.

Java:
Python:

Drugim, niezwykle rozbudowanym kompedium bardzo aktualnej wiedzy na temat trendów w świecie programowania są publikowane co roku wyniki ankiety prowadzonej wśród użytkowników serwisu Stack Overflow (najpopularniejszego na świecie serwisu gdzie programiści zadają pytania i odpowiadają na nie).

Wyniki ankiety z 2020 roku dostępne są tutaj.

Podsumowanie

  • Decyzja jaką musimy podjąć jest wielowymiarowa. Musimy wybrać zarówno obszar programowania (front-end, back-end lub inne), jak i język, którego w obrębie tego obszaru chcemy używać.
  • Musimy odpowiedzieć sobie też na pytanie jaki styl programowania nam odpowiada i w jakiego typu firmie chcemy pracować.
  • Powinniśmy również przeanalizować uwarunkowania rynkowe: dostępność preferowanych przez nas metod nauki, dostęność ofert pracy i prognozy dotyczące popularności danej technologii w dłuższej perspektywie czasu.

Przy podejmowaniu decyzji warto unikać kopiowania wyborów innych. To, że nasz kolega wybiera się na bootcamp z front-endu nie oznacza, że dla nas będzie to najlepszy wybór. Jeśli po paru miesiącach takiego bootcampu uzmysłowimy sobie, że front-end nas nie interesuje, to poza czasem i pieniędzmi możemy też stracić zapał do nauki i szansę na to, że uda nam się zdobyć wymarzoną pracę.

Uważam również, że nie warto podejmować decyzji na podstawie rankingów tego, w której technologii są aktualnie najwyższe zarobki. Znacznie więcej zyskamy (również finansowo) jeśli będziemy uczyć się i później pracować w dziedzinie, która nas naprawdę interesuje i dzięki temu staniemy się w niej ekspertami.

Istnieje jedno narzędzie, którego warto nauczyć się niezależnie od tego, jaką planujemy specjalizację. Jest nim Git – czyli najpopularniejszy system kontroli wersji. W Internecie znajdziemy ogromną ilość materiałów szkoleniowych związanych z gitem. Można też skorzystać z oficjalnego podręcznika, który napisany jest przystępnie i dostępny po polsku i angielsku.

A skoro jesteśmy przy angielskim…

Aby zostać programistami musimy znać język angielski przynajmniej na poziomie pozwalającym na czytanie dokumentacji (i Stack Overflow). Wbrew pozorom, techniczny angielski jest stosunkowo prosty i kiedy już opanujemy nowe dla nas pojęcia związane z programowaniem, to rozumienie czytanego tekstu nie powinno stanowić problemów. Minimalny wymagany poziom angielskiego potrzebny do nauki programowania to B2.

Na skróty

A jeśli czujemy, że po przeanalizowaniu wszystkich powyższych punktów wybór nadal nas przerasta, to możemy sięgnąć po inspirację z zewnątrz.

W tym teście online w kilku kliknięciach uzyskamy sugestię jaki język programowania pasuje najbardziej do udzielonych przez nas odpowiedzi.

Dobrą stroną tego testu jest również fakt, że zmusza nas on do przemyślenia naszych motywacji, priorytetów i tego, co w programowaniu interesuje nas najbardziej.

A na koniec polecam serdecznie przejrzenie tego, stworzonego z przymrużeniem oka, ale w gruncie rzeczy bardzo prawdziwego testu pomagającego wybrać język programowania, jakiego powinniśmy się uczyć.

(Nie przegapcie też porównania języków programowania do postaci z Władcy Pierścieni!)

Otwórz obrazek w nowej karcie, aby powiększyć.

Grafika pochodzi z serwisu carlcheo[kropka]com . Nie podaję tu działającego linka, ponieważ strona ta nie jest zabezpieczona protokołem HTTPS i może stanowić zagrożenie dla odwiedzających.

Jest to artykuł z serii “8 kroków by zostać programistą“. Poniżej znajdują się odnośniki do pozostałych artykułów z serii:

(Artykuły zaznaczone na szaro nie zostały jeszcze opublikowane.)

Jeśli nie chcesz ich przegapić – zapisz się na mój newsletter i o każdym nowym artykule poinformuję Cię mailowo.

Jeśli uważasz ten wpis za przydatny – będzie super, jeśli udostępnisz go swoim znajomym.

komentarzy 10

  • Marcin

    Przyznaje że bardzo ciekawie napisany artykuł.
    Miło również że skłonił mnie do otwarcia karty zakładek w przeglądarce by dodać paru nieznanych mi wcześniej linków “TO DO LATER” 🙂

    I’m watching you ^^

  • Julia

    Bardzo ciekawy i na pewno przydatny artykuł – rzadko kiedy widać takie przekrojowe podejście do tematu, większość artykułów które widziałam skupiały się wycinkowo na jednym aspekcie.

    A skąd wziąć dane na temat zarobków w danej technologii? Masz może jakieś linki na ten temat? Nie da się ukryć że to też ważny argument przy wyborze ścieżki kariery.

    • Marta

      Cześć Julia! Dzięki, starałam się, żeby ten artykuł był wyczerpujący, a nie traktował tematu “po łebkach”. Jeśli chodzi o zarobki to faktycznie bardzo ważny temat i dzięki za sugestię. Postaram się dziś lub jutro dorzucić informację na ten temat.

  • Eryk

    Cześć, spoko tekst ale informacje o programowaniu aplikacji mobilnych do zmiany, niestety wprowadzą początkujących w błąd z powodu nieaktualnych technologii. Aktualnie Kotlin dla Androida i Swift dla IOS, czasami ktoś szuka Flutter developera więc to też jakaś opcja.

    • Marta

      Hej Eryk. Dzięki za zwrócenie uwagi! Kotlin jest na tyle blisko Javy, że mi się w głowie zmergowały w jedną kategorię pod etykietką “Java”. Już wprowadzam poprawki! I cieszę się, że pomimo tego artykuł Ci się spodobał 🙂

  • Paweł

    Porządny, kompleksowy artykuł.
    Fajnie, że wspomniałaś o żywotności i trendach w popularności języków, bo to bardzo ważne w kontekście pierwszych kilku lat pracy.
    Dodałbym, że w średnich i mniejszych miejscowościach, gdzie pracy jest mniej, warto zrobić rekonesans i sprawdzić, w jakich językach pracują lokalne firmy.
    No i zabrakło mi tu trochę tematu gier — ja wiem, że to jest trochę na marginesie spraw, o których piszesz (bo niższe zarobki i mało ludzi pochodzących z przebranżowienia), ale po pierwsze pracy w grach jest w Polsce sporo, a po drugie niektórzy właśnie przez gry wchodzą w świat programowania. Tutaj w kwestii wyboru języka sprawa jest dość prosta: najwięcej gier ze średniej i wysokiej półki tworzy się w Unity (C#), te z najwyższej zwykle powstają w C++ (Unreal Engine i nie tylko), ale istnieją też bardzo dobre silniki gier jak Godot czy Photon, gdzie można poprogramować w Pythonie czy JavaScripcie.

    • Marta

      Dzięki Paweł 🙂 Faktycznie pominęłam gamedev wychodząc z (raczej błędnego) założenia, że to zbyt niszowa specjalizacja, aby proponować ją osobom początkującym. Skłoniłeś mnie jednak do doczytania na ten temat i zaktualizuję artykuł!

  • Piotrek

    Witam!
    Artykuły czyta się świetnie. Na początek drogi z programowaniem wybrałem pythona i po podstawch pojawia się “ściana” w postaci matematyki. Jako że edukację zakończyłem ładnych kilkanaście lat temu, masa rzeczy uleciała z pamięci. W technikum nie miałem problemów z matematyką (głownie 4 i 5), jednak myślę że aby ruszyć dalej z pythonem, potrzebne mi jakieś mocne powtórki z matmy. I teraz pytanie. Możesz polecić kursy lub książki do przypomnienia sobie / powtórzenia matematyki? Nie musi być darmowe.

    Pozdrawiam

    • Marta

      Cześć Piotrek! Szczerze mówiąc, zabiłeś mi tym pytaniem ćwieka. Nie szukałam nigdy takich kursów i nie będę potrafiła Ci pomóc. Sama, będąc na Twoim miejscu, sięgnęłabym pewnie po podręczniki z liceum/technikum i z nich przerobiła te dziedziny matematyki, z których mam braki.
      A z ciekawości – jakiej wiedzy z matematyki Ci brakuje?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

LinkedIn
Share