¿Por qué hay tantos programadores? ¿Cuánto están afectando la disponibilidad de trabajo para aquellos que buscan títulos de CS?

Como alguien que actualmente entrevista a candidatos para trabajos de programación, particularmente candidatos que son ingenieros de software con énfasis en sistemas distribuidos y se enfocan en la programación de sistemas, mi experiencia ha sido:

1) Los títulos de CS son un predictor extremadamente pobre de calificación para el trabajo
2) La falta de (como mínimo) un título de cuatro años en algún tipo de campo STEM es un buen predictor de falta de calificación en la mayoría de los casos , pero vale la pena hablar con cualquier persona con más de una década de experiencia laboral en el campo.
3) Los títulos de EE, Física y Matemáticas con un par de proyectos de programación en su haber tienden a ser mejores que los títulos de CS con cinco años de experiencia. Probablemente porque eran el tipo de persona que buscaba un grado difícil, en lugar de un grado (con frecuencia) fácil con la promesa de grandes recompensas.
4) Data Scientist es una especialidad completamente impredecible. Varios de los peores candidatos que he rechazado fueron especialistas en DS. Pero uno de los candidatos junior más inteligentes que he visto fue un DS.

¿Honestamente? Culpo a las universidades, a los profesores y a los estudiantes. Si quieres un trabajo real cuando termines, despréndete de la mentira de que tu campo académico es (o debería ser) demasiado puro para enseñar habilidades prácticas de programación. Si crees que diez horas a la semana en proyectos paralelos es suficiente para cubrir eso, vas a tener un rudo despertar cuando hayas terminado.

Las personas sin títulos pueden manejar el trabajo de mono código, y las personas con títulos y experiencia práctica obtendrán los trabajos más desafiantes. O personas con títulos y más inteligencia nativa. Pero el título por sí solo no vale el papel en el que está impreso; debes poder pasar la entrevista, y eso significa poder codificar a un nivel mínimo estándar.

Por supuesto, hay “tantos programadores”, ¡demasiados! Pero no está del todo claro si eso obstaculiza las posibilidades de empleo de los nuevos graduados de CS, o si frena sus habilidades para obtener ingresos.

La razón por la que hay tantos programadores es porque la industria está muy mal administrada. No estoy hablando de la industria de alta tecnología, sino de compañías no tecnológicas (seguros, servicios públicos, atención médica, etc.) que emplean a más del 50% de los programadores. Emplean a muchos más programadores que la industria tecnológica. Y allí tienes gerentes de proyectos de TI y gerentes de departamento de TI que no tienen ni idea. Recuerda un viejo chiste “si fallas como programador, prueba la administración”, bueno, no es un chiste 🙁

Entonces ha llamado a los “analistas de negocios” que nominalmente deberían comprender suficiente tecnología y suficiente negocio para poder conectarlos, pero que en la práctica la mayoría de las veces no lo saben. Y así, como ejercicio de humo y espejos, a menudo producen documentación voluminosa pero enormemente inútil. En uno de mis proyectos recientes, me entregaron 120 páginas de documentos de gran especificación que en realidad solo tenían dos páginas útiles. Era un apéndice que resume las especificaciones en forma de tabla. Estas tablas no estaban completas, ni siquiera eran correctas, pero fue un buen punto de partida para mis propios análisis de negocios, le hice algunas preguntas a varias personas, corrigí las tablas a mi gusto y seguí escribiendo el código. ¿Qué pasó con otras 118 páginas y el analista de negocios que las escribió? Bueno, 118 páginas entraron en una trituradora proverbial y el analista de negocios continuó trabajando para otra compañía como gerente de proyectos.

Pasando de allí a los programadores. Si tiene una administración incompetente y analistas comerciales incompetentes, ¿qué le hace pensar que los programadores serán más competentes? Y no lo son, con algunas excepciones. Como otras respuestas aquí señalaron, muchos no pueden pasar la Prueba de Buzz Fizz, sin embargo, están empleados, haciendo cosas, o más bien rompiendo cosas. Sin embargo, en algún momento, las compañías necesitan que sus programas funcionen al menos de alguna manera, por lo que incorporan desarrolladores de habilidades estelares, chicos y chicas que hacen que suceda, generalmente los traen por contrato, les pagan bien y esperan una especie de operación de rescate.

Soy uno de esos contratistas. En este momento estoy en el proyecto con 10 programadores, más o menos. Soy el técnico clave, en broma me llaman “número uno”. En realidad, necesitamos dos o tres programadores allí. Francamente, si me pagan lo suficiente, puedo hacerlo solo, pero eso no sería práctico a largo plazo, ya que no podría tomar vacaciones. Sería un gran riesgo para una empresa también. Bien, agregue uno o dos más, ¡pero somos diez! El proyecto está claramente sobrecargado de “programadores” y no molesta a nadie, si pueden convencer a la alta gerencia para que les den más presupuesto, atraerían aún más personas. Así son las cosas en estas grandes compañías no tecnológicas.

De vez en cuando tengo un debate con un amigo mío que es un muy buen programador trabajando en contratos como yo. El tema de debate: “si la industria estuviera mejor administrada, ¿nos pagarían más o nos pagarían menos?” Por lo general, argumenta que la “mala administración” nos permite tener altas tasas de consultoría y recibir un pago por cada hora extra de trabajo. Que sin él estaríamos apilados en algún trabajo a tiempo completo en algún gigante tecnológico como Netflix, trabajando duro sin que nos paguen por las horas extras. Por lo general, sostengo que si se gestiona mejor el trabajo podría ser más gratificante y no tener que gastar tanto dinero, las empresas podrían tener más para pagarnos. Después de todo, siempre señalo que, en términos ajustados a la inflación, los programadores están ganando menos ahora que a finales de los 80: la mendicidad de los 90, y mucho menos el final de los 90, cuando la locura Y2K coincidió con el primer auge punto-come.

El argumento sigue siendo bastante hipotético ya que no hay absolutamente ninguna señal de que la industria se gestionará mejor en el corto plazo.

Hay muchos aspirantes a programadores porque la programación es un trabajo prestigioso y bien remunerado. El salario promedio de nivel de entrada para la programación está muy por encima del promedio de todas las profesiones en todos los niveles de experiencia.

También hay una gran demanda de programadores. La oferta de programadores calificados es mucho menor que la cantidad de trabajos de programación vacantes. Esto significa que importamos programadores del extranjero, así como también damos trabajos de programación a personas que probablemente no estén calificadas para mantenerlos.

Esto lleva a un gran problema en la industria: ¿Por qué los programadores no pueden programar? Debido al problema mencionado anteriormente, realmente no puede determinar si alguien que tiene un título de 4 años + 5 años de experiencia remunerada su currículum es realmente capaz de escribir algo útil. Es por eso que tenemos que tener cosas como el examen FizzBuzz y preguntas similares de entrevista. Es como si estuvieras tratando de contratar a un conductor y el 99% de los solicitantes ni siquiera podían descubrir cómo abrir la puerta del automóvil.

Así que me he enseñado a codificar durante los últimos años, principalmente en JavaScript, pero también he jugado con Ruby, Python, PHP, C # y Java. Como estoy haciendo desarrollo web, también tengo que saber cosas como HTML, CSS, jQuery, etc. Sin mencionar las habilidades de no codificación como Photoshop, FTP y varios sistemas CMS.

Mi impresión general es que hay mucho que saber. Añado a mi conjunto de habilidades todo el tiempo, pero siempre hay más. La gente me dice que me he vuelto bastante bueno, pero me siento como un principiante, y no veo que eso cambie pronto.

Eso no quiere decir que no sé nada útil. Puedo crear aplicaciones y sitios web que funcionen, y hacerlo profesionalmente. Dirijo un grupo que enseña estas habilidades a otros principiantes.

Me he divertido y sigo divirtiéndome mucho haciendo todo esto, pero no es fácil. No es un camino instantáneo hacia el éxito. Realmente creo que solo un pequeño porcentaje de la humanidad es capaz de aprender a codificar, y solo algunas de esas personas están interesadas en hacerlo.

Así que no te preocupes, la demanda va a superar a la oferta por algún tiempo con los programadores. Cualquiera puede aprender lo básico, pero se vuelve complejo muy rápido una vez que comienzas a aprender habilidades más avanzadas.

Hay muchos programadores porque hay muchos trabajos que necesitan programadores. Nadie con al menos esto está teniendo dificultades para encontrar un trabajo como programador en este momento:
1) currículum decente
2) buena programación de habilidades
3) vive en la ciudad correcta (SF, NY, Seattle, etc.) o está dispuesto a mudarse a una

Ni siquiera estoy 100% seguro de que necesite el primero o el último, probablemente haya muchos trabajos de programación sin completar que le permitirán trabajar de forma remota, o tomarán un volante en la pantalla de un teléfono para alguien con un currículum ligero.

Porque muchas escuelas enseñan “programación” y entregan un título de CS. Sin matemáticas computacionales avanzadas (y estoy hablando probablemente de tantos cursos de matemáticas como CS / EE en un título de 4 años), el título no debería llamarse CS. Debería ser “Programación”.

Mis hijos eran estudiantes de CS / EE en el MIT. No tuvieron dificultades para encontrar trabajo. Uno se graduó 6/5/15 y comienza para Apple. 150k para comenzar más 25-50k en beneficios. Creo que tenía 8 cursos de matemática, 2 de física (requisito básico del MIT) y luego química y biología (MIT Core) 8 cursos de CS (podrían ser más). Obtendrá un MEng y su BS. Su tesis es de 5500 líneas de código y 80 páginas de explicación. Es un programa que acelera la mayoría de los otros programas en 30 veces. Se puede transferir al hardware (ese fue el plan en el que se escribió primero en el software para demostrar que funcionaría). ¿Podría un programador haber escrito eso? Ningún científico de la computación e ingeniero eléctrico podría hacerlo. Me llevó 6 meses … .1-2 codificar el resto para escribir la explicación de cómo funcionaba.

Soy médico, puedo escribir código en 3 idiomas. Podría pasar FizzBuzz en idiomas que tienen 30 años. ¿Eso me convierte en un informático? Ningun lugar cerca.