Jaki język programowania wybrać na początek

Jaki język programowania wybrać na początek ?

Różnych języków programowania jest naprawdę wiele, większość można traktować jako ciekawostkę, natomiast tych wartych zainteresowania jest raptem kilka. O tym jaki język programowania wybierzesz tak naprawdę decyduje rynek i zapotrzebowanie na specjalistów pracujących w danej technologii. No chyba, że chcesz programować hobbistycznie, wtedy w ogóle nie musisz wybierać, możesz poznać kilka języków i w każdym z nich robić inne rzeczy – nie ma znaczenia od czego zaczniesz. Po kilku miesiącach możesz znów uczyć się czegoś innego, być może ciekawszego.

Większość ludzi uczących się programowania wiąże jednak swoje życie zawodowe z byciem programistą i ten wpis powstał właśnie dla takich osób.

Najważniejszą rzeczą w  wyborze języka jest zadanie sobie pytania: co ja tak naprawdę chcę osiągnąć ?

Czy chcesz pracować w małym startupie rozwijającym swój produkt, pracując po 12 godzin w jakiejś ciemnej i dusznej piwnicy, ale za to pisać kod, którym być może będziesz mógł chwalić się kolegom? Czy możesz chcesz otrzeć się o wielki świat korporacji ze szklanymi biurami, dobrą kawą, atrakcyjnymi zarobkami i nudną pracą przeplataną walką z korporacyjnymi procedurami?

Oczywiście do wszystkich niedogodności można się przyzwyczaić, lub podejść do tego w bardziej uniwersalny sposób i popróbować i tego i tamtego.

Praca w startupie

Zacznijmy od tego co to jest startup. Startupem może być firma, która wymyśliła i rozwija jakiś swój unikalny produkt, może to być portal, sklep, aplikacja (takich chyba jest teraz najwięcej). Może być to również firma, która chce świadczyć swoim klientom jakieś specyficzne usługi np. usługi medyczne, analityka danych, usługi szkoleniowe, usługi budowania aplikacji (np. finansowych) itd.

Niestety startupy to często firmy, które dopiero powstają, rozwijają się, czasem ich sytuacja finansowa jest mało stabilna i najzwyczajniej w świecie nie stać ich na płacenie swoim programistom kokosów. Trzeba się liczyć z tym, że możesz zarobić mniej niż twoi koledzy w korpo.

Jakich języków używają startupy ?

W zasadzie wszystkich, które dają im jakieś korzyści. Każdy język jest dobry jeżeli pozwala w szybki i łatwy sposób osiągnąć pożądany efekt. Ważne, żeby był lekki i wydajny w developmencie dla przeciętnie ogarniętego programisty.

Powszechnie używa się języków skryptowych takich jak Ruby (w którym powstał min. Twitter), PHP (np. Facebook, korzysta z niego także większość stron internetowych, wiele sklepów i portali), Python (stosowany w Google) i oczywiście JavaScript, który można spotkać dosłownie wszędzie i dzięki node.js jest też używany na backendzie.

Startupy korzystają także z języków kompilowanych takich jak Java czy Kotlin. Są one bardzo intensywnie używane w aplikacjach przeznaczonych na komórki. Niemniej ważny staje się GoLang, który ostatnio zyskuje na popularności ze względu na bardzo oszczędne korzystanie z zasobów (także używany w Google).

Praca w korpo

Korpo to zwykle duża „skostniała” organizacja, która przez lata wypracowała własną kulturę i jest dość oporna na zmiany. Niemniej jednak struktura korpo pozwala na to, że jak już raz do niej wejdziemy możemy zostać tam na lata. Niewątpliwą zaletą pracy w korporacji jest poczucie stabilności (jeśli ktoś tego potrzebuje – a większość ludzi potrzebuje) oraz stałość zatrudnienia, zwłaszcza jeśli brak doświadczenia i pewności na rynku pracy. Natomiast wadą powyższego może być fakt, że łatwo jest się tam zasiedzieć i przegapić moment albo okazję na zmianę pracy na bardziej rozwojową. Jeśli zostaniesz tam za długo, rynek pracy ci trochę ucieknie.

Jakich języków używa korpo ?

W korporacjach wszystko wygląda trochę inaczej, królują języki kompilowane, a w zasadzie całe platformy z ogromną infrastrukturą, która narosła przez lata wokół nich. W dużej mierze korporacje zdominowane są przez dwa języki. Pierwszy z nich to Java, a drugi to C# (przy czym z moich doświadczeń wynika, że większość korporacji używa Javy). Do tego warto znać najpopularniejsze frameworki i biblioteki, zarówno te korporacyjne jak i open source’owe.

Oczywiście różne organizacje mają swoją specyfikę i można znaleźć firmy, w których cały stos aplikacji oparty jest na technologiach open source. Jednak przewaga firm, które pracują z oprogramowaniem od konkretnych vendorów jest znaczna. W korpo podobnie jak i w startupach powszechnie używany jest javascript i frameworki typu Angular czy React. Warto także co nieco wiedzieć o tych technologiach.

A może praca w software house?

Trzecią kategorią miejsca pracy, której wcześniej nie wymieniłem jest software house. Chociaż nigdy nie pracowałem w software housie, to teraz wydaje mi się, że mogłoby to być ciekawe doświadczenie. Możliwość wymiany wiedzy z dużą liczbą developerów, liczne projekty dają zawsze dużo większe możliwości nauki. Płynna zmiana projektu po roku lub dwóch to bardzo pożądana opcja. Chociaż nie można generalizować i trzeba pamiętać o tym, że w wielu takich miejscach po prostu klepie się kod – jak najszybciej, aby do przodu.

Przyjrzyjmy się kilku popularnym językom

Języki kompilowane

Java – jeden z bardziej popularnych języków programowania. Jest stosunkowo prosty jeśli używasz frameworka spring i nie musisz bawić się wielowątkowością. Jest językiem kompilowanym statycznie, typowanym, z automatycznym zarządzaniem pamięcią, przez co nie musisz się martwić o to, czy zwolniłeś pamieć wszystkich wcześniej zaalokowanych obiektów, garbage collector zrobi to za Ciebie (jest to zaleta, ale czasem jest to też wada). Jeśli chcesz robić web development dla aplikacji „biznesowych”, java jest najlepszym wyborem. Mnogość bibliotek i ogromne comunity pomogą w rozwiązywaniu problemów dnia codziennego.

C# – jest to język bardzo zbliżony do javwy oparty o technologie Microsoftu. Jeśli nie przeszkadza ci praca z technologiami stworzonymi przez Microsoft, C# może być dla ciebie równie dobrym wyborem.

C++ – jest to język o dosyć dużym progu wejścia, z ręcznym zarządzaniem pamiecią. Daje za to spore możliwości i jest bardzo wydajny. Powszechnie stosowany przy produkcji gier. Większość najpopularniejszych silników gier jest napisanych właśnie w tym języku. Można go też stosować w aplikacjach desktopowych. W zasadzie nie używa się go do web developmentu.

Scala – jest to zaawansowany język funkcyjny, który ostatnio zyskuje na popularności. Jest językiem opartym na jvm przez co jego możliwości mogą być rozszerzane o kod, który został napisany w javie. Scala jest językiem bardzo przydatnym w tematach związanych z Bigdata. W Scali można pisać programy bardzo podobnie jak w javie, ponieważ posiada też elementy obiektowe. Natomiast pisanie idiomatycznego kodu w scali jest bardzo trudne i wymaga wiele doświadczenia w pisaniu czysto funkcyjnych programów.

Kotlin – statycznie typowany, język obiektowy, który powstał jako język działający na maszynie wirtualnie jvm , kompatybilny z javą. Jest to bardzo młody język programowania, a swoją popularność zawdzięcza firmie, która go stworzyła i bardzo silnie promuje – JetBrains.

Języki skryptowe

Python – jest językiem skryptowym, dynamicznie typowanym, o bardzo zwięzłej składni. Zorientowanym na programowanie obiektowe, w przeszłości częściej wykorzystywany do programowania skryptów w wierszu poleceń, obecnie często wykorzystywany w tworzeniu backendów webowych.

Ruby – jest językiem skryptowym dynamicznie typowanym, jest także językiem w pełni obiektowym, dającym bardzo duże możliwości. Największą bolączką rubiego była zawsze jego wydajność, chociaż podobno ma się to poprawić w wersji 3.0. Zyskał swoją popularność głównie frameworkowi Ruby on Rails.

Php – jest językiem skryptowym, dynamicznie typowanym. Jest językiem zorientowanym obiektowo, jest bardzo popularny przy tworzeniu serwisów webowych.  Php ma bardzo niski próg wejścia i bardzo łatwo znaleźć w nim pracę nawet bez bardzo dużych kwalifikacji. W php zostało napisanych bardzo wiele ciekawych frameworków, dzięki czemu możemy bardzo szybko łatwo i przyjemnie developować nowe funkcjonalności.

Groovy – jest to javo podbny język skryptowy, jeśli zaczniesz już pisać w javie, nauczenie się grooviewgo będzie dla ciebie czymś bardzo naturalnym, różnice w składni są naprawdę bardzo niewielkie. Obecnie groovy nie jest tak popularny jak jeszcze kilka lat temu, ale jeśli programujesz w javie, to warto go znać ze względu na dwa bardzo dobre narzędzia. Gradle – narzędzie do budowanie projektów i Spock – świetny framework do testowania kodu, który jest alternatywą dla Junit w javie.

Javascript to osobna kategoria!

Javascript to jeden z najbardziej popularnych języków ostatnich lat. Jest to język wykorzystywany głównie w aplikacjach frontendowych, ale można go używać do tworzenie backendów przy użyciu node.js, (backendowo nie jest to jednak język bardzo popularny, ze względu na swoje ograniczenia i problemy ze skalowalnoscią).

JS swoją popularnośc zawdzięcza głównie trzem rzeczom:

  1. node.js  i menager pakietów npm, któy pozwala zarządzać poszczególnymi pakietami javascriptowytmi
  2. Framework Angular
  3. Framework React

Wszystkie te narzędzia sprawiły, że javascript stał się jednym z najbardziej rozpowszechnionych języków we współczesnym świecie. Nie jest to jednak język, który jest używany do bardzo zaawansowanych rzeczy…

Wybór nigdy nie jest ostateczny

Gdy już trafisz na język, który wyda Ci się najbardziej odpowiedni i planujesz zostać z nim na lata pamiętaj, że to tylko narzędzie, które pomaga osiągać pewne cele. Dla jednych będzie odpowiedni ten dla pozostałych inny. Warto zostawić sobie furtkę i ciągle poznawać nowe języki, stale uczyć się nowych bibliotek i frameworków.

Co warto jeszcze wiedzieć ?

Umiejętności miękkie (komunikacja)

Jedną z najważniejszych rzeczy w świecie IT (i nie tylko) jest komunikacja. Bez dobrej komunikacji w zespole, czy pomiędzy zespołem a biznesem, trudno jest realizować jakiekolwiek zadania. Dlatego warto przez całą swoją karierę doskonalić swoje umiejętności komunikacyjne. Wbrew pozorom programowanie to nie jest praca z komputerem. To praca z ludźmi i im dłużej będziesz pozostawał w tej branży tym więcej Twojego czasu będziesz przeznaczać na komunikację. Zbieranie wymagań, analiza funkcjonalna, analiza systemowa, projektowanie poszczególnych funkcjonalności, code review, pair programing, wdrożenia. Do realizacji wszystkich tych rzeczy potrzebni Ci są ludzie, z którymi musisz umieć się skomunikować.

Język angielski

Kolejną ważną rzeczą jest znajomość języka angielskiego, ponieważ w tym języku powstaje większość dokumentacji do języków programowania, bibliotek, frameworków itp. Także większość książek o programowaniu została napisana w języku angielskim i tylko nieliczne zostały przetłumaczone na język polski, więc wraz z wyborem języka programowania powinieneś stworzyć plan jak będziesz się uczył języka angielskiego.

Podsumowanie

Tak naprawdę nie ma dobrej odpowiedzi na pytanie „Jaki język wybrać?”. Jeśli zapytasz programistę javy to odpowie, że java. Jak zapytasz programistę C# to odpowie, że C# itd. Najważniejsze, to czuć się komfortowo używając jakiegoś języka, poczucie że wszystko przychodzi Ci naturalnie w języku, który wybrałeś jest bezcenne. Jeśli język w którym piszesz nie jest dla ciebie wygodny, być może czas na zmiany.

Mateusz Dąbrowski

Cześć jestem Mateusz, zajmuję się programowaniem już ponad 12 lat z czego ponad 8 programuję w Javie. Zapraszam Cię do lektury mojego bloga. Możesz przeczytać więcej o mnie >>TUTAJ<<