Este es uno de mis problemas favoritos para hablar, así que gracias por preguntar. Esta respuesta describirá cuál creo que es el problema, y cómo creo que podemos resolverlo.
SI. Este es un gran problema.
1. Existe el simple problema de los números: la cantidad de desarrolladores necesarios en los Estados Unidos excede la cantidad de desarrolladores ciudadanos estadounidenses que tenemos disponibles. Eso es un hecho simple. Las empresas no contratarían a un gran número de personas de la India si eso no fuera un hecho. Es demasiado caro hacer eso.
2. La subcontratación es un gran problema. En general, la calidad del trabajo realizado fuera de la costa no es muy buena y gastamos mucho dinero y tiempo tratando ese problema. También tenemos una gran cantidad de desarrollo de software que no se puede hacer fuera de la costa: defensa y armamento, cualquier cosa bajo ITAR.
3. Nivel de habilidad de la comunidad. La comunidad de desarrolladores es muy pesada. Los desarrolladores extremadamente experimentados son muy difíciles de encontrar. En mis búsquedas de empleo últimamente, he estado compitiendo con nadie. En un caso, después de la entrevista con una empresa, no estaban listos para mudarse porque no habían entrevistado a nadie más, por lo que no podían comparar. La única solución fue que mi reclutador envió a alguien que no estaba calificado. Actualmente no estamos haciendo lo suficiente para desarrollar principiantes y mantener a los expertos desafiados. Demasiadas empresas estiman incorrectamente el nivel de habilidad que necesitan (en ambas direcciones).
4. Los gerentes y recursos humanos no saben cómo crear equipos efectivos. Tienden a cometer el error de los extremos: crean un equipo de expertos o un equipo de principiantes y solo recientemente entendemos que necesita una buena combinación. Los desarrolladores siempre han entendido esto. Necesito expertos para hacer arquitectura y cosas complicadas y necesito principiantes para producir grandes volúmenes de código trivial también. Necesitamos los dos. Encontrar el equilibrio correcto es complicado y varía de un proyecto a otro. Esto da como resultado un cambio porque los expertos no son desafiados, o los principiantes no pueden hackearlo. Mantener a los desarrolladores de software en el personal a largo plazo no se entiende bien. En su mayor parte, las tácticas de entrevista mencionadas anteriormente se pueden jugar lo suficientemente bien como para que no sea una solución a este problema. Hay muchos sitios web y libros para ayudarlo a obtener trabajos de desarrollo para los que no está calificado. Cuando estas personas se ponen a trabajar, absorben energía del equipo. También es difícil para los expertos cuantificar su experiencia y la prevalencia de candidatos deshonestos realmente nos perjudica, simplemente no somos de confianza. Muchas veces, en entrevistas simplemente dije “He estado haciendo esto durante treinta años, ¿de acuerdo?” y eso todavía no se entiende. Muy frustrante.
5. Aptitud y habilidad natural. Según mis cálculos, alrededor del 10% de las personas que realizan trabajos de desarrollador son realmente adecuados para ello. Esto provoca una mala calidad del código y mayores costos de desarrollo, y es un factor en todos los problemas mencionados anteriormente. La fuente de este problema son las personas. Por ejemplo, hay una historia de un taxista en India que quería convertirse en programador para poder casarse, a pesar de ser un muy buen taxista y disfrutar de ese trabajo. La gente necesita dejar de hacerlo, pero los problemas prácticos se interponen en el camino. Este problema contribuye en gran medida al n. ° 4 anterior. Vea a continuación una solución a esto.
Para resumir, sí, el número de personas calificadas locales es inferior a lo que necesitamos, y crear buenos equipos es muy difícil, y solo se puede lograr mediante prueba y error. Actualmente, la gente H1b está llenando ese vacío, y estamos teniendo problemas para igualar el nivel de habilidad con la demanda. Nuestras tácticas para cerrar esa brecha también están fallando. Podemos solucionar este problema, casi gratis, pero será mucho trabajo.
1. Crear centros para educar a los ciudadanos estadounidenses con tarifas gratuitas o basadas en los ingresos, en las habilidades que necesitan para el desarrollo y trabajos de apoyo, y proporcionar certificaciones que puedan usar en sus hojas de vida. Esto aborda el tema de francamente, no aprovechando los cuerpos disponibles. Solía vivir en algunas áreas de muy bajos ingresos y conocía a algunos pandilleros y traficantes de drogas y, aunque no participé en sus crímenes, hablé bastante con ellos sobre lo que estaban haciendo de una manera muy franca. Me di cuenta de que estas personas son traficantes de drogas porque no pueden hacer nada más para mantener a sus familias, y muchas de ellas son personas perfectamente buenas con alta inteligencia. Estamos desperdiciando un gran recurso y contribuyendo al problema del crimen porque no estamos ayudando a las personas a tener oportunidades de hacer algo legal. Necesito millones de líneas de código trivial escritas este año. Ese vendedor de crack en la esquina es más que lo suficientemente inteligente como para hacer eso, simplemente no sabe cómo. Sé esto porque les he enseñado. Le enseñé a uno de ellos HTML y él fue más que lo suficientemente inteligente como para entenderlo. Estamos decepcionando a estas personas, y las personas están sufriendo por eso. Este problema podría resolverse simplemente dejándome enseñar una clase de SQL en la sala de conferencias; todo lo que tiene que pagar es mantener la luz encendida. Ponga su dinero donde está su boca y deje de quejarse de “no hay suficientes H1bs” y quédese así. Podemos resolver este problema por poco o nada. La gente puede ser enseñada, ¡tenemos la tecnología!
2. Pague por más capacitación en el trabajo. No he estado en una conferencia en muchos años y ese es un gran problema. Necesitamos pagar por este tipo de educación continua para mantener a los buenos desarrolladores desafiados y desarrollar sus habilidades. Esto abordará ambos lados del problema de la rotación, manteniendo a los expertos desafiados y mejorando a los principiantes.
3. Enseñe a los desarrolladores cómo entrevistar a otros desarrolladores y llevarlos al proceso de entrevista en la etapa de selección de currículum. Somos los expertos en habilidades de desarrollo. Si desea contratar personas buenas, necesitamos ser parte del proceso. Puedo clasificar el currículum vitae como un profesional, con mejores resultados que la gente de recursos humanos. Puedo entrevistar personas e identificar niveles de habilidad muy bien. Puedo poner a las personas en categorías de principiante, avanzado y experto, y también puedo identificar el potencial para ser experto. No uso preguntas técnicas para hacer eso, uso la conversación. No puedo definir la técnica y no puede ser falsificada. Si estás lleno de basura lo sabré. Si eres un experto potencial que carece de capacitación, también lo sabré.
Entonces, para resumir nuevamente, este es un gran problema y simplemente no lo estamos resolviendo porque parece que no nos importa. He promovido mis ideas y no he tenido ningún interés, lo que dice que la compañía realmente no quiere resolver este problema, o quieren que alguien más lo resuelva. Sin embargo, este es un problema comercial y hay una solución comercial. El gobierno no va a resolver esto. Todo lo que hacen es empeorarlo. Aumentar los números H1b o reducir el costo no es una solución, es solo una forma de continuar con el problema. Necesitamos abordar la falta de ciudadanos estadounidenses capacitados, abordar la dificultad de contratar buenos equipos y mejorar nuestra retención de buenos desarrolladores. Esto ralentizará el molinillo y, con el tiempo, creo que este problema podría resolverse.