Habrá demasiados ingenieros de software en el futuro (próximo)?

En primer lugar, una respuesta autorizada a una pregunta como esta es casi siempre imposible. Podemos hablar de tendencias en la industria, podemos hablar de proyecciones de crecimiento futuro, etc. Sin embargo, predecir el futuro de forma impecable sigue siendo una habilidad difícil de alcanzar (que, en realidad, sería la mejor). Aun así, podríamos construir una conjetura educada.

1 - ¿Habrá demasiados médicos? Habrá demasiados abogados (¿ya lo son?) ¿Habrá demasiados profesores de literatura americana? son las mismas preguntas, en realidad. La diferencia es que las barreras de entrada se perciben más altas en estas profesiones. No hay formas indirectas de convertirse en médico o en abogado o de adquirir un doctorado. Así que parece que el número de escuelas e instituciones que proporcionan títulos constituye una verdadera barrera para la sobrepoblación. Compárese con la ingeniería de software o los campos relacionados con la informática en general. La gente piensa ahora que cualquier adolescente con un poco de tenacidad puede apuntarse a un campo de entrenamiento de codificación y convertirse en ingenieros de software al instante. La barrera de entrada percibida es mucho menor en el mundo digital. Pero esto es sobre todo un fantasma. Permítanme intentar explicar por qué.

2 - Imagina que los hospitales pudieran emplear a médicos autoformados. Imagina que hubiera campos de entrenamiento de medicina que enseñaran "Cómo diagnosticar en 6 semanas". Crees que no estaríamos hablando de "¿habrá demasiados médicos?". ¿Cambiaría esto realmente el sector o sólo obligaría a los hospitales y clínicas a emplear un procedimiento de selección más estricto? Al final el mercado separaría a los buenos médicos de los malos. Porque al final un médico que sabe lo suficiente sobre biología, anatomía, epidemiología tendrá un rendimiento mucho mejor que un médico de "campo de entrenamiento" cuya habilidad principal es navegar por WebMD y memorizar medicamentos que coinciden con los diagnósticos en un sistema automatizado.

3 - La distinción que estoy tratando de ilustrar aquí es que la ingeniería de software es más que la codificación, incluso la programación. La habilidad de codificación es una herramienta, un facilitador utilizado por el ingeniero. La habilidad crítica necesaria para convertirse en un exitoso ingeniero de software es el pensamiento analítico. Sin el pensamiento analítico no se pueden traducir los problemas del mundo real en problemas computacionales. Y esta traducción es la parte clave para convertirse en un ingeniero de software de primera línea. No vivimos en el mundo aislado del silicio. Todo lo que hacemos es esencialmente traducir un problema analógico y de carne y hueso (qué página mostrar a un cliente a continuación, qué respuestas mostrar a los usuarios de Quora, etc.) a uno digital y luego resolverlo. El conocimiento de los lenguajes de programación y la codificación son sólo herramientas que utilizamos en este proceso.

4 -La mecánica de la codificación no es tan difícil. De hecho es mucho más fácil que aprender un nuevo idioma (muchas menos excepciones y matices. Intenta aprender a hablar francés, o árabe, o coreano en un mes). Esta es la parte más fácil de la ingeniería de software y cualquiera que pueda terminar la escuela secundaria puede aprenderla. Las partes más difíciles, la visión del dominio (¿tienes un buen manejo de las necesidades específicas o peculiares del dominio de negocio en el que estás trabajando?), el pensamiento algorítmico (esto no es el equivalente a memorizar los algoritmos más utilizados) y, lo más importante, el pensamiento analítico, son mucho más difíciles de enseñar. El conocimiento del dominio viene con la experiencia, pero se trata sobre todo de mostrar un interés genuino en el campo. Los fundamentos del pensamiento algorítmico y el razonamiento analítico pueden aprenderse de los expertos, pero en última instancia viene determinado por tu capacidad intelectual. Puedes entrenarla, afinarla y, por mucho que te esfuerces, puede que no llegues a ser el mejor en estas habilidades. E incluso los mejores con el mayor potencial intelectual necesitan practicar y entrenar muy duro para utilizar estas habilidades de forma magistral. Por lo tanto, los verdaderos solucionadores de problemas seguirán siendo un bien escaso a pesar de la plétora de clases de codificación, campos de entrenamiento de codificación, academias en línea, etc.