Creo que mi opinión no va a ser muy popular, pero tengan paciencia conmigo, ahora después de varios años de ser un desarrollador / ingeniero de software e interactuar con personas que aspiran a ser desarrolladores / ingenieros de software, personalmente creo que la aptitud juega un papel bastante importante en qué tan exitoso es alguien como ingeniero de software.
Incluso cuando recién comenzaba (tenía 11 o 12 años en ese momento; el lenguaje de programación que estaba usando en ese momento era GW-BASIC, aunque eso no es del todo relevante) Casi nunca tuve problemas para encontrar una solución para resolver cualquier problema que intentara resolver (tenga en cuenta que no estamos hablando de leer la solución en un libro y escribirla aquí). La creación de algoritmos para la clasificación, los factores o la determinación de si un número era primo o no, simplemente se me ocurrió, los algoritmos que se me ocurrieron no siempre fueron óptimos (por ejemplo, para el ejemplo de los números primos, se me ocurrió algo todo el camino hasta el número en sí para ver si podría dividirse por algo en lugar de simplemente ir al número dividido por 2, en caso de números muy grandes, mi solución podría afectar gravemente el rendimiento) pero fueron soluciones que resolvieron correctamente los problemas sin embargo. Cuando tenía 15 años, tuve un maestro que se molestó con mi arrogancia y me dio la tarea de crear tres en raya (ceros y cruces), estaba seguro de que no podría hacerlo, pero 3 días después cuando Le di mi solución, su primera reacción fue que la había copiado de un libro (esto era pre-ubicuo en Internet). Ejecutó el programa (escrito en QBASIC) y era obvio que ese no era el caso porque en mi pereza suprema, en lugar de cruces que había hecho con un ‘|’ y todavía no estoy seguro de qué lo molestó más; la sonrisa presumida se plasmó en mi rostro o mi pereza, pero definitivamente estaba molesto (años más tarde me topé con él en una tienda y no solo me reconoció, sino que me ofreció un trabajo en su inicio, pero me estaba desviando 🙂).
A lo largo de los años, me he encontrado con varios ingenieros recién graduados que, a pesar de pasar mucho tiempo tratando de “aprender” el desarrollo de algoritmos, parece que no pueden entender ni siquiera lo básico. La mayoría de estas personas no son tontas por ningún tramo de la imaginación (estudiantes rectos A con matemáticas y física avanzadas, niños que pueden hacer integraciones y transformaciones mientras duermen), pero cuando se trata de crear un algoritmo, todo lo que pueden hacer es memorizar lo que encuentran en un libro o en Internet y lo reproducen en lugar de crear algo ellos mismos (esto puede llevarlos a través de la mayoría de los cursos universales, pero luego sucede el mundo real y luchan, lo que generalmente hace que cambien a un campo diferente)
Entonces, en conclusión, la ingeniería de software no es difícil siempre que tenga la aptitud. Si tiene la aptitud, es un campo extremadamente gratificante y su trabajo es extremadamente fácil y divertido (salvo que las decisiones tontas de la administración establezcan plazos poco realistas) porque es uno de sus pasatiempos. Puedes aprender algo nuevo casi a diario, crear algo nuevo casi a diario y, tal vez, puedes hacer una contribución positiva a la sociedad a través de tu trabajo, pero todo se reduce a si tienes el derecho aptitud o no.