Si disfruto más de la programación competitiva que la ingeniería de software, ¿hay algún trabajo que se adapte a eso? Según cómo presupuesto mi tiempo libre, he notado que estoy más inclinado a codificar soluciones para concursos que el trabajo real de ingeniería de software.

Buena pregunta. Y gracias por el A2A

En nuestra vida laboral, podemos pasar el 1% del tiempo haciendo lo que amamos y el 99% del tiempo haciendo las cosas que detestamos. El truco para elegir una carrera o trabajo es asegurarse de que el 1% haga que valga la pena el 99%.

Cualquier trabajo tendrá grandes cantidades de cosas aburridas, aburridas y dolorosas. La pregunta es si alguna vez puedes hacer el 1%.

Para responder a su pregunta, en todas partes de la industria informática donde la escala y el costo son importantes, la optimización es importante.

La razón por la que la mayoría de los ingenieros no tienen que preocuparse por la optimización es porque el sistema está diseñado para permitirles no preocuparse por esto. Escribí sobre esto en una respuesta sobre Dropbox y Python. Es más eficiente hacer que Python sea más eficiente que intentar enseñar a todos los ingenieros de DropBox a ser eficientes.

Una gran cantidad de software se escribe en espacios donde la optimización no importa porque muchas personas inteligentes han diseñado el sistema para que sea irrelevante. Y una gran cantidad de software “web y móvil” que se discute en muchos foros públicos es que el software ha llevado el problema de escribir software rápido a otras partes de la pila.

Lo que esto significa es que debe buscar otros lugares en la pila donde la optimización es importante e ir a trabajar para ese tipo de empresas.

Y Dios los bendiga, hay cientos de tecnologías que se ajustan a ese proyecto de ley …

Empresas de bases de datos
Compañías de redes
Sistemas operativos
Servidores web
Juegos: hay una gran cantidad de trabajo para hacer que los juegos sean más rápidos. Y si realmente quieres hacer una carrera con la optimización, este es un gran campo.
Software de realidad virtual
Compiladores
CAD / CAM
edición de fotos
Vídeo
Sistemas de almacenamiento
Empresas que operan a escala como Google, Facebook
Aprendizaje automático
Simulacion fisica

Estas compañías se preocupan por escribir código rápido y eficiente que sea ajustado, limpio y correcto.

Y no pasan la mayor parte de su tiempo hablando de: API, idioma o biblioteca. Ahí no es donde se enfocan sus células cerebrales.

En cuanto a la resolución de problemas muy complicados, lo que pasa con los concursos es que sabes que hay una respuesta, en muchas de estas empresas se desconoce la existencia de la respuesta, y en algunos casos es incognoscible.

El éxito se define al resolver un rompecabezas que, hasta ese momento, nadie sabía que existía una solución razonable.

La industria en la que trabajé durante los últimos 15 años se trata de:

– resolver problemas difíciles de manera eficiente ANTES de que alguien más sepa que existe una solución.

Si eso no te emociona, entonces sí, la ingeniería de software no es para ti 🙂

Me pasó algo divertido hace un par de días. No voy a entrar en detalles, pero básicamente me pagaron por resolver los problemas de TopCoder por una persona que me contactó a través de Quora. Fue como un trabajo soñado para todos los competidores de programación. Por el dinero ganado pude comprar dos entradas para el concierto de Linkin Park en el escenario principal, ¡así que guau! 🙂

Pero en serio, eso es más como ganar en una lotería que en un trabajo sostenible. Si realmente quiere ganarse la vida con la programación competitiva, hay sitios como Kaggle donde puede probar suerte. Pero, sinceramente, la cantidad de dinero esperada que vas a ganar está por debajo del salario mínimo, a menos que seas la mejor estrella.

La siguiente mejor opción es la universidad o la startup. Depende de lo que esté dispuesto a aceptar, ya sea menos dinero o más ingeniería de software.

¿Por qué no solicita un puesto de Setter de problemas / Curador de problemas en HackerRank? Donde sus responsabilidades incluirán la creación y curación de los problemas que ve en nuestro sitio. Si bien no tenemos un papel para alguien que se sienta y resuelve problemas; creando un problema, una solución canónica para él, sus casos de prueba y cosas relacionadas están en la misma área que sus intereses.

Descargo de responsabilidad: trabajo en HackerRank.

Aquí hay algunas opciones, algunas de ellas han sido mencionadas anteriormente.

  1. La academia es genial si te gusta la investigación. Todavía tendrá que lidiar con la política, pero serán de un tipo diferente y, dependiendo de su temperamento, puede encontrarlos mejores o peores.
  2. Podría convertirse en un mentor y trabajar en un acelerador o una incubadora. Tendrás que construir tu credibilidad primero tomando otro trabajo en alguna parte, pero en este rol tendrás acceso a montones de proyectos nuevos e interesantes con los que jugar.
  3. Puede lanzar su propia startup que le paga a las personas por resolver problemas de programación complejos para las empresas, y luego convertirse en su propio usuario estrella.
  4. Puede reunir un equipo de otras personas de ideas afines y probar suerte en cualquiera de estos:

    XPRIZE
    XPRIZEs (y otros premios de incentivos) • / r / xprize (consulte la barra lateral)

  5. También podría convertirse en un profesional independiente, y solo tratar de promocionarse

Dicho esto, existe una posibilidad muy real de que tenga que hacer una combinación de lo anterior y tener la suerte de poder hacer que esto funcione de manera consistente.

En cualquier caso, sin duda será un viaje divertido.

¡Buena suerte!

En resumen: la segunda respuesta de Sadi Hassan.

Más detalladamente: después de haber tenido éxito en las competiciones de codificación rápida hace más de 15 años, primero entré en startups, cofundé una, luego hice un doctorado en CS, post-doc en Maths, y me uní a IBM Research en 2012. Entonces Puedo proporcionar una comparación de primera mano:

Las nuevas empresas deben estar muy centradas. Esto significa pasar años haciendo una cosa. Una vez que los cofundadores tienen un prototipo que funciona, en los primeros meses, existe la necesidad de desarrollar las API, la interfaz de usuario, los procedimientos de prueba, etc., que los cofundadores contratan a ingenieros de software para que hagan. Además, puede haber muchos clientes “importantes” que cuidar, sitios web que diseñar, presentaciones a los inversores para pulir y muy pocas personas para hacerlo.

En la academia , tiene muchas opciones una vez que tiene un puesto de facultad, pero mantenerse enfocado también tiende a funcionar mejor. Esto puede significar trabajar en una cosa toda su vida y considerar el resto de “proyectos estudiantiles”. (A Rajeev Motwani le fue muy bien en un proyecto estudiantil llamado PageRank. 😉 Además, primero necesita la paciencia para obtener un puesto de facultad.

En los laboratorios de investigación , puede estar trabajando en una serie de proyectos dentro de un año determinado, pero generalmente al menos algunos de los exitosos continúan durante varios años. Es mucho más fácil crear sus propios proyectos “financiados” que en las empresas de nueva creación (con la necesidad de escribir planes de negocios) o en la academia (donde necesita escribir solicitudes de subvenciones). Al contrario de lo que otros dijeron, los buenos laboratorios de investigación tienen todos los niveles de gestión con personal con doctorados con una mentalidad similar a la suya, por lo que no hay necesidad inmediata de explicar su investigación a graduados de la escuela secundaria o decanos con intereses diferentes al suyo. . Dicho esto, la mayoría de los laboratorios de investigación requieren un doctorado para que pueda obtener las mejores oportunidades y tener la capacidad de presentar su trabajo a un público amplio ayuda mucho.

Al no tener mucha experiencia con ninguno de los dos, me gustaría mencionar:

En los gigantes tecnológicos , puedes esforzarte, si puedes obtener un papel lo suficientemente alto. Muchos puestos de nivel de entrada involucran principalmente las API, las interfaces de usuario y las pruebas, y muy poco dicen sobre los proyectos en los que trabaja.

En consultoría (que no tiene por qué ser las Cuatro Grandes (firmas de auditoría), sino también consultorías especializadas como ARUP en ingeniería civil, Lufthansa Systems en transporte, etc.), también trabajará en muchos proyectos en un año determinado, pero muchos serán uno. fuera de los “lanzamientos” de preventa, que pueden o no ser comprados, independientemente del brillo de las ideas involucradas.

Finalmente, una última palabra irónica : el hecho de que su capacidad de atención sea X a la edad A no excluye la capacidad de atención de Y a la edad B, con Y >> X, B> A. takes Se necesita experiencia para aprender qué hace que los problemas sean importantes y para resolver qué problemas puede contribuir de manera significativa, lo que hace que valga la pena exponerse a unos pocos, inicialmente. Sin embargo, si un problema es lo suficientemente importante, hay (o habrá, en breve) una gran cantidad de trabajo relacionado, que puede beneficiarse de conocer, lo que aumenta los costos de cambio.

Creo que muchos de nosotros estamos confinados en este dilema. Pero hay soluciones bastante buenas para esto. Escribo a continuación los puntos que considero más adecuados para la respuesta. Los puntos 1, 2 son las mejores opciones y 3,4 son mejores.

Las mejores opciones:

1. Únase a un centro de I + D: grandes empresas como Google, Microsoft, IBM, Intel, Apple, etc. tienen sus centros de I + D e invierten una gran cantidad de dinero en ellos. Estos centros de I + D abordan problemas desafiantes de la vida real que requieren un alto nivel de habilidades en diferentes dominios. Las habilidades algorítmicas se aplican en cada dominio de esos. Si eres muy bueno en la programación competitiva (BTW, ¿cuál es tu calificación en TopCoder, Codeforces, etc.?), Obtendrás un puesto allí.
Estoy bastante seguro, definitivamente disfrutarás de esos trabajos. Porque esos trabajos requieren personas como USTED. Trabajo en Samsung R&D en mi país y sé que en otros países Samsung tiene “Algorithm Labs”. ¿Lo ves? ¡Un laboratorio dedicado al algoritmo! ¿No sientes que es tu sueño? Todos los gigantes grandes tienen este tipo de instalaciones, solo tienes que probarlo rigurosamente.

2. Únete a la Academia: esta también es una buena opción, como dijeron otras personas. Entonces, no tengo nada que agregar más.

Mejores opciones:

3. Cambiar la mentalidad: en primer lugar, no vea su trabajo como Ingeniería de Software o Fabricación ni nada. Siempre, véalo como un “Problema” de un concurso de programación. Cuando se le asigna una tarea, cree que es un problema de un concurso dentro de un plazo. Intenta resolver ese problema en el menor tiempo posible.
Si puede cambiar su mentalidad de esta manera, seguramente podrá trabajar con placer. Su trabajo será más rápido y obtendrá suficiente tiempo. Durante ese tiempo, también puede resolver problemas de programación competitiva.

4. Estilo BatMan: una respuesta anterior ha descrito el estilo BatMan que sigo a veces. También puedes seguir eso.

Creo que esto ayudará.

Otra cosa más importante, si puede hacerse un codificador ROJO / AMARILLO en TopCoder o Codeforces, su oportunidad de obtener un trabajo de I + D será mucho mayor. (Si no sabe qué es TopCoder o Codeforces, busque en Google. Estos son los lugares para conocer su calidad y cómo mejorarlos).

¡Gracias por leer! ¡Feliz vida algorítmica!

Que yo sepa, no creo que haya muchos trabajos que le paguen por hacer lo que quiere hacer. Debes investigar para esto.

Muchas compañías tienen sus respectivos “laboratorios” que trabajan en productos como la próxima generación. Se le paga generosamente por investigar y trabajar en aquellos productos en los que tiene que pensar en algos, complejidades y demás. La desventaja es que todavía tiene presión de la compañía que lo presionará para que “invente” algún producto que pueda vender. Deberá seguir mostrando resultados a un grupo de personas de “gestión” que no son tan técnicos. (Al igual que en las películas, hay un científico increíble que está trabajando en algo y la gente de la administración cortó sus fondos, diciendo que necesita mostrar resultados y bla, bla, no es tan dramático y grave, pero se entiende).

Otra forma de hacerlo es unirse a la academia. Hay personas maravillosas y brillantes que trabajan en diversas ramas de la informática. Pensar en algoritmos, investigaciones, pruebas y una gran cantidad de trabajo “real” es lo que hacen. No estoy tan seguro de los detalles, pero creo que el pago no es tan grande, pero supongo que debe ser satisfactorio.

O la tercera opción, ir al camino de “Batman”. De día es el típico ingeniero aburrido de s / w, de noche es el “investigador / solucionador de problemas increíble”. Contribuyendo a algún proyecto en su tiempo libre.

No eres el primero que no quiere lidiar con las ineficiencias, la política, el presupuesto y otros obstáculos. En su mayor parte, los trabajos que pagan bien y pagan constantemente son trabajos que generan dinero para la contratación del grupo. Desde mi experiencia, las startups y las organizaciones sin fines de lucro son menos rígidas pero no son un escape permanente.

Tendrás que ser creativo si quieres evitar la carrera de ratas o dejarla. Este es realmente el sueño de todo técnico. Podrías estudiar emprendimiento o convertirte en profesor y luego hacer investigación y programación competitiva de forma paralela. La academia es probablemente el mejor camino, ya que será más fácil mantenerse al día con las nuevas tecnologías y prácticas sin verse obstaculizado por lo que se adapta a un negocio o cliente en particular.

Thomas Edison dijo que un invento es uno por ciento de inspiración y noventa y nueve por ciento de transpiración. Para escribir un producto que alguna empresa usará o el cliente comprará, agregue ese 90% de “cosas aburridas” a esos prototipos divertidos que escriba primero. Estos incluyen elementos como la interfaz de usuario, escalabilidad, pruebas y corrección de errores. Si eres financieramente independiente, puedes quedarte con las cosas divertidas.

Creo que el mayor problema de nuestro tiempo es el hecho de que todos los días se crean numerosas tecnologías nuevas y tratamos de implementarlas en el trabajo / la vida a la vez, sin un análisis adecuado si esta tecnología es realmente un enfoque más efectivo para resolver este problema en particular, o si es Solo solución temporal.

Hay tales tipos de personas en la esfera de TI: 1) los que crean nuevas tecnologías, 2) los que implementan estas tecnologías y 3) los que analizan los resultados. Ahora son demasiadas personas las que pueden implementar la nueva tecnología, pero son menos las personas que pueden analizar su influencia y dicen: sí, es una solución efectiva o no, esta es una solución terrible, deberíamos dejar de usarla.

No todas las nuevas tecnologías son efectivas y útiles, solo un análisis adecuado le dirá la verdad. Es por eso que en la lista de los mejores trabajos para las personas que aman las matemáticas y la ingeniería, ve a Computer Systems Analyst en la parte superior.

Mi consejo para ti: haz lo que te gusta hacer, y todo estará bien 🙂

Agregando la respuesta de Michal Danilák. Si no opta por una startup (debido al aspecto de ingeniería de software), la academia sería su próxima mejor opción. Tomar esa opción también te permitiría participar en concursos en Kaggle o similar.

La creación de redes también es importante, encuentre más personas para resolver problemas como usted, le darán más información además de las buenas discusiones.

Puede probar la industria financiera específicamente el comercio de accesorios de baja latencia. Aquí hay una razón para implementar algoritmos de manera rápida y eficiente, y verá los resultados de su trabajo de inmediato. Si no funciona, entonces pierdes dinero! También los desarrolladores aquí para ser más competitivos entre sí que otras industrias debido a la existencia de un grupo de bonos.

Nadie es bueno trabajando en proyectos grandes hasta que lo hacen. La universidad generalmente no te prepara para esto, por lo que la mayoría de las personas terminan aprendiendo en el trabajo.

Su experiencia es como la de la mayoría de las personas cuando salen de la universidad, excepto en su caso, parece que realmente es bueno en algoritmos. Considera esto un éxito y vale la pena perpetuarlo (¡sigue con la práctica!), Pero considera continuar con problemas más grandes, donde no hay una solución simple del 80%.

Creo que lo más importante para usted es encontrar un trabajo más cercano a los algoritmos. Por ejemplo, optimizar el algoritmo de búsqueda para Google es algo muy interesante y en mi humilde opinión está cerca de lo que te gusta.
Intenta actualizar tu currículum para mostrar tu pasión y encontrar un trabajo que te encante.
¡La mejor de las suertes para ti!

Creo que estoy en una situación similar, aunque honestamente no he investigado realmente los concursos de programación. Más bien, disfruto pensando en algoritmos de manera abstracta y analizando el tiempo de ejecución más de lo que disfruto la ingeniería de software, donde las cosas deben ser lo suficientemente rápidas y después de eso, es mucho más importante tener un código que se pueda mantener.

Mi experiencia es la siguiente: definitivamente habrá problemas interesantes en la industria para resolver, es decir, lugares donde lo suficientemente rápido es muy rápido. Desafortunadamente, diría que la mayor parte del tiempo que pases se usará sin pensar en cómo resolver esto, sino en implementar una solución. Además, es mucho más difícil conseguir una posición en la que incluso seas tú quien piense cómo resolver estas cosas, especialmente cuando no tienes experiencia.

Todavía soy relativamente inexperto, así que no puedo decir que esto sea cierto para todas las empresas, pero por lo que he visto y oído de amigos, esto es más o menos la norma.

Siendo ese el caso, creo que ingresar a la academia parece ser tu mejor opción. Allí podrá resolver problemas difíciles todo el tiempo y al menos en informática teórica, las pruebas son apreciadas si no se requieren simplemente. La desventaja de ingresar a la academia es que tendría que obtener su doctorado (por lo tanto, pasar muchos años haciendo muy poco), los trabajos parecen ser escasos y probablemente tenga que ocuparse de muchas otras tareas no relacionadas con la investigación, como becas de enseñanza o escritura. Yo mismo no sé mucho al respecto, pero este es el tipo de cosas con las que he estado luchando también, así que espero que pueda ayudarlo a tomar la dirección correcta, o al menos lejos de la equivocada.

Parece más una cuestión de medio ambiente y empuje que un tema. Te encuentras con la personalidad adecuada para trabajar independientemente. Sin embargo, es probable que desee un par de años o más de trabajo permanente en su CV.

Muy buena pregunta Yo respondería esto un poco diferente a los demás.
Dado que ha mencionado que ha visto la industria de la tecnología y sabe cómo funciona, no quiero profundizar en eso si realmente cree que puede agregar valor optimizando los problemas complejos que resuelve y hacer un mundo mejor para vivir, entonces debería investiga y haz un favor a este mundo. Seguramente necesitaría algo de dinero para pagar sus facturas, lo que creo que debería ser atendido por las universidades en las que haría su investigación. Acéptelo: el trabajo no es para usted y esto debería tomarse en una nota positiva. Estás por delante del juego. Estamos haciendo nuestro simple trabajo de ingeniería de software por la misma razón por la que estamos contentos con él. No vemos un problema en cómo te va. Muy pocas personas realmente usan sus habilidades de lo que han aprendido durante su universidad como su pasión. La mayoría de nosotros aprendemos las herramientas del comercio en el trabajo. No te conviertas en la mayoría de nosotros. Buena suerte

Primero, no estoy familiarizado con el mundo de la programación.
Pero si le gusta un tipo de trabajo sobre otro, entonces mi sugerencia es tratar de encontrar un campo donde esa sea la norma en lugar de la excepción.
En su caso, tal vez en un centro de investigación o en una universidad donde pueda explorar nuevas soluciones como parte de su trabajo. Una empresa nueva o incluso establecida le daría la bienvenida si pudiera encontrar una que necesite nuevas soluciones utilizando algoritmos regularmente.

En cuanto a ser jodido por no conseguir el trabajo de tus sueños. Depende de qué tan lejos esté el trabajo que acepta de su trabajo ideal. Dicho esto, trataría de encontrar un trabajo que, si no está 100% satisfecho con uno con el que pueda contentarse y sentir cierta satisfacción por el trabajo que realiza.

Espero que esto ayude y todos los mejores deseos para su futuro.

Las grandes empresas siempre buscan programas competitivos, ya que aprenden rápido y son lo suficientemente dinámicas para nuevos proyectos.

Si disfrutas la resolución algorítmica de problemas más que la ingeniería de software, entonces podrías probar lo que hice: ¡ir a la academia e investigar algoritmos!

More Interesting

¿Cuáles son algunos de los mejores lugares (fuera de Estados Unidos) para obtener un título universitario (para obtener un título en ciencias) para los estadounidenses?

¿Es HIT una buena universidad para CSE / IT?

¿Puedo obtener una pasantía en Google después de la clase 12?

Cómo convertirse en un estudiante de matemáticas A (año 10)

¿Qué es Times Internet University (TIU)? ¿Y qué tan bien se da el entrenamiento allí?

¿Está disminuyendo el valor y el prestigio de los MBA?

¿Debo obtener una licenciatura en administración de empresas o una de contabilidad y economía?

¿Qué tan bueno es el programa BDes en UPES, Dehradun? ¿Vale la pena gastar tanto dinero en este programa?

Soy un estudiante universitario que elige entre estudiar italiano o español. ¿Qué proporcionará más diversión, experiencias interesantes en el extranjero o mejores trabajos?

¿Por qué los estudiantes de CS / IT obtienen mejores paquetes que los estudiantes de ingeniería central?

¿Qué universidades son mejores para los honores de economía con calificaciones entre 80-90%?

¿Qué opciones tengo si siento que no puedo hacer ingeniería y estoy interesado en leer y escribir cosas?

¿Debo dejar que mi hijo vaya a una escuela secundaria en línea?

¿Cuál es el mejor campo de maestría en administración después de la biotecnología?

Uno de mis primos obtuvo un rango de 40,000 en el EAMCET y un 84% en el IPE. ¿Hay alguna posibilidad de obtener un préstamo bancario?