Después de la siguiente ronda de discusión en una de las comunidades, hice la pregunta existencial, colocada en el encabezado de la redacción de Grebenshchikov, sobre si el conocimiento web SQL es necesario para un desarrollador de back-end web o si ORM lo hará todo. Decidí buscar la respuesta un poco más amplia que solo sobre ORM y SQL, y, en principio, tratar de sistematizar quiénes son las personas que ahora van a entrevistas en puestos de desarrollo junior y medio, cuál es su historia y en qué mundo viven. En general, tenía una opinión, pero se formó por experiencia de contratación personal y se ajustó claramente para el mercado local. En general, se volvió curioso. Esto es lo que logré encontrar.
Población global de desarrolladores
Para abordar el problema de alguna manera, decidí comenzar buscando datos sobre cuántos desarrolladores en el mundo hay ahora en principio y cómo esta población está cambiando con el tiempo.
Las estimaciones en diversas fuentes se refieren a números en una bifurcación de 12 a 30 millones de personas. Decidí detenerme en los
datos de SlashData , porque su metodología me parecía bastante equilibrada y adecuada para mis necesidades. En la evaluación, tuvieron en cuenta la cantidad de cuentas y repositorios en Github, la cantidad de cuentas en StackOverflow, cuentas npm y datos de fuentes oficiales sobre empleo en los EE. UU. Y Europa. También ajustaron los números usando sus propios 16 estudios, que cubrieron aproximadamente 20,000 personas para cada encuesta.
Según SlashData, resultó que en el cuarto trimestre de 2018 había aproximadamente 18.9 millones de desarrolladores en el mundo, 12.9 millones de los cuales eran profesionales, es decir, se ganaban la vida programando. Aquellos que actualmente no son desarrolladores profesionales son personas para quienes la programación es un pasatiempo, además de aquellos que actualmente estudian una profesión (estudiantes diversos y autodidactas). Bueno, eso es una pista sobre el tamaño del grupo que me interesa: 6 millones de personas. Honestamente, esto es más de lo que esperaba.
La segunda sorpresa para mí fue la tasa de crecimiento de la cantidad de programadores: desde el segundo trimestre de 2017 hasta el cuarto trimestre de 2018, aumentó de 14.7 a los mencionados 18.9 millones, ¡o aumentó en un 21% en 2018! Si me pidieran que estimara la tasa de crecimiento de la cantidad de programadores, diría que es aproximadamente el 5% anual con un ligero aumento en la tasa anual. Y aquí resulta hasta un 20%.
Además, SlashData estima que para 2030 la población alcanzará los 45 millones. Es fácil calcular que esto implica un crecimiento de poco más del 8% anual, y nada del 20%, pero se refieren a una corrección teniendo en cuenta la penetración de Internet (ahora alrededor del 57% en el mundo según
Statista ) y varios otros factores, por ejemplo, el número de desarrolladores por per capita Geográficamente, el número de desarrolladores en India y China está creciendo más, se espera que India supere a Estados Unidos en el número de desarrolladores para 2023 (esto ya es información de
C # Corner ).
En general, habrá muchos programadores, lo que sea que se diga, porque la demanda está creciendo. Hablando de demanda.
¿Para qué es la demanda?
Para estimar la demanda, utilicé los datos de HackerRank para
2018 y
2019 .
En los lenguajes de programación, la mayor demanda de JavaScript, Python y Java se encuentra en casi todas las industrias, con la excepción del hardware informático. En este último, la mayor demanda de C / C ++, que es comprensible, en proyectos de hardware, todavía hay requisitos para el consumo de recursos y la productividad del software correspondiente.

Según los marcos, AngularJS, Node.js y React tienen la mayor demanda, con la mayor brecha de oferta y demanda según ellos, lo que parece explicarse por la velocidad con la que está cambiando el ecosistema de JavaScript, porque, por ejemplo, con ExpressJS, la oferta ya supera la demanda.

Por competencia, los empleadores esperan, en primer lugar, candidatos para las habilidades de resolución de problemas. Alrededor del 95% de los empleadores mencionan estas habilidades como importantes. Dominio del lenguaje de programación en segundo lugar con 56%. Por cierto, no hay líneas con conocimiento fundamental de algoritmos, estructuras de datos y otras ciencias de la computación, ya sea que no estén en el cuestionario, o ya no se requiere conocimiento académico masivo.
El diseño de bases de datos necesita el 23,2% de las empresas de hasta 100 personas y el 18,8% de las empresas de más de 1000 personas. Sí, aquí se trata de ORM y SQL! La explicación lógica, en mi humilde opinión, es que en las grandes empresas existe un rol de DBA dedicado, que es responsable de este aspecto y, por lo tanto, es posible suavizar los requisitos para los desarrolladores y contratarlos más rápido. Pero con System Design, por el contrario: 37.0% en los pequeños, 44.1% en los grandes. Parece que los grandes arquitectos deberían distinguirse, pero quizás simplemente no pueden cubrir la cantidad de sistemas generados. O al mismo tiempo que invierten en el diseño del sistema los algoritmos y estructuras de datos fundamentales, entonces se vuelve un poco más claro.
Las pequeñas empresas necesitan más competencia en el marco y menos que el diseño del sistema antes mencionado, de lo que podemos sacar la conclusión del capitán de que es importante que las nuevas empresas lancen un producto que funcione lo antes posible, y mañana será mañana.

¿Qué aprenden los estudiantes?
Aquí me basé en los datos de otro
estudio de HackerRank .
Es importante tener en cuenta que a pesar del hecho de que la programación de una forma u otra se imparte en las universidades (me refiero a las especialidades de informática), más de la mitad de los encuestados dijeron que también se dedican a la autoeducación.
Los estudiantes modernos prefieren estudiar en YouTube, mientras que los desarrolladores más antiguos tienden a tutoriales y libros. Ambos usan activamente StackOverflow. Atribuyo esto al hecho de que el video es el canal de medios habitual para la Generación Z, mientras que los representantes de la Generación Y todavía encontraron la era sin blogueros.
Aprenda lo que exigen los empleadores: JavaScript, Java, Python. Indican que conocen C / C ++, pero esto probablemente se deba a que estos idiomas se usan para enseñar en las universidades. Aprenden los marcos JS, pero la demanda es significativamente mayor que la oferta, por lo que aparentemente ya se les enseña activamente después de encontrar el primer trabajo.

En general, lo que se espera que se enseñe es lo que está en demanda.
Los estudiantes del primer trabajo esperan principalmente un crecimiento profesional, en el segundo lugar (en algunos países en el primero) equilibrio trabajo-vida, en el tercero, tareas interesantes.
Desarrollar la dinámica de la población mediante lenguajes de programación y tipos de software.

Las aplicaciones web son las primeras con un estimado de 16.9 millones de desarrolladores. Estos son nuevamente datos de SlashData. Los siguientes son los servicios de backend (13,6 millones), las aplicaciones móviles (13,1 millones) y las de escritorio (12,3 millones). Los sectores de AR / VR e IoT están ganando popularidad gradualmente, AI / ML / Data Science ha crecido significativamente en los últimos dos años.
Javascript está creciendo más rápido, su comunidad ya es la más grande, solo en 2018 creció en 2.5 millones. Incluso intentan escribir en los sectores de IoT y ML.
Python en 2018 creció en 2.2 millones debido a la creciente popularidad de ML, donde es tradicionalmente fuerte, así como a la facilidad de desarrollo y la conveniencia del lenguaje.
Java, C / C ++ y C # están creciendo a un ritmo más lento que la población general de desarrolladores. Raramente son el lenguaje de programación con el que las personas prefieren comenzar. La demanda de desarrolladores aquí está más o menos equilibrada con la oferta. Creo que Java crecería aún más lento si no fuera por Android.
PHP es el segundo lenguaje de programación de aplicaciones web más popular y también está creciendo significativamente (en un 32% en 2018). Su comunidad se estima en 5,9 millones de desarrolladores. A pesar de la opinión polar sobre la reputación de PHP, es bastante fácil de aprender y generalizado.
Cómo estudian los jóvenes candidatos modernos en comparación con las generaciones pasadas
HackerRank datos de nuevo. Los que ahora tienen entre 38 y 53 años indican juegos con sus primeros proyectos.
Por cierto, confirmo que mi primer proyecto más o menos funcional fue "tic-tac-toe" hasta cinco seguidos con un campo ilimitado, el segundo, un juego a los 15. Escribí todo esto en
BC 010-01 , había un
Vilnius BASIC , también conocido como BASIC- 86 y focal. Eh
Los programadores novatos modernos (antes de los 21 años) escriben calculadoras y sitios web como sus primeros proyectos.
Entre los representantes de la generación X, casi la mitad comenzó a escribir código antes de los 16 años, muchos en general de 5 a 10 años (principalmente aquellos que ahora tienen entre 35 y 45 años). Es más o menos comprensible por qué: había pocas fuentes de información, y para convertirse en un programador era realmente necesario quererlo, y aquellos que realmente querían comenzar a programar temprano. Aquellos que no querían tanto, por ahora, probablemente tengan una profesión diferente, por lo que la imagen en sociología es solo eso.

Los jóvenes candidatos de hoy en día solo en el 20% de los casos comienzan a programar antes de los 16 años, la mayoría de ellos se encuentran entre el 16 y el 20. Pero es mucho más fácil para ellos aprender, ahora es mucho más accesible.
Conclusiones
No encontré una respuesta concreta a la pregunta de si hoy se necesita un desarrollador de back-end web para principiantes, pero corrigió su idea de la población moderna de programadores.
La próxima generación de desarrolladores, la gente común, que recuerda un poco el problema de la
vivienda anterior
, solo los echó a perder . Satisfacen la demanda creada por los empleadores. El umbral para ingresar a la profesión se ha reducido debido a herramientas y marcos más convenientes que le permiten lograr resultados rápidamente. Más personas se están convirtiendo en programadores, la generación digital (generación Z) ha estado viviendo en tecnología desde su nacimiento, para ellos es una profesión normal, no peor que otras.
Aquellos que saben que el caché Lensi L1 es ~ 4 ciclos, y que es mejor no disparar líneas de caché innecesariamente, se vuelve más pequeño como un porcentaje del tamaño total de la población. Sin embargo, no deberían preocuparse por el empleo, al final alguien debería escribir cosas de bajo nivel donde aún es necesario. Del mismo modo que no debería preocuparse, aquellos que tienen un profundo conocimiento fundamental en el diseño de sistemas y los adquirieron en sangrientas batallas prácticas, y no solo siguen el culto a la carga. Debido a que aquellos que serán capaces de "simplemente escribir código" y "simplemente" usar los marcos en los equipos serán cada vez más, y para "no ser insoportablemente dolorosos durante años gastados sin rumbo" (c) deberán ser equilibrados por esas personas.
Las habilidades blandas de la categoría de deseable migran gradualmente a obligatorio (para confirmar esto, no tengo datos objetivos, solo observación práctica). El número de programadores está creciendo, y todos ellos deben ser dirigidos para lograr un resultado, aunque sea por control directo, aunque indirecto, pero para esto solo se necesitan habilidades blandas.
"Entrar en TI" me parece una historia regional local, característica de aquellos lugares donde el ingreso de un programador es significativamente diferente del ingreso de un especialista comparable en calificación a "no en TI". En Minsk, donde vivo, este es generalmente un movimiento de masas, todos los días veo anuncios de los próximos cursos sobre cómo ingresar a la codiciada TI, y las compañías de limpieza apuntan a los programadores con el mensaje “¿Entiendes el código en esta imagen? Para que pueda darse el lujo de no limpiar el apartamento, haremos todo por usted ". Aparentemente sucede lo mismo en algún tipo de India. Para probar esto, yo tampoco.
En general, la población de programadores no está en mi opinión amenazada. No vale la pena decir que los programadores reales no están satisfechos con el día y la noche, y que los candidatos todo el tiempo "no saben nada". Son tan inteligentes y capaces, tal vez incluso más inteligentes y más capaces que los "programadores reales", simplemente adquieren el conocimiento que un mercado en auge requiere de ellos y dejan de lado para más adelante lo que aún no han necesitado y que no traerán beneficios en este momento. Aprenderán cuando sea necesario, porque todavía quieren aprender. Probablemente no todos serán capaces de esto, pero no todos lo necesitarán, el mercado en el futuro previsible facilitará la aceptación de personas que puedan ensamblar rápidamente otro concepto de aplicación en algún marco.