Jedno z chyba z najczęściej zadawanych pytań przez zaczynających/poczatkujących programistów. Czy to tych, którzy idą na studia czy tych, którzy się przekształcają. Co mam wybrać. I odpowiedź nigdy nie jest prosta. Bo to nie jest odpowiedź: wybierz X bo to jest najlepszy język, czy też idź w Y bo on zaraz się wybije. Gdyby tak było to pewnie większość by programowała w jednym języku a więc najrozsądniejszym wyborem pod względem “zarobków” by był język niszowy. Ciężej o pracę ale jak się już ją znajdzie to nie trzeba nic więcej robić. Na szczęście tak nie jest, no dobra, jest, jak się jest specem w COBOL to pewnie można dwa lata popracować i pójść na 10 letnie wakacje. Więc coś w tym jest. Ale odpowiedź na pytanie, jaki język programowania wybrać nie jest prosta.

Po pierwsze, musimy sami sobie odpowiedzieć na pytanie co chcemy robić. To jest dość ważne. Bo jeżeli interesuje nas frontend, to mamy ograniczony set języków, backend? Dużo większy, finanse? To zależy w jakim kraju itp. Pewne języki są wykorzystywane w pewnych sytuacjach a pewne w innych. Tak naprawdę dość ciekawym podejście byłoby zrobienie tego o czym pisze James:

Bo w rzeczywistości, nie jest się programistą X tylko programistą wykorzystującym w tej chwili X. Ale wracając do pytania, jaki język wybrać. Ważne są kwestie typu:

  • Czy się przekwalifikowywuje, jeżeli tak to:
    • Ile mam czasu do rozpoczęcia pracy
    • Ile czasu fizycznie jestem wstanie poświęcić na naukę programowania tygodniowo
    • Czy mam zapasy gotówki na okres bez pracy?
    • Ile muszę zarabiać minimalnie by żyć (uwzględniając odłożoną gotówkę)
    • Czy mam jakąś wiedzę dziedzinową którą mogę wykorzystać czy właśnie od niej uciekam
    • Czy już coś wiem na ten temat lub przynajmniej wiem co bym chciał robić/czym się zajmować
    • Na jakim rynku będę chciał działać
    • Jakie języki obce znam lub się uczę
  • Jeżeli nie, czyli zaczynamy dopiero przygodę to:
    • Czy jest coś co bym chciał konkretnego robić (gry, hacki, animacja, web, mobile, itp) – czyli czy jest coś co mnie pociąga
    • Jaki jest mój cel? Kim chciałbym być – dobrym szanowanym programistą, czy programistą potrafiącym wyżywić rodzinę jak najszybciej?
    • Ile mam czasu na naukę?
    • Czy są jakieś zajęcia które pokrywają się z tym co chcę robić (wykłady na studiach, warsztaty w liceum, tutoriale, spotkania itp.)
    • Ja jakim rynku będę chciał działać
    • Jakie języki obce znam lub się uczę

Tych pytań mógłbym wypisać dużo więcej. Ale nie po to by was wystraszyć, że to takie trudne i skomplikowane. Nie. Tylko po to by dowiedzieć się co tak naprawdę chcecie osiągnąć. Jaki jest wasz cel. Po co chcecie się tego języka nauczyć i czego oczekujecie w zamian. Ile macie czasu i czy już teraz potrzebujecie móc się utrzymać jak i utrzymać rodzinę.

To wszystko jest po to, bo w zależności od tego co chcecie i jak chcecie, to inne języki będą wchodzić w grę. Na przykład na razie, w C# nie napiszecie strony WWW. Zaś C# może wam pomóc w pisaniu backendu do strony WWW. Jak już piszecie WWW to pewnie HTML+JavaScript jak i wszelkie inne języki które na końcu wypluwają JavaScript – ELM etc. Jeżeli chcecie pójść w finanse lub pracować w handlu opcjami itp., to języki matematyczne aktualnie mają tam zastosowanie, a to może być MatLab, języki funkcyjne itp. A jeżeli chcemy tworzyć standardowe aplikacje jak większość tego świata, to języki obiektowe i typowe LOBy.

W sensie, na świecie jest masa języków, częściowo ich zastosowanie się przecina. Czasami nie się nie przecinają. Każdy ma swoje zastosowanie i sprawdza się w swojej działce. Jedno jest pewne, jeżeli chce się być dobrym programistą i stawia się na celu rozwój w informatyce to ja bym… no właśnie ja bym. Nie ty… ale ja. Widzę po prostu jak by to mi pomogło w innych miejscach w moim życiu. A co? To już pozostanie dla mnie. Bo to tyczy tylko i wyłącznie mnie i mojej ścieżki. A ja mógłbym przypadkowo źle Cię nakierować.

Czyli… tyle tekstu i brak odpowiedzi? Nie, odpowiedź jest między wierszami. Pytania zaś pomogą wam ją odnaleźć.

36 KOMENTARZE

  1. Hmm jeśli ktoś dopiero chce zacząć programowanie, to nie jestem pewien czy będzie umiał sensownie odpowiedzieć na te wszystkie pytania :)
    Jeśli ktoś jest względnie młody, to może lepiej po prostu zacząć od gier (czyli np obecnie C# i Unity albo C/C++ i Ogre3D albo jeszcze co innego do np 2D), żeby się zajawić? U mnie przynajmniej tak było. A reszta przyjdzie z czasem :)

    • Nie musi znac odpowiedzi na wszystkie. wystarczy ze odpowie na czesc lub czasami jedno z nich i bedize mial juz ograniczone pole wyboru. a ze jest sie mlodym to ma sie mase czasu na to by sprwadzic czy to jest to :) i warto to robic, warto eksperymentowac :)

  2. Kiedyś oglądałem wywiad ze Scottem Hanselmanem, który odpowiadał na podobne pytanie. Jeśli dobrze sobie przypominam, to chyba mówił, że wybrałby trzy języki. Jeden język “ogólnego przeznaczenia”, np. C#, język do Webu – JavaScript oraz jakiś język funkcyjny żeby mieć kontakt z tego typu technologią i pewien rodzaj odskoczni od pozostałych.

  3. Huh, ja ostatnio dowiedziałem się – z pierwszej ręki – że dziewczęta w jednym z topowych software house’ów, podczas przykawowych spotkań w kuchni znalazły silną korelację między preferowanym językiem programowania danego programisty a jego “potencjałem” jako partnera na randkę. Nie zdradzono mi szczegółów ani finalnych wyników, ale zapewniono, że są statystycznie istotne.

  4. Wydaje mi się że dobrą radą dla początkujących jest żeby wybrać cokolwiek i zacząć programować, zamiana języka po pół roku programowania nie bedzie stanowiła problemu. Podstawy są wspólne dla wielu języków.
    Co do wyboru języka ze względu na pieniądze należy też brać pod uwagę mamy frajdę z pisania w danym języku/platformie. Wydaje mi się, że można bardzo szybko się wypalić jako programista jeśli robimy coś tylko dla pieniędzy i nie czerpiemy z tego prawdziwej przyjemności.
    Dochodzą też inne aspekty, jak wielkość społeczności w danej technologii itp.

    • nie każdy programuje z pasji i nie musi. niektórzy robią to by zmienić swój stan majątkowy lub wyjść na prostą i to też jest ok. nie musze miec frajdy piszac kod, ale nie moze to mnie wkurzac. moge to traktowac jako zwykle rzemioslo. i nie koniecznie, wypalaja sie Ci ktorzy oczekuja czegos wiecej.

      czy wybor czegokolwiek jest dobry? mozliwe, mozesz rownie dobrze wylosowac jezyk :)

      Co do spolecznosci – to jest malo wazne, albo wazne, zalezy co jest Twoim celem.

      a co do jezyka dla poczatkujacych… to mowisz z perspektywy mlodej osoby bez zobowiazan. a to nie jest zawsze the case.

    • i to jest slyszne podejscie, przeciez kazdy wie, ze hiszpanski i mandarynski to dwa najpopularniejsze jezyki swiata! :)

  5. Bardzo dobry artykuł. Żadna technologia / język nie są wystarczająco uniwersalne, żeby były do wszystkiego. Mi pomogły studia techniczne, na których poznałem od podszewki działanie mikroprocesora ZANIM zabrałem się “na poważnie” do nauki jakiegokolwiek języka programowania. Dzięki temu miałem bardzo dobre pojęcie jak to wszystko działa “od środka” i co tak naprawdę można osiągnąć na “surowym metalu”. A potem jak już człowiek zaczął programować to się okazało, że – jak już tu ktoś wspomniał – kupa rzeczy i idei jest między językami podobna i czym więcej człowiek się nauczy czym łatwiej “wchodzą” nowe rzeczy. Ja końcem końców wylądowałem w świecie Business Intelligence, czyli głównie SQL + parę języków skryptowych, od czasu do czasu kilka linijek w C# czy w innym VB.NET – ale hołduję zasadzie “horses for courses”, czyli nie przywiązywać się za bardzo do żadnej konkretnej technologii i zawsze wybierać to, co w danym momencie jest najlepiej dopasowane do rozwiązywania danego problemu.

    Pozdrawiam zza blogowej miedzy!

  6. Zrobiłem kurs html na eduwebie i podstawy wiedzy zdobyłem, teraz powoli zdobywam doświadczenie. Zrobiłem kurs hobbystycznie, żeby odciąć się od nudnej pracy korpoludka, być może jak nabiorę wprawy, pomyślę o przekwalifikowaniu się.

  7. A co z Ruby, ostatnio z dobrą książką napisałem w Ruby on Rails serwis społecznościowy z możliwością dodawania obrazków i postów w 3 dni. Nauczyłem się też trochę Bootstrapa i PostgreSQL. Dlaczego ta technologia Ruby/RoR nie jest wymieniona, czy ona traci na rzecz Pythona?

  8. Czy można zacząć naukę programowania w języku Kotlin, nie znając wcześniej Javy? Powiadają że jest dużo prostszy od Javy, mniej rozwlekły i nowocześniejszy.

  9. Fajny artykuł, gratuluje autorowi wiedzy. Sam zaczynałem od C++, anie nie jest to moj ulubiony język.
    z pewnością jeszcze tu zajrzę
    pozdrawiam

  10. Czołem!
    Stoję przed wyborem pierwszego języka bo decyzję o zmianie branży i dotychczasowego zajęcia już podjąłem :)
    Interesuję się badaniami konsumenckimi, opinii publicznej więc chciałbym pójść w tym kierunku. Nie widzę siebie w tworzeniu stron internetowych, ale raczej w narzędziach do ogarniania baz danych… Możecie coś polecić na początek?

    • Opinie publiczne? Analiza danych plus trochę data mining. Wydaje mi sie ze zarówno Python jak i R oraz T-SQL mogą Ci sie przydać. Ale nacisk bym dał na Python. Przynajmniej tak mi sie wydaje :)

Comments are closed.