Początki programowania – jaką technologię wybrać?

Paweł Dedio Programowanie 2018-10-13

Witajcie ponownie! Jest to już dwunasty odcinek naszej serii o programowaniu. Jeśli przetrwałeś tyle odcinków, to zakładam, że bierzesz tę branżę na poważnie i chciałbyś zostać programistą. W tym odcinku przybliżę Ci kilka czołowych technologii, w których możesz rozpocząć swoją karierę oraz porad, które pomogą Ci uniknąć najczęściej popełnianych błędów. Chciałbym też zaznaczyć, że z nie każdą technologią miałem do czynienia osobiście, więc wszelkie uwagi mile widziane.

Wybierz samodzielnie

Przede wszystkim technologia musi być Twoim wyborem. To Ty będziesz miał z nią do czynienia po 8 godzin dziennie lub nawet więcej. To musi być coś, co sprawia Ci przyjemność i jest dla Ciebie jakimś wyzwaniem. Nie warto sugerować się na przykład wysokością zarobków, bo pieniądze nie zawsze są najważniejsze. Owszem, przed wyborem technologii warto popatrzeć na rynek pracy – ile jest ofert, jakie są zarobki i tak dalej. Jednak jeśli podczas nauki wybrana technologia nam nie odpowiada, to warto się zastanowić czy nie lepiej spróbować czegoś innego.

Jeśli nie wiesz, który język wybrać, warto rozwiązać przykładowe zadania programistyczne. Darmowy zestaw zadań dla początkujących dostępny jest na stronie Coders Lab – Szkoły IT. Wybierz język, nad którym się zastanawiasz, a następnie wpisz swój adres email w formularzu – zadania zostaną przesłane na Twoją skrzynkę pocztową. To najlepszy sposób, żeby zorientować się, czy dany język programowania jest dla Ciebie. Przybliżę teraz kilka najpopularniejszych z nich tak, abyś miał z czego wybierać.

Frontend

Obecnie jedna z najbardziej rozwijających się gałęzi programowania. Frontend to nic innego, jak tworzenie stron internetowych. W rzeczywistości wcale nie jest to takie proste jakby mogło się wydawać. Na początku wszechobecnego Internetu strony były bardzo proste, zawierały kilka prostych podstron, bez jakieś zaawansowanej logiki. Jednak czasy się zmieniły i strony internetowe obecnie są bardzo zaawansowanymi aplikacjami. W pewnym momencie nastąpił podział na dwie gałęzie tworzenia stron – frontend i backend. Frontend dotyczy wszystkiego tego, co użytkownik widzi w przeglądarce, natomiast backend to wszystko to, co dzieje się po stronie serwera.

Tak więc, aby być dobrym frontendowcem musisz świetnie znać języki służące do definiowania wyglądu strony czyli: HTML oraz CSS. Obecnie strony internetowe są nie tylko statyczne, lecz również dynamiczne. Do wykonywania akcji po stronie przeglądarki służy język, który nazywa się JavaScript (większość osób używa skrótu JS). Na początek to wszystko wystarczy, jednak obecnie większość firm poszukuje ludzi ze znajomościami jakiegoś frameworka, a ich też jest sporo. Najpopularniejsze to: Angular, React oraz Ember.

Jak widzisz, próg wejścia jest dość spory, ale z tego co zauważyłem po różnych ofertach pracy, to właśnie tutaj są jedne z najwyższych stawek pieniężnych, jeśli chodzi o wszystkie dziedziny programowania. Kolejnym plusem jest również to, że do frontendu jest chyba najwięcej darmowych poradników, ponieważ jest on bardzo popularny.

Backend

Tak jak wspomniałem wyżej, backend to wszystko to, co dzieje się na serwerze. Użytkownik nie ma bezpośredniego kontaktu z backendem – wszystkie akcje przechodzą najpierw przez warstwę frontendu. W tej dziedzinie praktycznie nie tworzy się interfejsu użytkownika, zostaje 100% prawdziwego programowania! Gdybym miał jakoś w prostych słowach napisać, za co odpowiada backend, to powiedziałbym, że backend odwala całą czarną robotę. Przykładowo wyobraź sobie taki scenariusz: użytkownik tworzy konto oraz dostaje email z potwierdzeniem założenia konta. Z perspektywy frontendu sprawa jest prosta, po prostu udostępnia użytkownikowi formularz do wpisywania danych i wysyła je na serwer. Natomiast backend ma nieco bardziej skomplikowane zadanie. Musi przetworzyć hasło do jakieś zabezpieczonej formy, sprawdzić czy wszystkie dane są poprawne, zapisać całość w bazie danych i na końcu skomunikować się z jakimś serwisem umożliwiającym wysyłanie emaili.

Backend można tworzyć w wielu językach i frameworkach, jednak nadal najpopularniejsze z nich to Java oraz PHP. Oprócz samego programowania będziesz musiał też nauczyć się języka obsługi baz danych, czyli SQL. Podobnie jak we frontendzie próg wejścia jest dość wysoki, natomiast stawki są chyba najwyższe w całej branży. Trzeba mieć na uwadze, że jest bardzo prawdopodobne, iż możesz trafić do działu który pracuje nad jakąś ogromną aplikacją, która jest już rozwijana przez kilkanaście lat i można w niej trafić na naprawdę straszne rzeczy.

Aplikacje mobilne

Pewnie zdajesz sobie sprawę, że rynek smartfonów został praktycznie całkowicie zdominowany przez dwa systemy: iOS i Android. Podobnie jest w branży programistycznej – oferty pracy w większości kierowane są do programistów jednej z tych platform. Postanowiłem je połączyć, ponieważ różnice nie są bardzo wyraziste, próg wejścia jest podobny, ilość ofert oraz stawki również. Najbardziej dotkliwa różnica to to, że programować na telefony z iOSem można tylko z komputera z system MacOS. Są jakieś obejścia, żeby tworzyć aplikacji iOSowe na Windowsie, jednak nie jest to bardzo wygodne.

Jeśli chodzi o języki, to tutaj sprawa jest nieco prostsza – przynajmniej na samym początku. Chcesz pisać na iOS? Musisz nauczyć się Swifta. W przypadku Androida do wyboru mamy Javę lub Kotlina, gdzie ten drugi niedługo może całkiem wyprzeć ten pierwszy. Oprócz tego musisz nauczyć się budować interfejs użytkownika, ale moim zdaniem nauka tutaj jest łatwiejsza, niż w przypadku HTML i CSS.

Próg wejścia w przypadku obydwu platform nie jest jakoś bardzo wysoki. Musisz znać język programowania na poziomie średnim oraz podstawy danej platformy takie, jak cykl życia, działania na wątkach itd. Stawki w tej branży są dość wysokie, ale nieco niższe niż w przypadku frontendu i backendu.

Gamedev

Z tą branżą nie miałem nigdy osobistego kontaktu, więc mogę jedynie bazować na informacjach z drugiej ręki. Obecnie jednym z popularniejszych frameworków do tworzenia gier jest Unity 3D. Jest on też najbardziej polecany na początek Twojej kariery. W celu tworzenia gier mobilnych, będziesz musiał znać język programowania C#, znać się na modelowaniu 3D oraz mieć jakieś pojęcie o matematyce (często będziesz musiał coś liczyć). Charakterystyka tego zawodu jest nieco inna od zwykłego programowania. Tutaj większość osób działa na własną rękę, tworząc aplikacje na swoje własne konto. Jeśli gra okaże się sukcesem, to możesz zarobić naprawdę sporo. Tutaj można przytoczyć przykład gry Flappy Bird, której twórca w szczycie popularności zarabiał 50 tys dolarów dziennie. Ciężko będzie Ci znaleźć jakąś stabilną pracę w biurze, gdzie przychodzisz codziennie na 8 godzin i dostajesz stałą pensję – takich ofert jest bardzo mało. Na pewno nie jest to zawód dla kogoś, kto lubi stabilizację, bo tutaj ciężko o coś takiego 😉

Próg wejścia dla całkowitego laika będzie dość wysoki. Będziesz musiał uczyć się jednocześnie podstaw modelowania przestrzennego oraz programowania. Sam przez to przechodziłem i po paru tygodniach stwierdziłem, że to nie dla mnie. Na plus można zaliczyć to, że w Internecie jest mnóstwo przystępnych poradników.

Automotive

Ostatnio można zauważyć bardzo dynamiczny rozwój tej branży. Automotive to nic innego, jak pisanie oprogramowania wspomagającego pracę samochodu – zaczynając od sterowników systemów bezpieczeństwa, a kończąc na systemach multimedialnych. Z roku na rok samochody stają się coraz bardziej zaawansowane technologicznie, więc liczba ofert pracy na pewno będzie się zwiększać.

Z rozmów ze znajomymi dowiedziałem się, że w tej branży jest jeden ogromny minus. Wszelkie wdrożenia zmian trwają strasznie długo – właściwie to nie ma się czemu dziwić. W tej branży nie można sobie pozwolić na błędy – wszystko musi być wykonane perfekcyjnie, więc nie zdziw się, jeśli Twój kod będzie musiał przechodzić przez kilka warstw testów automatycznych i ręcznych.

Jeśli chodzi o próg wejścia, to określiłbym go jako dość wysoki. Nie ma uniwersalnego języka, którego mógłbyś się nauczyć, aby pracować w tej branży. Producenci używają różnych technologii i przeważnie wszelkich szczegółów dowiadujesz się dopiero na pierwszych szkoleniach w firmie.

To już wszystko w tym odcinku. Był to też ostatni odcinek opisujący tę branżę. Mam nadzieję, że udało mi się stworzyć obraz tego, jak to wygląda od wewnątrz. Od przyszłego tygodnia przechodzimy już do konkretów. Dowiecie się, co to jest cykl życia aplikacji androidowej i na czym on polega. Do zobaczenia za tydzień!

Zapraszam również na największe w Polsce forum dla programistów Android. Jeśli macie pytania odnośnie kariery jako programista – zapraszam do działu Kariera programowanie. Zachęcam również do przejrzenia działu Praca oraz zlecenia dla programistów – być może to właśnie tam znajdziesz swoją pierwszą pracę 😉

Poprzednie odcinki:

  1. Typowy dzień pracy programisty
  2. Wady pracy programisty
  3. Zalety pracy programisty
  4. [FAQ] Wszystko, co powinieneś wiedzieć jeśli interesuje Cię praca programisty
  5. Co mnie zdziwiło w programowaniu?
  6. Motywacje – w jaki sposób nie stracić zapału do programowania?
  7. Jaką firmę wybrać na początku kariery programisty?
  8. Jak wygląda rozmowa o pracę na stanowisko programisty?
  9. Jak zacząć programować?
  10. Skąd czerpać wiedzę o programowaniu?


  • Marta Zabłocka

    Dla początkujących polecam przydatny wpis: https://nofluffjobs.com/blog/jak-zostac-programista-bez-studiow-informatycznych/ – jest i o tym od czego zacząć naukę, ale także i o innych niezbędnych rzeczach.

  • laser raptor

    A co z embedded? W ogóle warto iść w takim kierunku, czy to katorga?

    • Paweł Dedio

      Embedded też ma przed sobą wielką szansę na rozwój, można robić wiele ciekawych rzeczy jak przykładowo systemy smart home.

  • Pawle, myślę, że świetnym pomysłem na artykuł będzie jak przybliżysz języki programowania (oraz pisania stron internetowych), a w dodatku podasz jaki jest stosunek ofert pracy, jakie branie jest na rynku, jakie zarobki, itd. 😉
    Myślę, iż wielu osobom pomogłoby to w wyborze 😉

    I jeszcze jedna sprawa: mógłbyś zrobić również temacik o frameworkach (np. React, Angular, jeszcze jakiś na literę B, itp.). Zawsze mnie to ciekawi, ale przypominam sobie zazwyczaj o nich przed snem, a później o nich kompletnie zapominam. W dodatku, ciekawie piszesz, wyciągasz najważniejsze kwestie, dlatego prosiłbym Cię o taki artykuł 🙂

    PS. Ciekawi mnie jak rozwinie się automotiv, jak dla mnie interesująca kwestia 😉

    • Paweł Dedio

      To miał być właśnie taki artykuł. Tylko ciężko jest pisać konkretnie o ofertach pracy ponieważ jest to mocno zależne od konkretnych miast. Różne firmy szukają różnych programistów w różnych lokalizacjach. Nie jest łatwo podać konkretne liczby, które będą aktualne przez długi czas.

      Odnośnie frameworków, te które wymieniłeś dotyczą front-endu (tworzenie stron internetowych), niestety ja nie zajmuję się tym tematem i nie czuję się odpowiednią osobą do pisania o tym. Za kilka tygodni planuję artykuł z frameworkami umożliwiającymi tworzenie aplikacji jednocześnie na iOS i Android, mam nadzieję że zainteresuje Cię ten temat.

      • Ah, w takim razie rozumiem 🙂 A jakie miasta Twoim zdaniem najlepsze dla programistów?

        Następny również się przeczyta 😉 Śledzę od początku 😉

        • Paweł Dedio

          To pytanie też jest trudne. Od siebie mogę jedynie powiedzieć, że Kraków i Warszawa oferują świetne możliwości dla programistów. Nie wiem jak jest w pozostałych miastach bo tam nie mieszkałem ani nie pracowałem.

          • Rozumiem. Ja słyszałem, że głównie właśnie Krk i Wawa 😉

      • $ROGAL$

        Na to właśnie czekam!