Pare dni temu ukazały się wyniki corocznego Stack Overflow Developer Survey.

Analiza raportu z zeszłego roku – Zaczynasz naukę programowania? Na co warto zwrócić uwagę w Stack Overflow Developer Survey Results 2017 – cieszyła się sporym zainteresowaniem. Dlatego i tym razem postanowiłam się przyjrzeć i przedstawić część wniosków jakie można wyciągnąć z tych statystyk. Nie tylko pod kątem osób rozpoczynających naukę programowania.

Zacznijmy od tego, kim byli respondenci, co o nich wiemy. Jak się możemy domyślać ma to dość istotny wpływ na wyniki ankiety.

Po pierwsze tym razem ankietę wypełniło przeszło 100 000 programistów z całego świata.

Prawie 60% z nich identyfikuje się jako Back-end developer, ok. 50% jako Full Stack developer, niespełna 40% Front-end developer oraz 20% mobile developer.

Przeszło 80% respondentów traktuje programowanie jako hobby, nie tylko pracę.

Prawie 36% respondentów to osoby, które pierwsze kroki z nauką programowania stawiali w ciągu ostatnich 5 lat.

Jeśli chodzi o programowanie zawodowo, aż 30% deklaruje doświadczenie w wysokości maksymalnie 2 lata (!). Prawie 60% osób ma doświadczenie poniżej 5 lat. Widać, jak wiele nowych osób dołączyło do branży w przeciągu ostatnich lat. Niewiele ponad 5% osób ma doświadczenie powyżej 20 lat.

Około 25% respondentów to studenci (full-time/part-time).

Wśród osób, które określają się mianem zawodowych programistów, prawie 75% posiada wykształcenie co najmniej inżynierskie. Wśród osób, które studiowały, przeszło 64% wymienia jako kierunek: computer science, computer or software engineering.

Jak respondenci ankiety zdobywają nową wiedzę?

83% wskazuje na oficjalną dokumentację oraz standardy dla technologii, którą się zajmują. Podobny odsetek respondentów wskazuje Stack Overflow Q&A. Ok. 50% – książki, m.in. O’Reilly, Apress, itd.

Tutaj dodam jeszcze, że wiele ebooków udostępnianych jest za darmo. Przykładowo: O’Reilly Free Programming Ebooks, ApressOpen (free ebooks), Packtpub Free Learning (free ebooks).  

Prawie 50% uczestniczy w społecznościach programistycznych online (innych niż Stack overflow).

 

Wśród respondentów znaleźli się również uczestnicy Bootcampów. Spośród nich (co ciekawe) 45,5% miało już pracę jako programista rozpoczynając bootcamp (bootcamp jako opcja zwiększania własnych kwalifikacji zamiast nauki od zera?). Spośród pozostałych 54,5%: 16,3% znalazło pracę bezpośrednio po ukończeniu bootcampu (czyli ok. 30%, które zaczynało bootcamp nie pracując jako programista), u 7,5% (ok. 14%) potrwało to miesiąc od ukończenia bootcampu. W zasadzie 77% uczestników bootcampu, którzy nie pracowali jako programiści przed oraz w trakcie bootcampu znalazło pierwszą pracę w ciągu roku od jego ukończenia (ciekawe jakie byłyby statystyki polskich bootcampów pod tym kątem ? ).

 

Technologie

Jak przedstawiają się najpopularniejsze języki używane przez respondentów ankiety?

JavaScript kolejny rok z rzędu pojawia się na pierwszej pozycji. Poniekąd nie powinno to dziwić. O ile w Back-endzie możemy korzystać z wielu różnych języków (w tym m.in. JavaScriptu), o tyle Front-end to głównie JavaScript. A ponieważ 40% respondentow ankiety identyfikuje się jako programista Front-end…

SQL również jest językiem mocno uniwersalnym.

Zastanawia mnie pozycja Angulara. Nazwa mogłaby sugerować, że chodzi o Angular 2+, jednak w opisie powyższego wykresu czytamy:

„Node.js and AngularJS continue to be the most commonly used technologies in this category”

Pominę więc ten wynik milczeniem.

Jak widać bazy SQL wiodą prym, pierwsza baza typu NoSQL pojawiła się dopiero na czwartej pozycji (MongoDB).

 

Sekcja Most Loved, Dreaded and Wanted przedstawia języki, technologie, platformy kochane (loved), nienawidzone (dreaded) przez programistów, którzy mieli z nimi styczność, doświadczenie, przyjemność bądź nieprzyjemność pracy oraz te, z którymi chcieliby pracować (wanted), ale dotąd nie mieli okazji.

I tak wśród najbardziej kochanych języków mamy: Rust (78,9%), Kotlin (75,1%), Python (68%), TypeScript (67%) oraz Go (65,6%). Dość wysoko plasuje się również JavaScript z 61,9%.

Najbardziej „przerażające” (?) języki to: Visual Basic 6 (89,9), Cobol (84,1%), CoffeeScript (82,7%), VB.NET (80,9%), VBA (80,9%) -> Czyli wiecie już jakich języków unikać ? ?

Najbardziej pożądane: Python (25,1%), JavaScript (19%), Go (16,2%), Kotlin (12,4%), TypeScript (11,9%), Java (10,5%), C++ (10,2%).

Jak widać istnieje powiązanie pomiędzy językami kochanymi przez programistów, którzy w nich pracują, a tymi, w których inni chcieliby pracować ?

 

Jak się przedstawia sytuacja w przypadku frameworków, bibliotek i narzędzi? [wyniki]

Loved: TensorFlow (73,6%), React (69,4%), Torch/PyTorch (68%), Node.js (66,4%), .NET Core (66%), Spark (66%).

Dreaded: Cordova (59,6%), Xamarin (51%), Hadoop (46,1%), Angular (45,4%), Django (41,7%).

Wanted: React (21,3%), Node.js (20,9%), TensorFlow (15,5%), Angular (14,3%), .NET Core (9,3%).

Tutaj przyznam, że ciężko wyciągać wnioski. Owszem, React wylądował dość wysoko na listach loved i wanted, ale pojawił się również na dreaded (30,6%). Podobnie Angular ma swoich zwolenników (loved – 54,6%), jest pożądany przez 14,3%, ale przeraża 45,4%. Wniosek jest chyba jeden: im popularniejszy framework/biblioteka tym więcej sprzecznych emocji wywołuje ?

 

Jeśli chodzi o środowiska pracy używane przez developerów

Wśród wszystkich respondentów najpopularniejsze okazały się: Visual Studio Code (34,9%), Visual Studio (34,3%), Notepad++ (34,2% 😛 ), Sublime Text (28,9%), Vim (25,8%), InteliiJ (24,9%).

Jest również podział na:

Web Developerów: z wynikami identycznymi jak powyżej.

Mobile Developerów: z wiadomych przyczyn całkiem odmiennymi wynikami. Wiele platform ma dedykowane IDE do tworzenia aplikacji mobilnych, z emolatorami i narzędziami przydatnymi w developemencie. Tutaj mamy: Android Studio (56,6%), Visual Studio Code (36,6%), Xcode (35,1%; iOS), Visual Studio (32,9%), Notepad++ (32,5%).

O Visual Studio Code pisałam jak coś na blogu ?

 

Jakie technologie są najbardziej opłacalne?

Tutaj warto zwrócić uwagę, że mimo wysokiej opłacalności, w niektórych ciężko znaleźć pracę, a w innych pracować (cierpliwość, itp.).

I tak w czołówce międzynarodowej wylądowały języki: F#, Ocaml, Clojure, Groovy, Perl.

 

Correlated technologies

Bardzo lubię ten wykres. Jego analiza pozwala wysnuć naprawdę sporo wniosków.

Dla przykładu startując od JavaScriptu, możemy wysnuć wniosek, że osoby znające JavaScript, często znają również HTML i CSS. Co nie jest niczym dziwnym, jeśli wziąć pod uwagę, że JavaScript najczęściej wykorzystywany jest do tworzenia Front-endu aplikacji webowych, stron internetowych, itd. Jednak JavaScript może się znaleźć również po stronie backendu (Node.js framework). Osoby pracujące w takim stosie technologicznym często wybierają Visual Studio Code jako środowisko pracy.

JavaScript i frameworki? Angular i React wiodą przym. W przypadku Angulara 2+ bardzo popularne jest pisanie w TypeScript’cie. Zresztą sam Angular również został w nim napisany. Jeśli chodzi o bazy danych, widzimy dwie opcje: NoSQL (MongoDB) lub SQL (MySQL). Osoby korzystające z Node.js częściej wybierają MongoDB. Co nie dziwi, biorąc pod uwagę popularne stosy technologiczne: MEAN (MongoDB + Express + Angular + Node.js) oraz MERN (MongoDB + Express + React + Node.js).

Z drugiej strony, do Front-endu możemy podpiąć backend napisany w PHP. Korzystając z PHP częściej skorzystamy z PHPStorm’a jako środowiska pracy i bazy MySQL. PHP leży w backendzie platformy WordPress. Także jeśli tworzymy strony internetowe w oparciu o ten CMS, prędzej czy później pewnie poznamy czym jest PHP.

Przejdźmy dalej. Po lewo znajdziemy skupisko wokół Javy. Jeśli ktoś korzysta z Javy, jest większe prawdopodobieństwo, że używa jako środowiska programistycznego InteliiJ, Eclipse lub Android Studio (jeśli mówimy o programiście aplikacji mobilnych). Jeśli ktoś pisze aplikacje na Android’a może znać Kotlina oraz wykorzystywać Firebase (rozwiązanie typu Backend as a Service).

Wszystkie technologie, języki środowiska skupiają się w pewnych grupach, jak widać dość rozłącznych. Analizując wykres możemy wyciągnąć wniosek, czym warto się zainteresować, jeśli pracujemy w danym „obszarze” (ew. jeśli chcemy zacząć). Jednocześnie dla osób, które dopiero się rozglądają, fajnie to obrazuje różnorodność ścieżek, które można obrać. I że pewne decyzje warto podejmować mając pewne podstawy i zadawać konkretne pytania.

 

Work / Careers

Ciekawe wyniki dało pytanie: What Do Developers Hope To Be Doing in Five Years?

34% spośród respondentów uważa, że będzie w innej albo bardziej wyspecjalizostanej roli niż teraz.

25,7% widzi siebie w roli założyciela lub współzałożyciela własnej firmy.

Niespełna 20% będzie nadal robić to samo, co robi teraz.

10% widzi siebie w roli menadżera technicznego. 6,6% menadżera produktu lub projektu.

2,8% zakłada, że zmieni ścieżkę kariery na niezwiązaną z programowaniem, a 1,7% respondentów wybiera się na emeryturę ?

 

Większość programistów (72,8%) jest usatysfakcjnowana z rozwoju swojej kariery.

Niespełna 60% nie szuka pracy, ale jest otwarta na nowe wyzwania (opportunities). 24,3% nie myśli o zmianie pracy, a tylko niespełna 16% aktywnie rozgląda się za nową pracą.

Wśród respondentow 56,6% osób zmieniało pracę w ciągu ostatnich dwóch lat. Niespełna 19% zmieniało pracę więcej niż 4 lata temu.

Wniosek? Programiści są raczej zadowoleni z obranej ścieżki kariery, często jednak zmieniają samą pracę (co nie jest niczym dziwnym w tej branży).

 

A jakby się ktoś zastanawiał, czy warto uczyć się Git’a – korzysta z niego aż 87,2% respondentów ankiety!

Git – co, gdzie, jak i dlaczego? [Materiały na start]

 

No to lecimy z kolejną korelacją: Jak przedstawiają się zarobki w zależności od doświadczenia i obszaru specjalizacji?

Oczywiście widać związek pomiędzy latami doświadczenia a zarobkami. Jednak widać również, że Back-end developer z 6-letnim doświadczeniem zarobi zazwyczaj więcej niż Front-end developer. Designer nawet z niespełna 7-letnim doświadczeniem nie zarabia średnio tyle co Full Stack Developer. Mediany zarobków w Data Science oraz jako DevOps znacznie przekraczają średnią.

 

A jak się przedstawia sprawa z językami programowania?

Widać jak znacząco języki Perl, F# i Clojure odbiegają od reszty. Z drugiej strony PHP, C/C++ i Java (co przyznam – jest mocno zaskakujące). Nie da się nie zauważyć związku pomiędzy popularnością danego języka, a medianą zarobków. Im bardziej popularny (JavaScript, Python, Java), tym większa szansa, że mediana zarobków wyląduje pod średnią.

 

Jeśli chodzi o życie poza pracą 😀 Niektóre pytania były naprawdę ciekawe 😛

Prawie 30% spośród respondentów zadeklarowało posiadanie dzieci lub innych osób pod opieką.

Pomimo, że w sieci krążą opinię jakoby programiści byli nocnymi markami, analiza wyników Stackoverflow wskazuje na coś innego:

Aż 13,2% respondentów deklaruje spędzanie przed komputerem więcej niż 12 godzin dziennie.

Mimo to znajdują czas na ćwiczenia – tj. przeszło 62,8% programistów, w tym 13,7% ćwiczy codziennie.

Na ilu monitorach pracują programiści? Przeszło 65% na min. dwóch ? Polecam! 😛

 

Jak wygląda profil przeciętnego programisty?

25-34 lata (50,8%)

Mężczyzna (93%)

Brak dzieci (71,1%)

U mnie się zgadza tylko wiek 😛

 

Jak Ci się podobała analiza?