"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Jeg stilte meg selv det eksistensielle spørsmålet satt i tittelen i Grebenshchikovs formulering etter nok en runde med diskusjon i et av fellesskapene om hvorvidt en begynnende web-backend-utvikler trenger SQL-kunnskap, eller om ORM vil gjøre alt uansett. Jeg bestemte meg for å se etter svaret litt bredere enn bare om ORM og SQL, og i bunn og grunn prøve å systematisere hvem personene er som nå skal på intervju for junior- og mellomnivåutviklingsstillinger, hva deres historie er og hvilken verden de bor i. Generelt hadde jeg en mening, men den ble dannet av personlig ansettelseserfaring og tydelig tilpasset det lokale markedet. Generelt ble det interessant. Her er hva vi fant.

Global utviklerpopulasjon

For på en eller annen måte å nærme meg spørsmålet, bestemte jeg meg for å starte med å søke etter data om hvor mange utviklere det er i verden i dag og hvordan denne populasjonen endrer seg over tid.
Anslag i ulike kilder setter tallene i området fra 12 til 30 millioner mennesker. Besluttet å stoppe kl data fra SlashData, fordi deres metodikk virket ganske balansert og egnet for mine behov. I sin vurdering tok de hensyn til antall kontoer og repositories på Github, antall kontoer på StackOverflow, npm-kontoer og data fra offisielle kilder om sysselsetting i USA og Europa. De justerte også de resulterende tallene ved å bruke sine egne 16 studier, som inkluderte omtrent 20 000 personer for hver undersøkelse.

I følge SlashData var det omtrent 2018 millioner utviklere i verden i fjerde kvartal 18.9, hvorav 12.9 millioner var profesjonelle utviklere, det vil si at de lever av programmering. De som for tiden ikke er profesjonelle utviklere er folk som programmering er en hobby for, pluss de som for tiden studerer et yrke (ulike studenter og selvlærte). Vel, det vil si, her er et hint om størrelsen på gruppen som interesserer meg – 6 millioner mennesker. For å være ærlig er dette mer enn jeg forventet.

Den andre overraskelsen for meg var veksthastigheten for antall programmerere: fra andre kvartal 2017 til fjerde kvartal 2018 økte den fra 14.7 til de nevnte 18.9 millioner, eller økte med 21 % i 2018! Hvis jeg ble bedt om å estimere vekstraten for antall programmerere, vil jeg si at det er ca 5% per år med en liten økning i raten årlig. Og her viser det seg å være hele 20 %.

I tillegg anslår SlashData at befolkningen vil nå 2030 millioner innen 45. Det er lett å finne ut at dette innebærer en vekst på litt mer enn 8 % årlig, ikke 20 %, men de viser til en justering for å ta hensyn til internettpenetrasjon (for tiden ca. 57 % på verdensbasis). ifølge Statista) og flere andre faktorer, for eksempel antall utviklere per innbygger. Geografisk vokser antallet utviklere sterkest i India og Kina; India forventes å overta USA i antall utviklere innen 2023 (dette er allerede C# Hjørnedata).

Generelt vil det være mange programmerere, uansett hvordan du ser på det, fordi etterspørselen vokser. Forresten, om etterspørselen.

Hva er etterspurt?

For å estimere etterspørselen brukte jeg HackerRank-data for 2018 и 2019 år.

Når det gjelder programmeringsspråk, er det størst etterspørsel etter JavaScript, Python og Java i nesten alle bransjer, med unntak av maskinvare. I sistnevnte er det størst etterspørsel etter C/C++, noe som er forståelig; maskinvareprosjekter har fortsatt krav til ressursintensitet og ytelse til den tilsvarende programvaren.

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Når det gjelder rammeverk, er AngularJS, Node.js og React mest etterspurt, og de har det største gapet mellom tilbud og etterspørsel, noe som ser ut til å forklares med hastigheten JavaScript-økosystemet endrer seg med, fordi for eksempel for ExpressJS , overstiger tilbudet allerede etterspørselen.

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Når det gjelder kompetanse, forventer arbeidsgivere først og fremst problemløsningskompetanse fra kandidater. Omtrent 95 % av arbeidsgiverne nevner disse ferdighetene som viktige. Programmeringsspråklig kompetanse er på andreplass med 56%. Det er forresten ingen linje i det hele tatt med grunnleggende kunnskap om algoritmer, datastrukturer og annen informatikk, enten var det ikke i spørreskjemaet, eller det kreves ikke lenger akademisk kunnskap i stor skala.

Databasedesign er nødvendig av 23.2 % av selskapene under 100 personer, og 18.8 % av selskapene over 1000 personer. Ja, det ser ut som det handler om ORM og SQL! Den logiske, IMHO, forklaringen er at i store selskaper er det en dedikert rolle som DBA, som er ansvarlig for dette aspektet, og derfor er det mulig å myke opp kravene til utviklere og ansette raskere. Men med System Design er det omvendt: 37.0 % i små, 44.1 % i store. Det ser ut til at store burde ha dedikerte arkitekter, men kanskje er de rett og slett ikke i stand til å dekke antallet systemer som genereres. Eller de samme fundamentale algoritmene og datastrukturene legges inn i System Design, så blir det litt klarere.

Små selskaper trenger Framework Proficiency mer og mindre det nevnte systemdesignet, hvorfra vi kan trekke kapteinens konklusjon om at det er viktig for startups å lansere et fungerende produkt så raskt som mulig, og i morgen er det i morgen.

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Hva lærer elevene?

Her stolte jeg på data fra en annen HackerRank-forskning.
Det er viktig å tenke på at til tross for at programmering i en eller annen form undervises ved universiteter (jeg mener datavitenskap hovedfag), sa mer enn halvparten av de spurte at de også driver med egenutdanning.

Moderne studenter foretrekker å lære fra YouTube, mens eldre utviklere lener seg til veiledninger og bøker. Begge bruker StackOverflow aktivt. Jeg tilskriver dette at video er en kjent mediekanal for generasjon Z, mens representanter for generasjon Y fortsatt er i en tid uten bloggere.

De lærer det som etterspørres av arbeidsgivere: JavaScript, Java, Python. De indikerer at de kan C/C++, men dette er sannsynligvis fordi disse språkene brukes til undervisning ved universiteter. De lærer JS-rammeverk, men etterspørselen er betydelig høyere enn tilbudet, så tilsynelatende lærer de aktivt etter å ha funnet sin første jobb.

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Generelt, som forventet, lærer de det som etterspørres.

Studentene forventer faglig vekst fra sin første jobb, balansen mellom arbeid og privatliv kommer på andreplass (i noen land først), og interessante oppgaver kommer på tredjeplass.

Dynamikken til utviklerpopulasjonen etter programmeringsspråk og programvaretyper

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Nettapplikasjoner er på førsteplass med anslagsvis 16.9 millioner utviklere. Dette er SlashData igjen. Neste er Backend Services (13.6 millioner), mobilapplikasjoner (13.1 millioner) og desktop (12.3 millioner). AR/VR og IoT-sektorene blir gradvis mer populære, AI/ML/Data Science har vokst betydelig de siste to årene.

Javascript vokser raskest; fellesskapet er allerede det største, og vokste med 2018 millioner i 2.5 alene. De prøver til og med å skrive i det i IoT- og ML-sektorene.
Python vokste med 2018 millioner i 2.2 på grunn av den økende populariteten til ML, hvor det tradisjonelt er sterkt, samt på grunn av den enkle læringen og bekvemmeligheten til språket.

Java, C/C++ og C# vokser langsommere enn den totale utviklerpopulasjonen. De er nå sjelden programmeringsspråket som folk velger å begynne med. Etterspørselen etter utviklere her er mer eller mindre balansert med tilbud. Jeg tror Java ville vokst enda tregere hvis ikke for Android.

PHP er det nest mest populære programmeringsspråket for nettapplikasjoner, og det vokser også betydelig (med 32 % i 2018). Fellesskapet er estimert til 5.9 millioner utviklere. Til tross for det polariserende ryktet til PHP, er det ganske enkelt å lære og mye brukt.

Hvordan studerer dagens unge kandidater sammenlignet med tidligere generasjoner?

HackerRank-data igjen. De som nå er mellom 38 og 53 viser spill som sine første prosjekter.

Forresten, jeg bekrefter at mitt første mer eller mindre fungerende prosjekt var "tic-tac-toe" opptil fem på rad med et ubegrenset felt, det andre var et spill på 15. Jeg skrev alt dette på BK 010-01, det var Vilnius grunnleggende, aka BASIC-86 og fokal. Eh.

Moderne nybegynnere programmerere (opptil 21 år) skriver kalkulatorer og nettsteder som sine første prosjekter.

Blant representanter for generasjon X begynte nesten halvparten å skrive kode før fylte 16 år, mange gjorde det fra 5 til 10 år (hovedsakelig de som nå er mellom 35 og 45 år). Det er mer eller mindre klart hvorfor: det var få informasjonskilder, og for å bli programmerer måtte man virkelig ønske det, og de som virkelig ønsket det begynte å programmere tidlig. De som ikke ønsket det så mye har mest sannsynlig nå et annet yrke, så bildet i sosiologi er akkurat slik.

"Hvor er de unge punkerne som vil utslette oss fra jordens overflate?"

Dagens unge kandidater begynner bare 20 % av tiden å programmere før de er 16 år, de fleste et sted mellom 16 og 20. Men det er også mye lettere for dem å lære, nå er det mye mer tilgjengelig.

Funn

Jeg har fortsatt ikke funnet et konkret svar på spørsmålet om en begynnende web-backend-utvikler trenger SQL i dag, men jeg har korrigert ideen min om den moderne populasjonen av programmerere.

Den neste generasjonen av utviklere er vanlige mennesker, på noen måter ligner de de forrige; boligproblemet bare skjemte dem bort. De tilfredsstiller etterspørselen som skapes av arbeidsgivere. Terskelen for å gå inn i yrket har blitt lavere på grunn av mer praktiske verktøy og rammer som lar deg raskt oppnå resultater. Flere mennesker blir nå programmerere; den digitale generasjonen (Generasjon Z) har levd i teknologi siden fødselen; for dem er det et vanlig yrke, ikke verre enn andre.

De som vet at L1 cache-latens er ~4 sykluser, og at det er bedre å ikke krasje cache-linjer unødvendig, blir mindre som en prosentandel av den totale populasjonsstørrelsen. De bør imidlertid ikke bekymre seg for å få jobb; noen må tross alt skrive ting på lavt nivå der det fortsatt trengs. På samme måte bør de som har dyp grunnleggende kunnskap innen systemdesign og tilegnet seg den i blodige praktiske kamper, og ikke bare følger en lastekult, ikke bekymre seg. Fordi det vil være flere mennesker i team som kan "bare skrive kode" og "bare" bruke rammeverk, og for å "unngå den uutholdelige smerten av år brukt målløst levd" (c) vil de trenge å bli balansert av nettopp slike mennesker .

Myke ferdigheter migrerer gradvis fra kategorien ønskelig til obligatorisk (jeg har ingen objektive data som bekrefter dette, bare praktisk observasjon). Antallet programmerere vokser, og de må alle styres for å oppnå resultater, enten gjennom direkte eller indirekte kontroll, og det er nettopp dette som trengs for myke ferdigheter.

"Enter IT" virker for meg å være en lokal regional historie, typisk for de stedene der inntekten til en programmerer skiller seg betydelig fra inntekten til en sammenlignbar "ikke-IT"-spesialist. I Minsk, hvor jeg bor, er dette generelt en massebevegelse, hver dag ser jeg annonser for nye kurs om hvordan jeg kommer inn i den ettertraktede IT-en, og rengjøringsselskaper retter seg mot programmerere med beskjeden «Forstår du koden i dette bildet? Dette betyr at du har råd til å ikke rengjøre leiligheten din, vi vil gjøre alt for deg." Det samme skjer tydeligvis i noen India. Jeg har heller ingen data som beviser dette.

Generelt sett truer ingenting etter min mening befolkningen av programmerere. Det er ingen vits i å tulle om det faktum at du ikke kan finne ekte programmerere om dagen, og at kandidater ofte «vet ingenting». De er like smarte og dyktige, kanskje til og med smartere og dyktigere enn "ekte programmerere"; de tilegner seg rett og slett kunnskapen som et raskt voksende marked krever av dem og utsetter det de ennå ikke har trengt og ikke vil gi rett til fordel til senere. nå. De vil lære når de trenger det, fordi de fortsatt ønsker å lære. Sannsynligvis vil ikke alle være i stand til dette, men ikke alle vil trenge det heller; i overskuelig fremtid vil markedet lett akseptere folk som raskt kan sette sammen et annet applikasjonskonsept ved hjelp av et eller annet rammeverk.

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Krever webbackender-intervjuer SQL-kunnskap?

  • Ja, jeg krever det fordi jeg trenger det til jobb

  • Ja, det gjør jeg, selv om det sjelden er nødvendig på jobb.

  • Nei, jeg krever det ikke, vi har NoSQL

  • Nei, jeg krever det ikke, ORM vil gjøre alt

320 brukere stemte. 230 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar