Dochodowy język programowania

Programistą być.

Na rynku pracy brakuje coraz więcej ludzi do pracy w IT, zwłaszcza jako programistów.  Skutkuje to wysokimi zarobkami, a to powoduje, że coraz więcej ludzi postanawia się przebranżowić, bądź zacząć pracę jako programista. Jednym z pierwszych wyzwań, przed jakim stają takie osoby, jest wybór technologii, a zwłaszcza języka programowania. Grupy dyskusyjne bardzo często są zasypywane pytaniami o najbardziej “dochodowy język programowania”. Czyli jak mniemam, o język który przynosi największe profity. Uwaga teraz będzie spoiler: nie ma najbardziej dochodowego języka, a popularność języka niekoniecznie wiąże się z wysokością stawek dla takich programistów. Zacznijmy od tego jak dzielą się języki.

Języki kompilowane

Języki kompilowane to takie języki, które po stworzeniu  kody, wymagają skopiowania go do postaci natywnej (pliku wykonywalnego, który można uruchomić na systemie operacyjnym), lub do postaci języka pośredniego. Językiem natywnym jest np C, C++ czy Go, Rust. Po stworzeniu programu w tych językach uruchamiamy program, zwany kompilatorem, który tworzy nam plik wykonywalny, który nie wymaga innych narzędzi do uruchomienia na systemie operacyjnym. Pliki takie są zależne od platformy, na jakiej mają być uruchamiane – inny plik będzie na Windowsa, a inny na Linuxa.

Podgrupę w tej grupie stanowią języki, które nie kompilują się do pliku wykonywalnego, tylko do pliku pośredniego, zrozumiałego dla programu wykonującego kod pośredni. Przykładem takiego języka jest Java i C#. Powodem takiej sytuacji, w przypadku Javy, miało być umożliwienie uruchomienie tego samego programu na różnych urządzeniach i systemach. W tym przypadku, po skompilowaniu kodu, otrzymujemy plik w postaci pośredniej, który jest uruchamiany przez narzędzie, które wie jak zinterpretować dany plik.

Języki kompilowane, zwłaszcza języki kompilowane do postaci natywnej, charakteryzują się najlepszą wydajnością.

Języki skryptowe

Języki skryptowe, są to języki których kod jest wprost wykonywany przez interpreter, bez wcześniejszego kompilowania. Przykładem takich języków są: Python, Ruby , PHP, czy Javascript. W przypadku tych języków kod napisany przez programistę do uruchomienia wymaga narzędzia zwanego interpretatorem, zainstalowanego w systemie operacyjnym (bądź w przeglądarce jak to jest w przypadku Javascriptu), który wie, jak należy wykonać skrypt. Języki skryptowe są łatwiejsze w nauce na początek, gdyż łatwiej jest przejść od napisania prostego programu do jego uruchomienia. Wydajność języków skryptowych jest znacznie mniejsza od języków kompilowanych.   

Języki statycznie typowane

Języki statycznie typowane to takie, w których typ danych jest określany na etapie tworzenia kodu i ewentualne błędy przypisań można wyłapać na etapie kompilacji programu, a nie jego wykonania. Języki kompilowane są z reguły stycznie typowane. Przykładem takich języków jest C++, Java, C#.

Języki dynamicznie typowane

W językach dynamicznie typowanych, typy zmiennych są określane podczas wykonywania programu, co skutkuje tym, że łatwo jest popełnić błąd przypisania (do zmiennej typu stało liczbowej dopisać ciąg znaków itp.).

Języki proceduralne

W tym przypadku program jest tworzony na bazie programu głównego i procedur lub podprogramów. Przykładem takiego języka jest język C.

Języki obiektowe

Obiektowe języki programowania to takie, które umożliwiają, lub wymuszają pracę przy użyciu paradygmaty programowania obiektowego – wszystko jest obiektem. Przykładem takich języków jest: C++, Java, Python, C#.  

Języki funkcyjne

Są to języki oparte na paradygmacie funkcyjnym, w  który raz zdefiniowana funkcja zwraca tą samą wartość dla tych samych argumentów. Przykładem takich języków jest Erlang, F#, Haskell, Scala.

Języki deklaratywne

Jednym z rodzajów języków są języki deklaratywne. Są to języki, w których  programista mówi tylko co ma być zrobione, ale nie jest w stanie zdefiniować jak to ma być zrobione . Przykładem takiego języka jest SQL.

Języki specjalizowane

Poza językami ogólnego użycia, jest też kilka języków specjalizowanych, związanych z konkretną platformą. Takimi językiem są np. X++ związany z platformą Microsoft Dynamics AX, ABAP związany z platformą SAP oraz APEX związany z platformą Salesforce. Języki te są związane z jedną, konkretną platformą i nie są używane w innych systemach. Jeśli na początku swojej kariery zwiążemy się z takim językiem, znacznie ograniczamy ilość miejsc pracy, w których możemy pracować. Kolejnym problemem jest to, że takie języki znikają razem z końcem wsparcia ich przez firmę dostarczającą platformę. Nie są to języki dobre na start. Lepiej nauczyć się języka bardziej uniwersalnego i wówczas, z solidnymi podstawami, można się specjalizować w którymś z tych języków. Patrząc na historię, cykl życia takich języków jest znacznie krótszy, niż cykl życia języków ogólnego użycia, dlatego należy pamiętać, aby w porę poszukać sobie alternatywy, gdyż wraz z wiekiem coraz ciężej ludziom przychodzi nauka nowych rzeczy.

Siła języka

O sile języka, poza jego możliwościami dostarczonymi przez bibliotekę standardową oraz biblioteki dostarczone przez partnerów zewnętrznych, stanowi również jego społeczność. W dobie wszechobecnego internetu, rozwiązanie na większość problemów można znaleźć w kilka chwil, pod warunkiem, że pracujemy z językiem, który posiada dużą społeczność. Zdarzyło mi się pracować z językami niszowymi bądź wymierającym i wówczas większość problemów musimy rozwiązać sami, bądź poświęcić więcej czasu na wyszukanie wartościowych informacji w internecie.

Wybór języka

Patrząc na mnogość języków i ich różne rodzaje, trudno zdecydować, który język jest najlepszy.  A już na pewno na początku, ciężko jest się zdecydować na jeden z nich. Innym, bardziej przyziemny podziałem języków jest podział ze względu na ich wykorzystanie. I tak np. języki takie jak Python, PHP, Javascript są językami wykorzystywanymi w programowaniu stron WWW. Język Java jest szeroko wykorzystywany w systemach bankowych i ubezpieczeniowych oraz w rozwiązaniach Big data. Język Python, poza WWW jest też wykorzystywany w analizie danych. C i C++ są wykorzystywane w systemach wbudowanych (w urządzeniach) albo w wysoce wydajnych systemach np do obróbki grafiki lub wspomagania projektowania (CAD). Szukając języka dla siebie, warto bardziej skupić na tym, co chcemy robić, w jakiej branży, niż na samym  typie języka. Przy wyborze języka warto zapoznać się z jego historią, gdyż często po tym można ocenić, co było przyczynkiem do jego powstania i do rozwiązywania jakich problemów najlepiej się nadaje.

Popularność języka

Często uważa się, że za popularnością języka idzie też wysokość stawek dla programistów tego języka. Wybór technologii w projekcie jest zależny od wielu czynników, między innymi od dostępu specjalistów w danej technologii. Java jest dobrym przykładem takiego języka. Końcem poprzedniego tysiąclecia i początkiem tego, Java była wykładana chyba na wszystkich uczelniach, co poskutkowało pojawieniem się na rynku wielu programistów umiejący pracować w tej technologii. Za Javą stała duża firma komercyjna (Sun Microsystems – po wykupieniu przez Oracle, to Oracle jest odpowiedzialny za rozwój tego języka), która bardzo mocno pracowała nad jego popularyzacją. Jednakże patrząc np. na raporty z USA ,wcale programiści pracujący w tej technologii nie zarabiają najwięcej. Duża popularność oznacza również dużą konkurencję. Dodatkowo ewentualne odwrócenie się rynku od tej technologii spowoduje uwolnienie bardzo dużej liczby programistów.

Co powinien umieć programista poza językiem programowania

Na samym początku kariery ważne jest, aby wybrać jeden język, aktualnie najlepiej nam odpowiadający i opanować go w stopniu dobrym.  Najlepiej ocenić swoje umiejętność przez pójście na kilka rozmów o pracę. Początki są zawsze ciężkie, ale chodzenie po kolejnych rozmowach pozwoli nam zbierać doświadczenie oraz pytania, jakie pojawiają się na rozmowach. Po pewnym czasie można zebrać pokaźną ilość pytań, a ich opanowanie na pewno pomoże w zdobyciu pracy.

Znajomość, nawet bardzo dobra języka programowania  nie robi z nas programisty. Poza językiem warto się zapoznać ze strukturami danych –  czym się różni lista od słownika ( niemal w każdym języku są podobne struktury danych, chociaż różnią się nazwami) i dlaczego raz warto stosować jedną albo drugą opcję. Należy też poznać wzorce projektowe oraz architekturę, jaką się wykorzystuje w typie aplikacji, z jakimi chcemy pracować – inaczej sprawa wygląda jak pracuje się w Pythonie przy stronach WWW, a inaczej jak pracuje się w Pythonie przy analizie danych.  

Wybór języka na początku z reguły nie jest ostateczny. Często się zdarza, że ze względu na zapotrzebowanie lub rozwój kariery, konieczne będzie opanowanie jednego, albo nawet kilku nowych języków programowania. Jednak przy umiejętności programowania w jednym języku, opanowanie kolejnego z tej samej grupy, nie powinno stanowić większego problemu. Więcej problemu może nastręczyć opanowanie języka z innej grupy: czyli kiedy np. programujemy w Javie (język obiektowy) i potrzebujemy się nauczyć Erlanga (język funkcyjny).

Podsumowanie

Podsumowując, nie istnieje dochodowy język a znajomość  któregokolwiek języka z czołowej 10, a może nawet 20 rankingów popularności, praktycznie zapewnia pracę w większości dużych miast w Polsce (pojawia się coraz więcej ofert z możliwością pracy zdalnej).  Poniżej lista kroków, które prowadzą do upragnionej pracy jako programista:

  1. Wybierz obszar, w jakim chciałbyś pracować na podstawie swoich predyspozycji i umiejętności: WWW, systemy wbudowane, systemy dla firm.
  2. Poszukaj jakie języki są popularne w tym obszarze, wybierz jeden z nich i zacznij się go uczyć. Możesz do tego wykorzystać książki, kursy w szkołach programowania albo  kursy on-line.
  3. Zacznij wysyłać CV i chodzić na rozmowy – zbieraj pytania z rozmów i szukaj na nie odpowiedzi, jeśli nie umiałeś czegoś na rozmowie.
  4. Opanuj wzorce projektowe i struktury danych.
  5. Bierz czynny udział w społeczności związanej z programowaniem w twojej okolicy.

Znalezienie pierwszej pracy wymaga dużo energii oraz zajmuje dużo czasu – w moim przypadku było to około roku czasu, ale to było kilkanaście lat temu. Teraz chyba jest łatwiej. Znalezienie pierwszej pracy zawsze jest najtrudniejsze, potem jest już z górki.

Życze wytrwałości w nauce i powodzenia w poszukiwaniu pracy. Grunt to się nie zrażać i dążyć do celu.

Avatar

Tomasz Pycia

Jestem programistą z kilkunastoletnim stażem. Pracowałem lub pracuje z takimi technologiami jak bazy danych (SQL Server, Oracle, PostgreSQL ) , Java, C# i bardziej egzotycznymi językami jak Power Script lub Oracle Forms.

More Posts - Website

Follow Me:
LinkedIn