Sytuacja na rynku pracy sprawia, że jeżeli jesteś naprawdę dobry/dobra, nawet w niszowym języku i technologii, to zawsze znajdziesz pracę pozwalającą na komfortowe życie. Dlatego skupię się na odbiorcach, którzy próbują zorientować się w najbardziej popularnych możliwościach.

Generalizując: lubimy to co znamy. Dlatego często ścieżka naszej kariery jest przypadkowa i wynika z wyboru języka i platformy jaką ktoś kiedyś pokazał nam np. na studiach. Zamiast tego sugeruję świadome podejście od strony klas problemów, jakie chciałbyś/chciałabyś rozwiązywać.

Jeżeli interesują cię aplikacje internetowe to nieodzowny będzie JavaScript i HTML5 jako fundament. Do tego przyda się znajomość frameworków (np. AngularJS) i zagadnień z zakresu ergonomii interfaceów użytkownika. Logika po stronie serwera jest implementowana często w PHP (na bazie licznych frameworków), ale ze względu na wymogi zagranicznych klientów popularność zyskuje Ruby on Rails. Python natomiast wydaje się niszowy.

Duże systemy korporacyjne, gdzie problemem jest złożona logika biznesowa, są implementowane w językach: Java i C# - z przewagą tego pierwszego. O ile same języki są relatywnie bardzo proste, to musisz znać kilka (docelowo kilkanaście) składowych platform programistycznych – odpowiednio Java EE i .NET, które oferują rozwiązania wyższego rzędu. Przyda się również tutaj znajomość stylów oraz wzorców architektonicznych. Obecne trendy polegają na stosowaniu tych platform na serwerze, natomiast JavaScript służy do implementacji aplikacji klienckich.

Znajomość Javy pozwala programować urządzenia z platformą Android, natomiast znajomość C# otwiera możliwości na platformach Windows. Natomiast iOS wydaje się być w Polsce wciąż niszowy w porównaniu do konkurencji. Języki takie jak Scala czy F#, działające na wirtualnych maszynach wspomnianych platform, mogą być kolejnym krokiem w nauce. Jednak na początek lepiej zacząć od podstaw.

Entuzjaści C i C++ mogą zająć się programowaniem niskopoziomowym (blisko realnego sprzętu), gdzie liczy się wydajność.

Wielu młodych ludzi marzy o programowaniu gier - te jednak są tworzone przy pomocy specjalistycznych, wysokopoziomowych frameworków.

Wyłaniające się trendy sugerują, że warto wiedzę programistyczną uzupełniać o wiedzę z dziedzin specyficznych klas problemów, takich jak przetwarzanie ogromnych ilości danych (BigData, noSQL) oraz uczenie maszynowe (Machine Learning). Poziom zaawansowany w tych dziedzinach znacznie zwiększy twoje stawki.

Powyższe rady piszę na podstawie dwunastoletniego doświadczenia w branży, gdzie ostatnie pięć lat spędziłem jako trener i doradca. W tym czasie odwiedzałem ok trzydziestu organizacji rocznie. Dodam, że warto odnaleźć w sobie i rozwijać unikalny talent i rozwijać go. W połączeniu z wiedzą techniczną daje przewagę na rynku pracy. Jeżeli lubisz skrupulatnie analizować szczegóły możesz zająć się problemami wydajności systemów. Możesz zająć się architekturą systemów jeżeli lubisz mieć szerszą perspektyw. Natomiast jeżeli lubisz uczyć innych możesz rozwinąć umiejętności miękkie i po kilku latach wejść na ścieżkę szkoleń i doradztwa.