Los ingenieros y desarrolladores de software tienen el POTENCIAL de ser ricos. Depende de dónde encajes en el espectro creativo. Soy muy creativo y puedo relacionarme más con el chico en el siguiente hilo con la pregunta sobre el alto coeficiente intelectual. Soy excelente con los problemas de arquitectura y diseño de alto nivel, ya que puedo ver el “panorama general” muy fácilmente y mucho más rápido que la mayoría de las personas. Es realmente difícil trabajar en reuniones donde la mayoría de las personas solo ven una pieza del rompecabezas y terminan discutiendo por limitaciones localizadas en un diseño que tiene impactos negativos en otras piezas que no pueden comprender.
En este momento, estoy totalmente en quiebra. No he podido encontrar trabajo porque la gran mayoría de los trabajos para los que he calificado son todos trabajos de mantenimiento en código de 10 años. Realmente odio el trabajo de mantenimiento.
Algunas personas son excelentes en trabajos de mantenimiento, otras no. No soy. La mayoría del código no está documentado y te señalan un montón de código y te dicen: “Aquí, ve a solucionar este problema”. Se espera que lea cientos o miles de archivos fuente y cree un modelo del diseño del software en su cabeza, y luego repare piezas al azar.
Si tiene una memoria fotográfica o algo cercano, es un trabajo fácil. Para mí, tener que enfrentar un problema de abajo hacia arriba, es terriblemente difícil. Realmente no puedo hacer mucho hasta que tenga el modelo de alto nivel construido en mi mente. Imagine tener que descubrir la extensión de un árbol denso muy grande hoja por hoja con un fósforo como su única fuente de luz.
Creo que la gran mayoría de los desarrolladores se sienten cómodos aprendiendo una rama con una docena de hojas, y no sienten que les falte nada. Mi mente no funciona así.
Entonces, cuando me subo a un proyecto, constantemente me dicen que “permanezca en su esquina” o “solo se centre en este error” e ignore el resto del sistema. Muchas veces, los síntomas de un error surgen de múltiples interacciones entre varias partes diferentes del código. Y cuando alguien antes ha utilizado un enfoque de copiar y pegar para programar un fragmento de código común, los errores sutiles creados al principio pueden duplicarse sin fin en todo el código. Aprendí a reconocerlos observando patrones más grandes, pero nadie quiere saber de ellos. “Solo arregle de qué se trata este informe de error y olvídese del resto. Déjelos para otra persona”.
Un trabajo ideal para mí es como arquitecto al frente de un proyecto. Pero las empresas casi nunca contratan personas para esos roles: quienes lo hacen son todas las personas centrales y sus amigos cercanos. Luego se dividen rápidamente en subsistemas y piezas más pequeñas y contratan personas para construir hojas y ramas.
He conocido toneladas de programadores que no pueden mantener un modelo mental abstracto de un proyecto cuando crece más allá de cierto punto. Creo que en parte es por eso que muchas de las aplicaciones basadas en la web que tienen éxito hoy en día son tan simples. No digo que sea algo malo, pero mira Twitter: es un concepto muy simple, y la compañía está luchando para llevarlo más allá de su núcleo simplista a algo más.
Para empeorar las cosas, después de 30 años de programación, estoy realmente cansado de ello. Obtengo una imagen o modelo de cómo debería verse el software en mi mente con bastante rapidez, pero luego el proceso de escribir el código para implementarlo se ha vuelto cada vez más aburrido. Es como ver crecer la hierba para mí. Hay una gran discordancia entre cómo concebimos y modelamos las aplicaciones frente a cómo las construimos. ¡El proceso de construcción no ha cambiado en 50 años! El proceso de edición / compilación / depuración se ha vuelto más rápido, por lo que iteramos más, pero el proceso subyacente de escribir líneas de código sigue siendo el mismo. Hay muchas más bibliotecas que debemos conocer hoy. Cada plataforma tiene varios marcos diferentes y un montón de complementos y extensiones, y nadie usa el mismo conjunto de proyecto a proyecto.
Volviendo al tema en cuestión, sería rico si pudiera encontrar el tipo de trabajo en el que soy mejor. Pero todo el mundo está buscando contratar personas con experiencia inmediata usando cualquier marco y complementos / extensiones que necesiten en su proyecto en este momento. No quieren que nadie pase tiempo aprendiendo o acelerando. Y las cosas en las que soy mejor, la arquitectura y el diseño de alto nivel … no contratan gente para eso. Suelen ser los fundadores.
También hay toneladas de personas no tecnológicas con grandes ideas que buscan cofundadores tecnológicos que puedan asumir ese papel, pero ninguno de ellos tiene el dinero para contratar a nadie. La mayoría de los fundadores trabajan gratis durante mucho tiempo hasta que obtienen clientes que pagan o encuentran un inversor o dos.
Personalmente, me encantaría trabajar en una startup donde alguien está revolucionando todo el proceso de programación. Porque el que estamos usando hoy escribiendo líneas de código se va a la bancarrota rápidamente. Hay estimaciones de que para 2020 tendremos una escasez de 1 millón de programadores. Este proceso que estamos utilizando para crear software hoy DEBE transformarse en los próximos años o la industria explotará de su propia masa. La programación escribiendo líneas de código debe ser reemplazada por métodos de nivel superior.
¿Hay alguien por ahí que quisiera contratarme para trabajar en algo así?