Após a próxima rodada de discussão em uma das comunidades, fiz a pergunta existencial, colocada no cabeçalho do texto de Grebenshchikov, se o desenvolvedor iniciante de back-end da web precisava de conhecimento de SQL ou se o ORM faria tudo isso. Decidi pesquisar a resposta um pouco mais do que apenas sobre ORM e SQL e, em princípio, tentar sistematizar quem são as pessoas que agora estão indo para entrevistas em cargos de nível júnior e médio, qual é a história e o mundo em que vivem. Em geral, eu tinha uma opinião, mas era formada por experiência em contratação pessoal e estava claramente ajustada para o mercado local. Em geral, ficou curioso. Aqui está o que eu consegui encontrar.
População global de desenvolvedores
Para abordar de alguma forma a questão, decidi começar pesquisando dados sobre quantos desenvolvedores no mundo estão atualmente em princípio e como essa população está mudando ao longo do tempo.
Estimativas em várias fontes se referem a números em um garfo de 12 a 30 milhões de pessoas. Decidi interromper os
dados do SlashData , porque a metodologia deles me parecia bastante equilibrada e adequada às minhas necessidades. Na avaliação, eles levaram em conta o número de contas e repositórios no Github, o número de contas no StackOverflow, contas npm e dados de fontes oficiais sobre emprego nos EUA e na Europa. Eles também ajustaram os números usando seus próprios 16 estudos, que cobriram aproximadamente 20.000 pessoas para cada pesquisa.
Segundo o SlashData, no quarto trimestre de 2018 havia aproximadamente 18,9 milhões de desenvolvedores no mundo, dos quais 12,9 milhões eram profissionais, ou seja, ganhavam a vida com a programação. Aqueles que atualmente não são desenvolvedores profissionais são pessoas para quem a programação é um hobby, além daqueles que atualmente estudam a profissão (diversos alunos e autodidatas). Bem, isso é uma dica do tamanho do grupo que me interessa - 6 milhões de pessoas. Honestamente, isso é mais do que eu esperava.
A segunda surpresa para mim foi a taxa de crescimento do número de programadores: do segundo trimestre de 2017 ao quarto trimestre de 2018, aumentou de 14,7 para os 18,9 milhões mencionados, ou aumentou 21% em 2018! Se me pedissem para estimar a taxa de crescimento do número de programadores, diria que é cerca de 5% ao ano, com um ligeiro aumento na taxa anualmente. E aqui acontece até 20%.
Além disso, o SlashData estima que em 2030 a população chegará a 45 milhões. É fácil calcular que isso implica um crescimento de pouco mais de 8% ao ano, e não de 20%, mas eles se referem a uma correção que leva em consideração a penetração da Internet (agora cerca de 57% no mundo, segundo
Statista ) e vários outros fatores, por exemplo, o número de desenvolvedores por per capita. Geograficamente, o número de desenvolvedores na Índia e na China está crescendo mais; espera-se que a Índia ultrapasse os Estados Unidos no número de desenvolvedores até 2023 (esses já são
dados de C # Corner ).
Em geral, haverá muitos programadores, o que quer que se diga, porque a demanda está crescendo. Falando em demanda.
Qual é a demanda?
Para estimar a demanda, usei os dados do HackerRank para
2018 e
2019 .
Nas linguagens de programação, a maior demanda por JavaScript, Python e Java está em quase todos os setores, com exceção do Hardware de Computador. Neste último, a maior demanda por C / C ++, que é compreensível, em projetos de hardware, ainda existem requisitos para o consumo de recursos e a produtividade do software correspondente.

De acordo com os frameworks, AngularJS, Node.js e React estão em maior demanda, com a maior diferença de oferta e demanda de acordo com eles, o que parece ser explicado pela velocidade com que o ecossistema JavaScript está mudando, porque, por exemplo, com o ExpressJS, o suprimento já excede a demanda.

Por competência, os empregadores esperam que os candidatos, em primeiro lugar, tenham habilidades em solução de problemas. Cerca de 95% dos empregadores mencionam essas habilidades como importantes. Proficiência em Linguagem de Programação em segundo lugar, com 56%. A propósito, não há linhas com conhecimento fundamental de algoritmos, estruturas de dados e outras ciências da computação, ou não no questionário, ou o conhecimento acadêmico em massa não é mais necessário.
O Design de banco de dados precisa de 23,2% das empresas com até 100 pessoas e 18,8% das empresas com mais de 1000 pessoas. Sim, aqui é sobre ORM e SQL! A explicação lógica, IMHO, é que nas grandes empresas existe uma função DBA dedicada, responsável por esse aspecto e, portanto, é possível suavizar os requisitos dos desenvolvedores e contratar mais rapidamente. Mas com o System Design, pelo contrário: 37,0% nos pequenos, 44,1% nos grandes. Parece que os grandes arquitetos devem ser distinguidos, mas talvez eles simplesmente não sejam capazes de cobrir o número de sistemas gerados. Ou, ao mesmo tempo em que investem no System Design, os algoritmos e estruturas de dados fundamentais, isso se torna um pouco mais claro.
As pequenas empresas precisam menos da Estrutura de Proficiência e do Projeto de Sistema acima mencionado, a partir do qual podemos concluir que é importante para as startups lançar um produto que funcione o mais rápido possível, e amanhã será amanhã.

O que os alunos aprendem?
Aqui,
contei com os dados de outro
estudo do HackerRank .
É importante considerar que, apesar de a programação de uma forma ou de outra ser ministrada nas universidades (refiro-me às especialidades em Ciência da Computação), mais da metade dos entrevistados disseram que também estão envolvidos com a auto-educação.
Os estudantes modernos preferem estudar no YouTube, enquanto os desenvolvedores mais antigos tendem a tutoriais e livros. Ambos usam ativamente o StackOverflow. Atribuo isso ao fato de que o vídeo é o canal de mídia usual para a Geração Z, enquanto representantes da Geração Y ainda encontraram a era sem blogueiros.
Aprenda o que os empregadores exigem: JavaScript, Java, Python. Eles indicam que conhecem C / C ++, mas isso provavelmente ocorre porque esses idiomas são usados para o ensino nas universidades. Eles aprendem estruturas de JS, mas a demanda é significativamente maior que a oferta, portanto, aparentemente eles são ensinados ativamente depois de encontrar o primeiro emprego.

Em geral, o que se espera que seja ensinado é o que está em demanda.
Os alunos do primeiro emprego esperam crescimento principalmente profissional, em segundo lugar (em alguns países no primeiro) equilíbrio entre vida profissional e trabalho, no terceiro - tarefas interessantes.
Dinâmica populacional de desenvolvedores por linguagens de programação e tipos de software

Os aplicativos Web vêm em primeiro lugar com um número estimado de 16,9 milhões de desenvolvedores. Estes são novamente dados SlashData. Em seguida, estão os serviços de back-end (13,6 milhões), aplicativos móveis (13,1 milhões) e desktop (12,3 milhões). Os setores de AR / VR e IoT estão gradualmente ganhando popularidade; a AI / ML / Data Science cresceu significativamente nos últimos dois anos.
O Javascript está crescendo mais rápido, sua comunidade já é a maior, apenas em 2018 cresceu 2,5 milhões. Eles até tentam escrever nos setores de IoT e ML.
O Python em 2018 cresceu 2,2 milhões devido à crescente popularidade do ML, onde é tradicionalmente forte, bem como devido à facilidade de desenvolvimento e à conveniência da linguagem.
Java, C / C ++ e C # estão crescendo a uma taxa mais lenta que a população geral de desenvolvedores. Agora eles raramente são a linguagem de programação que as pessoas preferem começar. A demanda por desenvolvedores aqui é mais ou menos equilibrada com a oferta. Eu acho que o Java iria crescer ainda mais devagar, se não fosse o Android.
O PHP é a segunda linguagem de programação de aplicativos Web mais popular e também está crescendo significativamente (32% em 2018). Sua comunidade é estimada em 5,9 milhões de desenvolvedores. Apesar da opinião polar sobre a reputação do PHP, é bastante fácil de aprender e generalizado.
Como os jovens candidatos modernos estudam em comparação com as gerações passadas
Dados do HackerRank novamente. Quem tem entre 38 e 53 anos indica jogos com seus primeiros projetos.
A propósito, confirmo que meu primeiro projeto mais ou menos funcional foi “tic-tac-toe” até cinco seguidas com um campo ilimitado, o segundo - um jogo aos 15. Escrevi tudo isso em
BC 010-01 , havia um
Vilnius BASIC , também conhecido como BASIC- 86 e focal. Eh.
Programadores iniciantes modernos (antes dos 21 anos) escrevem calculadoras e sites como seus primeiros projetos.
Entre os representantes da geração X, quase metade começou a escrever código antes dos 16 anos, muitos em geral entre 5 e 10 anos (principalmente aqueles com 35 a 45 anos). É mais ou menos compreensível o porquê: havia poucas fontes de informação e, para se tornar um programador, era realmente necessário realmente querer isso, e aqueles que realmente queriam começar a programar mais cedo. Aqueles que não queriam tanto, até agora, provavelmente têm uma profissão diferente, então o quadro da sociologia é exatamente isso.

Os jovens candidatos de hoje em apenas 20% dos casos começam a programar antes dos 16 anos, a maioria deles entre os dias 16 e 20. Mas é muito mais fácil para eles aprenderem, agora é muito mais acessível.
Conclusões
Não encontrei uma resposta concreta reforçada para a questão de saber se um desenvolvedor iniciante de back-end da Web SQL é necessário hoje, mas ele corrigiu sua idéia da população moderna de programadores.
A próxima geração de desenvolvedores - pessoas comuns, um pouco reminiscentes da
questão habitacional anterior
, apenas os estragaram . Eles atendem à demanda criada pelos empregadores. O limiar para ingressar na profissão se tornou mais baixo devido às ferramentas e estruturas mais convenientes que permitem obter resultados rapidamente. Agora, mais pessoas estão se tornando programadores, a geração digital (geração Z) vive em tecnologia desde o nascimento, para eles é uma profissão regular, não é pior do que outras.
Aqueles que sabem que o cache do Lensi L1 tem ~ 4 ciclos e que é melhor não disparar linhas de cache desnecessariamente, fica menor como uma porcentagem do tamanho total da população. No entanto, eles não devem se preocupar com o emprego, alguém no final deve escrever coisas de baixo nível, onde isso ainda é necessário. Assim como você não deve se preocupar, aqueles que têm profundo conhecimento fundamental em design de sistemas e os adquiriram em sangrentas batalhas práticas, e não apenas seguem o culto à carga. Como aqueles que serão capazes de "apenas escrever código" e "apenas" usar as estruturas nas equipes se tornarão mais e, para "não serem dolorosamente dolorosos por anos gastos sem rumo" (c), eles precisarão ser equilibrados apenas por essas pessoas.
Soft skills da categoria desejável migram gradualmente para obrigatório (para confirmar isso, não tenho dados objetivos, apenas observação prática). O número de programadores está crescendo, e todos eles precisam ser direcionados para alcançar um resultado, embora por controle direto, embora indireto, mas para isso apenas precisam de habilidades pessoais.
“Enter IT” me parece ser uma história regional local, característica daqueles locais em que a renda de um programador é significativamente diferente da renda de um especialista comparável em qualificação a “não IT”. Em Minsk, onde eu moro, geralmente é um movimento de massas. Todos os dias vejo anúncios dos próximos cursos sobre como entrar na cobiçada TI e as empresas de limpeza visam os programadores com a mensagem “Você entende o código nesta imagem? Para que você não possa limpar o apartamento, faremos tudo por você. Aparentemente, o mesmo está acontecendo em algum tipo de Índia. Para provar isso, eu também não tenho.
Em geral, a população de programadores não está em minha opinião ameaçada. Não vale a pena dizer que programadores de verdade não estão satisfeitos com o dia e a noite e que os candidatos o tempo todo "não sabem nada". Eles são igualmente inteligentes e capazes, talvez até mais inteligentes e mais capazes do que os “verdadeiros programadores”; eles simplesmente adquirem o conhecimento que um mercado em expansão exige deles e deixam de lado para depois o que eles ainda não precisavam e não trarão benefícios agora. Eles aprenderão quando necessário, porque ainda querem aprender. Provavelmente, nem todo mundo será capaz disso, mas nem todo mundo precisará, o mercado, em um futuro próximo, facilitará a aceitação de pessoas capazes de montar rapidamente outro conceito de aplicativo em alguma estrutura.