„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Pytanie egzystencjalne zawarte w tytule w sformułowaniu Grebenshchikova zadałem sobie po kolejnej rundzie dyskusji w jednej ze społeczności na temat tego, czy początkujący web backend developer potrzebuje wiedzy SQL, czy też ORM i tak wszystko zrobi. Postanowiłem poszukać odpowiedzi nieco szerzej niż tylko o ORM i SQL, a w zasadzie spróbować usystematyzować, kim są ludzie, którzy obecnie idą na rozmowy kwalifikacyjne na stanowiska rozwojowe niższego i średniego szczebla, jaka jest ich historia i w jakim świecie żyją. żyć w. Generalnie miałem swoje zdanie, ale zostało ono ukształtowane na podstawie osobistych doświadczeń rekrutacyjnych i wyraźnie dostosowane do lokalnego rynku. Ogólnie zrobiło się ciekawie. Oto, co znaleźliśmy.

Globalna populacja programistów

Aby jakoś podejść do pytania, postanowiłem zacząć od wyszukania danych o tym, ilu jest obecnie programistów na świecie i jak ta populacja zmienia się w czasie.
Szacunki w różnych źródłach podają liczby w przedziale od 12 do 30 milionów osób. Postanowiłem zatrzymać się na dane ze SlashData, ponieważ ich metodologia wydawała się dość wyważona i odpowiednia dla moich potrzeb. W swojej ocenie wzięli pod uwagę liczbę kont i repozytoriów na Githubie, liczbę kont na StackOverflow, konta npm oraz dane z oficjalnych źródeł na temat zatrudnienia w USA i Europie. Dostosowali także uzyskane liczby na podstawie własnych 16 badań, które objęły około 20 000 osób w każdym badaniu.

Według SlashData w czwartym kwartale 2018 roku na świecie było około 18.9 miliona programistów, z czego 12.9 miliona to programiści profesjonalni, czyli zarabiający na życie programowaniem. Osoby, które obecnie nie są zawodowymi programistami, to osoby, dla których programowanie jest hobby, a także osoby, które aktualnie studiują zawód (różni studenci i samouki). No cóż, oto wskazówka co do wielkości grupy, która mnie interesuje - 6 milionów osób. Szczerze mówiąc, to więcej, niż się spodziewałem.

Drugim zaskoczeniem była dla mnie dynamika wzrostu liczby programistów: od drugiego kwartału 2017 do czwartego kwartału 2018 wzrosła z 14.7 do wspomnianych 18.9 mln, czyli wzrosła o 21% w 2018 roku! Gdybym został poproszony o oszacowanie tempa wzrostu liczby programistów, powiedziałbym, że jest to około 5% rocznie przy niewielkim wzroście tempa rocznie. A tutaj okazuje się, że jest to aż 20%.

Ponadto SlashData szacuje, że do 2030 roku liczba ludności osiągnie 45 milionów. Łatwo się domyślić, że oznacza to wzrost o nieco ponad 8% rocznie, a nie 20%, ale odnoszą się one do korekty uwzględniającej penetrację Internetu (obecnie około 57% na całym świecie). według Statisty) i kilka innych czynników, takich jak liczba deweloperów na mieszkańca. Geograficznie liczba deweloperów rośnie najsilniej w Indiach i Chinach; do 2023 roku Indie mają wyprzedzić Stany Zjednoczone pod względem liczby deweloperów (to już Dane narożne C#).

Ogólnie rzecz biorąc, programistów będzie wielu, jakkolwiek na to spojrzeć, ponieważ popyt rośnie. Nawiasem mówiąc, o popycie.

Na co jest popyt?

Do oszacowania popytu wykorzystałem dane HackerRank dla 2018 и 2019 roku.

Jeśli chodzi o języki programowania, największe zapotrzebowanie występuje w JavaScript, Python i Java w prawie wszystkich branżach, z wyjątkiem sprzętu komputerowego. W tym drugim przypadku największe zapotrzebowanie występuje w języku C/C++, co jest zrozumiałe; projekty sprzętowe nadal mają wymagania dotyczące intensywności zasobów i wydajności odpowiedniego oprogramowania.

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Jeśli chodzi o frameworki, największym popytem cieszą się AngularJS, Node.js i React i to na nich występuje największa luka między podażą a popytem, ​​co wydaje się tłumaczyć szybkością, z jaką zmienia się ekosystem JavaScript, bo np. dla ExpressJS podaż już przewyższa popyt.

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Jeśli chodzi o kompetencje, pracodawcy oczekują od kandydatów przede wszystkim umiejętności rozwiązywania problemów. Około 95% pracodawców wymienia te umiejętności jako ważne. Na drugim miejscu znajduje się znajomość języka programowania z wynikiem 56%. Swoją drogą nie ma tu żadnej granicy z podstawową wiedzą z zakresu algorytmów, struktur danych i innej informatyki, albo tego nie było w ankiecie, albo wiedza akademicka nie jest już wymagana na dużą skalę.

Projektowanie baz danych jest potrzebne w 23.2% firm poniżej 100 osób i 18.8% firm powyżej 1000 osób. Tak, wygląda na to, że chodzi o ORM i SQL! Logicznym wyjaśnieniem IMHO jest to, że w dużych firmach wydzielona jest rola DBA, który jest odpowiedzialny za ten aspekt, dzięki czemu możliwe jest złagodzenie wymagań wobec programistów i szybsze zatrudnianie. Ale w przypadku System Design jest odwrotnie: 37.0% w małych, 44.1% w dużych. Wydawać by się mogło, że duże powinny mieć dedykowanych architektów, ale być może po prostu nie są w stanie pokryć liczby generowanych systemów. Lub te same podstawowe algorytmy i struktury danych zostaną wprowadzone do projektu systemu, wtedy wszystko stanie się trochę jaśniejsze.

Małym firmom coraz mniej potrzeba Framework Proficiency wspomnianego System Design, z którego możemy wyciągnąć kapitański wniosek, że dla startupów ważne jest, aby jak najszybciej wypuścić jakoś działający produkt, a jutro będzie jutro.

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Czego uczą się uczniowie?

Tutaj oparłem się na danych od innego Badanie HackerRank.
Warto wziąć pod uwagę, że pomimo tego, że programowania w tej czy innej formie uczy się na uczelniach wyższych (mam na myśli kierunki informatyki), to ponad połowa ankietowanych stwierdziła, że ​​zajmuje się także samokształceniem.

Współcześni studenci wolą uczyć się z YouTube, podczas gdy starsi programiści skłaniają się ku samouczkom i książkom. Oba aktywnie korzystają ze StackOverflow. Wiążę to z faktem, że wideo jest kanałem medialnym znanym pokoleniu Z, podczas gdy przedstawiciele pokolenia Y wciąż żyją w epoce bez blogerów.

Uczą tego, czego domagają się pracodawcy: JavaScript, Java, Python. Wskazują, że znają C/C++, ale dzieje się tak prawdopodobnie dlatego, że języków tych używa się do nauczania na uczelniach. Uczą frameworków JS, ale popyt jest znacznie większy niż podaż, więc najwyraźniej aktywnie się uczą po znalezieniu pierwszej pracy.

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Ogólnie rzecz biorąc, zgodnie z oczekiwaniami, uczą tego, na co jest zapotrzebowanie.

Studenci oczekują rozwoju zawodowego od pierwszej pracy, równowaga między życiem zawodowym a prywatnym jest na drugim miejscu (w niektórych krajach na pierwszym miejscu), a ciekawe zadania na trzecim miejscu.

Dynamika populacji programistów według języków programowania i typów oprogramowania

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Na pierwszym miejscu znajdują się aplikacje internetowe, których liczba szacuje się na 16.9 miliona. To znowu SlashData. Następne są usługi backendowe (13.6 mln), aplikacje mobilne (13.1 mln) i desktopowe (12.3 mln). Sektory AR/VR i IoT stopniowo zyskują na popularności, AI/ML/Data Science znacząco rozwinęło się w ciągu ostatnich dwóch lat.

Najszybciej rozwija się JavaScript, jego społeczność jest już największa i w samym 2018 roku powiększyła się o 2.5 miliona. Próbują się w nim nawet wpisać w sektory IoT i ML.
Liczba Pythonów wzrosła w 2018 roku o 2.2 miliona ze względu na rosnącą popularność ML, w którym jest on tradycyjnie mocny, a także ze względu na łatwość nauki i wygodę języka.

Języki Java, C/C++ i C# rozwijają się wolniej niż ogólna populacja programistów. Obecnie rzadko są to języki programowania, od których ludzie decydują się na rozpoczęcie pracy. Popyt na deweloperów jest tu mniej więcej zrównoważony podażą. Myślę, że Java rozwijałaby się jeszcze wolniej, gdyby nie Android.

PHP jest drugim najpopularniejszym językiem programowania aplikacji internetowych i również znacząco rośnie (o 32% w 2018 roku). Jego społeczność szacowana jest na 5.9 miliona programistów. Pomimo polaryzującej reputacji PHP, jest on dość łatwy do nauczenia i szeroko stosowany.

Jak uczą się dzisiejsi młodzi kandydaci w porównaniu do poprzednich pokoleń?

Ponownie dane HackerRank. Ci, którzy mają teraz od 38 do 53 lat, jako swoje pierwsze projekty wymieniają gry.

Swoją drogą potwierdzam, że moim pierwszym mniej więcej działającym projektem było „kółko i krzyżyk” do pięciu z rzędu z nieograniczonym polem, drugim była gra w 15. Wszystko to napisałem na BC 010-01, tam było Wilno podstawowe, czyli BASIC-86 i ogniskowy. Ech.

Współcześni początkujący programiści (do 21 roku życia) jako swoje pierwsze projekty piszą kalkulatory i strony internetowe.

Wśród przedstawicieli pokolenia X prawie połowa zaczęła pisać kod przed 16. rokiem życia, wielu zrobiło to w wieku od 5 do 10 lat (głównie ci, którzy obecnie mają od 35 do 45 lat). Mniej więcej jasne jest, dlaczego: źródeł informacji było niewiele, a żeby zostać programistą, trzeba było naprawdę tego bardzo chcieć, a ci, którzy naprawdę tego chcieli, zaczynali programować wcześnie. Ci, którzy tak bardzo tego nie chcieli, najprawdopodobniej mają teraz inny zawód, więc obraz w socjologii wygląda dokładnie tak.

„Gdzie są młodzi punki, którzy zetrą nas z powierzchni ziemi?”

Dzisiejsi młodzi kandydaci tylko w 20% przypadków rozpoczynają programowanie przed 16. rokiem życia, większość w wieku od 16 do 20 lat. Ale jest im też znacznie łatwiej się uczyć, teraz jest to znacznie bardziej dostępne.

odkrycia

Nadal nie znalazłem konkretnej odpowiedzi na pytanie, czy początkujący web backend developer potrzebuje dziś SQL, ale poprawiłem swoje wyobrażenie o współczesnej populacji programistów.

Kolejne pokolenie deweloperów to zwykli ludzie, w pewnym sensie podobni do poprzednich, problem mieszkaniowy tylko ich zepsuł. Zaspokajają popyt, jaki tworzą pracodawcy. Próg wejścia do zawodu obniżył się dzięki wygodniejszym narzędziom i frameworkom, które pozwalają szybko osiągnąć rezultaty. Coraz więcej osób zostaje programistami, pokolenie cyfrowe (Generacja Z) od urodzenia żyje w technologii, dla nich jest to zawód powszechny, nie gorszy od innych.

Ci, którzy wiedzą, że opóźnienie pamięci podręcznej L1 wynosi ~ 4 cykle i że lepiej niepotrzebnie nie zawieszać linii pamięci podręcznej, zmniejszają się jako procent całkowitego rozmiaru populacji. Nie powinni się jednak martwić o znalezienie pracy, ktoś przecież musi pisać rzeczy niskiego szczebla tam, gdzie jest to nadal potrzebne. Podobnie ci, którzy posiadają głęboką, podstawową wiedzę na temat projektowania systemów i zdobyli ją w krwawych praktycznych bitwach, a nie tylko wyznają kult cargo, nie powinni się martwić. Ponieważ w zespołach będzie więcej osób, które potrafią „po prostu pisać kod” i „tylko” używać frameworków, a także aby „uniknąć rozdzierającego bólu lat spędzonych bez celu” (c) trzeba będzie je równoważyć właśnie takimi osobami .

Kompetencje miękkie stopniowo migrują z kategorii pożądanych do obowiązkowych (nie mam obiektywnych danych, które by to potwierdzały, jedynie obserwacja praktyczna). Rośnie liczba programistów i trzeba ich wszystkich ukierunkować na osiąganie wyników, czy to poprzez bezpośrednią, czy pośrednią kontrolę, a właśnie do tego potrzebne są kompetencje miękkie.

„Enter IT” wydaje mi się lokalną, regionalną historią, typową dla tych lokalizacji, gdzie dochody programisty znacznie różnią się od dochodów porównywalnego specjalisty „nie-IT”. W Mińsku, gdzie mieszkam, jest to na ogół ruch masowy, codziennie widzę reklamy nowych kursów, jak dostać się do upragnionego IT, a firmy sprzątające kierują do programistów komunikat „Czy rozumiesz kod na tym obrazku? Oznacza to, że możesz sobie pozwolić na to, aby nie sprzątać swojego mieszkania, my zrobimy wszystko za Ciebie.” To samo najwyraźniej dzieje się w niektórych Indiach. Nie mam też danych, które by to potwierdzały.

Generalnie moim zdaniem nic nie zagraża populacji programistów. Nie ma co paplać, że na co dzień nie można znaleźć prawdziwych programistów, a kandydaci często „nic nie wiedzą”. Są tak samo inteligentni i zdolni, a może nawet mądrzejsi i zdolni niż „prawdziwi programiści”, po prostu zdobywają wiedzę, której wymaga od nich szybko rozwijający się rynek i odkładają na później to, czego jeszcze nie potrzebowali i nie przyniosą odpowiednich korzyści Teraz. Będą się uczyć, kiedy zajdzie taka potrzeba, ponieważ nadal chcą się uczyć. Prawdopodobnie nie każdy będzie do tego zdolny, ale też nie każdy będzie tego potrzebował; w dającej się przewidzieć przyszłości rynek bez problemu przyjmie osoby, które w jakimś frameworku będą w stanie szybko ułożyć kolejną koncepcję aplikacji.

W ankiecie mogą brać udział tylko zarejestrowani użytkownicy. Zaloguj się, Proszę.

Czy rozmowy kwalifikacyjne z backenderem internetowym wymagają znajomości języka SQL?

  • Tak, żądam tego, bo jest mi to potrzebne do pracy

  • Tak, choć rzadko jest to potrzebne w pracy.

  • Nie, nie potrzebuję tego, mamy NoSQL

  • Nie, nie potrzebuję tego, ORM zrobi wszystko

Głosowało 320 użytkowników. 230 użytkowników wstrzymało się od głosu.

Źródło: www.habr.com

Dodaj komentarz