No puedo hablar por todos los ingenieros de software, sólo por mí mismo después de 20 años. Mis frustraciones provienen de:
1) La forma de gestionar el software. No necesariamente los propios gestores, sino la insistencia de las empresas y/o clientes en medir cosas que no se pueden medir. Cuando se me asigna escribir una pieza de software, nunca he escrito ese software antes, por lo que es imposible dar una estimación honesta de cuánto tiempo tomará, y sin embargo siempre se pide… entonces cuando no lo cumplo, se me echa en cara. Por otro lado, si cumplo la estimación o termino antes, nunca hay una bonificación, una recompensa o incluso un agradecimiento.
Esta es una de mis analogías favoritas. Cuando construyes una casa, puedes decirle a la dirección exactamente cuánto tiempo te llevará levantar una pared porque has levantado esa misma pared cientos de veces. Nunca he escrito el software que me pides que escriba. Puedo adivinar, pero hay una alta probabilidad de que me equivoque… en cualquier dirección.
2) Decepción en el trabajo. La mayoría de la gente que se mete en el mundo del software por amor a él se mete con visiones de trabajar en productos grandes e importantes como naves espaciales o equipos científicos o juegos o productos comerciales que pueden encontrar en las estanterías de las tiendas y de los que pueden presumir y luego se encuentran pasando años escribiendo un software interno de las empresas para mover datos o hacer otras cosas menos desafiantes. La gente quiere producir algo de lo que pueda sentirse orgullosa… pero la mayoría del software no es así.
3) Software sobreprocesado. Aunque creo que un buen proceso es necesario para hacer un buen software, muchos lugares son tan excesivamente rígidos en su proceso que los desarrolladores se encuentran pasando la mayor parte de su tiempo en reuniones, escribiendo documentos u otras tareas que no son de codificación. Esto parece ser impulsado por proyectos que son gestionados por personas con MBAs u otros gestores profesionales que no tienen experiencia o conocimientos de software, sólo lo que han leído en libros sobre gestión de software.
4) Encontrarse atascado en el mantenimiento. Muchas veces un desarrollador entra a trabajar en una empresa con un buen producto o incluso sólo porque necesita un trabajo y se encuentra relegado al infierno de las 10.000 correcciones de errores. Las correcciones de errores son importantes, pero no son satisfactorias y la mayoría de la gente quiere hacer un nuevo desarrollo fresco donde puedan usar su creatividad para diseñar y construir el software desde la nada.
Yo no me metí en el software para ser rico, me metí para hacer algo que me gusta con mi vida. Si tu razón para hacer software es ser rico, yo diría que estás en el campo equivocado y lo más probable es que no seas un buen desarrollador. Sí, aprecio que gane buen dinero, pero no es mi motor. No sé si alguien más tiene las mismas frustraciones que le impiden disfrutar al máximo de su trabajo, pero escribirlas ha sido al menos un poco catártico para mí.