¿Son felices los programadores competitivos cuando trabajan como ingenieros de software?

Creo que el trabajo de un ingeniero de software promedio es realmente muy aburrido en comparación con la programación competitiva. Sin embargo, nadie dice que tienes que ser promedio. Los programadores competitivos serios generalmente son personas inteligentes que son buenos ingenieros de software y eligen entre muchas compañías de software que desean contratarlos. Pueden ir a una compañía donde tendrán la oportunidad de trabajar en problemas que en realidad son desafiantes. Todavía son muy diferentes de los problemas del concurso de programación, por supuesto. Algunos programadores competitivos encuentran que trabajar en la industria del software es menos interesante que la programación competitiva; Algunos lo encuentran más interesante. No hay una única respuesta correcta.

Dicho esto, la mayoría de las personas no esperan que su trabajo sea tan emocionante como sus pasatiempos. Si un programador competitivo es sensato y realista, se dará cuenta de lo afortunados que son de tener la oportunidad de ser ingenieros de software. A fin de cuentas, es mucho mejor que la mayoría de los trabajos disponibles. Siempre que deseo que mi trabajo sea más emocionante, me recuerdo a mí mismo que soy afortunado de tener una pasión por escribir código, en lugar de algo más difícil de hacer una carrera.

Cuando trabajas como programador profesional, estás haciendo muchas más cosas que inventando algoritmos. Esto incluye (pero no se limita a)

1) Hablar con personas que (aunque hablan inglés) se comunican con un lenguaje que puede ser completamente extraño para usted. Tienen su propia jerga. Tienes el tuyo Tienes que ser tú quien traduzca, porque si hay un error, es tu trasero.
2) Aprende un dominio completamente nuevo.
Tienes un título en informática. Usted toma un trabajo implementando un sistema para un hospital; tienes que aprender cómo funciona un hospital. Usted toma un trabajo implementando un software de contabilidad; tienes que aprender procedimientos y leyes contables. Si cambia de trabajo cada 4-6 años, es como obtener un título de asociado cada 4-6 años.
3) Planifique el trabajo que puede llevar una semana.
El final del día de trabajo no es como el final de una competencia, ¿verdad? Tienes cosas sin terminar. Y ya le prometiste a la gente que terminarás en cierto día. Tienes que ser capaz de manejarte para llegar a ese punto
4) Priorice múltiples tareas que pueden tomar meses para hacer
Hay 5 cosas que deben hacerse en el proyecto. Eso significa que hay potencialmente 5 cosas que pueden no completarse a tiempo. ¿Cómo los hace para minimizar el riesgo para la empresa?
5) Aprende cosas mientras lo haces
Nuevas tecnologías. Nuevas tecnicas. Estás aprendiendo como lo estás haciendo
6) Mejora constante
Sí, terminas haciendo lo mismo una y otra vez 20 veces. Sin embargo, ¿cómo haces las cosas más fáciles cada vez que lo haces?
7) política
Maldita política. Tienes que preocuparte por las tarifas de las personas

Sí, hay muchos desafíos que no son de programación de los que debe preocuparse. Sin embargo, eso no significa que apague su cerebro de programación. En definitiva, eres un solucionador de problemas. Sucede que mientras estás en la universidad, o al salir de ella, enciendes tu cerebro para resolver problemas mientras haces un desafío / tarea de codificación, y luego lo apagas y haces lo que los adultos te dicen que hagas. Cuando estás en la escuela, todo está organizado para ti. Debe hacer un trabajo duro mientras absorbe información o realiza un examen, pero alguien más le está organizando todo lo demás. Es bastante compartimentado. Estás encendiendo y apagando tu cerebro en función de los desafíos que tienes por delante.

Cuando comienzas a trabajar, no apagas ese interruptor. La única vez que lo apaga es cuando apoya la cabeza sobre la almohada. No dejas de “programar” solo porque tu computadora está apagada. Estás utilizando las mismas habilidades de resolución de problemas para resolver todo tipo de problemas.

Entonces, sí, trabajar como ingeniero de software puede ser bastante “aburrido” si te consideras un programador y pasas la mayor parte de tu vida en piloto automático. En cambio, piense en usted mismo como un solucionador de problemas y encienda esa máquina, y la vida de repente se vuelve mucho más interesante. La vida es mucho más desafiante que la programación competitiva.

Su millaje puede variar cuando le pregunte a otros programadores competitivos, pero disfruto trabajando como ingeniero de software.

Disfruto abordando problemas difíciles, tanto de la variedad algorítmica como de la variedad no algorítmica. En todo caso, encuentro que los problemas no algorítmicos son más interesantes de resolver. Estos son problemas con enunciados de problemas mal definidos, donde hay muchas soluciones diferentes, y su objetivo no es solo encontrar una solución que funcione, sino encontrar la mejor solución. Desea asegurarse de que está resolviendo un problema real.

En la programación competitiva, los problemas se diseñan con restricciones para que solo se admita una clase específica de soluciones. A veces, encuentro una solución que estaba “destinada” a funcionar, y será una sensación agradable. Otras veces, no podré encontrar esa solución y, en cambio, se me ocurrirá algo muy hacky que puede o no funcionar.

Además, es realmente satisfactorio escribir código como ingeniero y ver que estás teniendo un impacto.

¿Por qué crees que aquellos de nosotros que trabajamos como ingenieros de software no tenemos que resolver “rompecabezas”, como tú lo dices? Por supuesto que sí, esa es la realidad cotidiana de quién es nuestro trabajo. No tengo ninguna inclinación a ser un programador competitivo, pero he vivido bien como desarrollador de software durante 32 años, incluido ser independiente durante los últimos 17 años. Voy a poder retirarme de eso a los 55 años dentro de un año y disfrutar de mis pasatiempos mientras aún soy lo suficientemente joven y saludable como para hacerlo. Cuando todo está dicho y hecho, la carrera de ingeniería de software que he disfrutado fue solo un medio para un fin: pagar las facturas y tener suficiente para una vida cómoda.

AFAIK están felices de llevar sus habilidades de resolución de problemas a alguna implementación de la vida real.
Recuerdo que creé una función usando la recursividad para una aplicación de la vida real y me alegró ver que muchas personas la usaban.
Aunque la recursión puede no ser el mejor enfoque para muchos problemas, a veces, cuando está utilizando API específicas, ayuda.

Esta no es una respuesta directa, pero le recomiendo encarecidamente que, antes de tomar un trabajo, pregunte qué reclamos intentará hacer su posible empleador en cualquier fuente abierta que escriba. Escribir código abierto puede aliviar el aburrimiento cuando lo que estás haciendo en el trabajo no es un desafío.

Mi antiguo empleador mantuvo una base de datos centralizada de todo el código abierto que estábamos utilizando para fines laborales. Envié una parte de mi propio trabajo a la base de datos. Recibí un correo electrónico que decía que escribiste esto y trabajas aquí, así que no es de código abierto, nos pertenece. No, escribiste esto en tu propio tiempo. No, ¿es específico de nuestra línea de negocio? Eventualmente logré convencerlos de que lo había escrito mientras estaba despedido, por lo que cedieron. Una de las principales razones por las que ya no trabajo para esta empresa.

More Interesting

¿Elegiría un lenguaje de programación debido a sus sistemas de gestión de dependencias?

¿Qué libros debo leer para convertirme en un mejor ingeniero / desarrollador de software en general?

¿Workday matará los trabajos de desarrollador de software?

¿Cómo es trabajar en Mentor Graphics como ingeniero de software / hardware?

¿Cuáles son algunas de las técnicas que utilizan los desarrolladores experimentados para comprender rápidamente una nueva base de código y comenzar a contribuir a ella?

¿Cómo es la vida como ingeniero de software de nivel de entrada en empresas indias de servicios de TI como Infosys, CTS, TCS y Tech Mahindra?

Cómo traducir modelos mentales en detalles de implementación

¿Cuáles son los rasgos de un desarrollador de software promedio y cómo se mejora de un desarrollador de software promedio a un buen desarrollador?

¿Puede un probador de software entrar en la industria del automóvil?

¿Qué se debe hacer para crear una atmósfera en los colegios / escuelas de la India, para que los estudiantes comiencen a aprender programación desde su primer año de universidad / a una edad temprana?

¿Cuáles son algunos problemas que encuentran los analistas de garantía de calidad del software?

¿Con qué frecuencia deberían los desarrolladores front-end probar su código y cómo?

¿Cuáles son algunos problemas en astronomía que podrían resolverse (pueden ser resueltos fácilmente por los astrónomos) mediante el uso del software adecuado, pero no hay ningún software que los ayude?

¿Qué valor puedo ganar pagando dinero para ir a un campo de entrenamiento de codificación cuando puedo aprender por mi cuenta utilizando recursos gratuitos en Internet?

¿Cuáles son las mejores tecnologías utilizadas en los museos?