Para un ingeniero de software que no encuentra interesante la programación competitiva pero le gustaría unirse a una gran empresa de tecnología (por ejemplo, Google, Facebook o Microsoft), ¿qué opciones tienen? ¿Es posible trabajar en una de esas empresas?

Consideremos que solo quieres un trabajo de programación :
En primer lugar, será muy difícil para usted obtener un trabajo de programación en estas empresas sin ser bueno en Algoritmos. La programación competitiva es la forma más fácil de juzgar para estas compañías, ya sea que alguien que contraten sea un buen programador o no. Es solo un medio para analizar a sus empleados. Si de otra manera eres bueno en algoritmos, aún puedes intentar aterrizar en cualquiera de estas compañías a través de sus entrevistas sin cita previa. La razón por la que digo esto es que codifican todo perfectamente. Nada, literalmente, nada puede ser lento o imperfecto. Los mejores algoritmos deben usarse mientras se desarrolla todo. Para eso, necesitará saber cuáles son sus opciones y qué algoritmos serán los mejores para cada problema. Esto se logra fácilmente mediante programación competitiva. Incluso si está desarrollando una API, cualquier módulo o incluso la interfaz. Todo tiene que ser optimizado.

Si realmente NO desea ingresar a la programación competitiva, debe buscar empleos en otros campos de estas empresas, como marketing, campañas universitarias, ventas, etc. Estos trabajos generalmente no requieren programación. 😉

Editar : dado que ahora tenemos un desarrollador de Google que ha respondido esta pregunta, me gustaría dar más detalles sobre lo que podría haber malinterpretado. La programación competitiva le brinda una experiencia detallada de desarrollo e implementación de algoritmos que es una prioridad en el reclutamiento de Google. Son personas humildes y no te desmoralizarán al decirlo directamente, pero confía en mí, lo que piden en sus pruebas escritas y entrevistas, solo se puede resolver cuando tienes una amplia experiencia en programación competitiva. Incluso no quiero desmoralizarlo, pero no quiero que viva con falsas esperanzas.

Edición 2 : Revisé otras respuestas y comentarios y me permití explicar más a fondo lo que mi eminente colega Kostadis Roussos quería decir. Claramente ha expresado su punto de vista sobre la inutilidad de la programación competitiva engendrada en el tipo de personas que contrata. Sin embargo, compañías como Google / Facebook piensan en miles de millones de usuarios que estarían usando su producto, reduciendo el almacenamiento en solo un bit, significa ahorrar 120 MB por segundo de uso. Eso se suma a mucho, es por eso que los grandes gigantes dan preferencia a las personas que son buenas en algoritmos (también conocido como Programación Competitiva).
¿Alguna vez se preguntó por qué una empresa como WhatsApp se vende por 19 mil millones de dólares, mientras que Zynga a pesar de ser una empresa de dos años de antigüedad, sigue siendo una empresa de 10 mil millones de dólares? Es debido a su base de usuarios y esa es la única parte verdaderamente declarada en la otra respuesta. La base de usuarios no se debe a que los desarrolladores están trabajando en grupos, o son capaces de pensar cosas sin estar limitados por el tiempo. Ciertamente, la base de usuarios no se debía a su capacidad de leer código o escribir código claro. Lo único que genera una base de usuarios es la usabilidad de su aplicación y eso SOLO SE PUEDE LOGRAR a través de algoritmos. Cualquier niño de secundaria puede codificar un sitio web para chatear y funcionaría perfectamente para quizás incluso 1000 usuarios, pero al llegar a un millón, se desmoronará y se convertirá en escombros. Es por eso que los gigantes exigen una programación competitiva. No pueden permitir que eso suceda, y si sucede (Lea el Blog de WhatsApp ) deben solucionarlo de inmediato. Supongo que todo eso es crucial en la programación competitiva y es por eso que los gigantes contratan de esa manera. Intente realizar una prueba para cualquiera de las organizaciones, o pregunte a las personas que realmente han realizado la prueba para Facebook o Google, sobre lo que hubo en el examen, le dirán mejor.

Desde mi experiencia personal, definitivamente no es necesario practicar programación competitiva para conseguir un trabajo de grandes compañías tecnológicas como Google, Facebook o Microsoft.

Es muy sencillo entender esto. En primer lugar, la programación competitiva es más como una forma de probar su capacidad de algoritmo y programación de una manera extrema. Por supuesto, las habilidades de algoritmo y programación son muy importantes para conseguir un trabajo en esas compañías, sin embargo, la programación competitiva es demasiado exagerada. No necesita resolver un problema de DP súper difícil para hacer su trabajo, de hecho, es muy raro usar un algoritmo muy avanzado y complicado en la mayoría de su trabajo diario. Dicho esto, para esos expertos competitivos, es posible que no muestren un mejor rendimiento que los ingenieros normales en el trabajo diario. En segundo lugar, también hay muchas otras cosas como la capacidad de análisis, las habilidades de comunicación que son igual o incluso más importantes. Sin embargo, todas esas habilidades no pueden evaluarse mediante programación competitiva.

Entonces aquí está mi consejo sobre cómo puede prepararse para conseguir un trabajo en esas empresas.

  • Si ya está bastante familiarizado con la estructura de datos y el algoritmo, puede omitir este punto. De lo contrario, dedique suficiente tiempo a esto. No puedo enfatizar más sobre este punto, ya que es lo más fundamental para una entrevista de ingeniero de software. Si no logras comprender bien esas estructuras de datos básicas que aprendiste en la escuela, simplemente fallaste en toda la entrevista. No estoy exagerando, una vez que haya pasado por varias entrevistas técnicas, se dará cuenta de lo importante que es. Los libros sobre la estructura de datos y el algoritmo están en todas partes, asegúrese de tener muy claros los elementos básicos como el árbol binario, la cola, la pila, la lista vinculada, etc.
  • Sumérgete en las preguntas de la entrevista real tanto como puedas. Hay toneladas de recursos en línea, como http://www.glassdoor.com, donde puede acceder a innumerables preguntas de entrevistas reales de empresas. No espere tener la misma pregunta de entrevista que preparó (aunque es posible), pero practicar con preguntas de entrevista reales lo ayudará a ser consciente de la dificultad, el estilo de cada empresa y lo que realmente les importa.
  • Practica escribir código en la pizarra. Esto es lo que la mayoría de la gente ignora. Parece bastante simple a primera vista, ¿verdad? Pero no es una vez que lo intentas. Echarás mucho de menos esos atajos sofisticados en tus editores de texto e IDE favoritos y, lo que es más, es muy inconveniente modificar el código como insertar otra pieza de código en el medio. Pero debe superarlo, ya que la mayoría de las entrevistas reales le pedirán que escriba un código SOLIDO en la pizarra. No necesita ser compilado, pero debería estar casi allí. ¡Sin pseudocódigo! Esto es incluso cierto para la entrevista de Google / Facebook, ya que durante la entrevista en directo estará “encerrado” en una sala de reuniones y seguirá escribiendo el código en la pizarra.
  • Practica con entrevistas simuladas . Es una gran experiencia para ti practicar de una manera en la que no puedes fallar. Puedes hacer esto con tus amigos y volver a entrevistarlos. También obtuve mi entrevista simulada de http://www.gainlo.co cuyos entrevistadores están trabajando en Google, Facebook, etc. y me dieron toneladas de comentarios.

La entrevista simulada personal es el enfoque más efectivo que he tenido porque tendrás sentimientos totalmente diferentes al pensar y resolver problemas frente a una persona. Estarás nervioso y puedes fallar incluso ante la pregunta más simple.
Además, los entrevistadores de una entrevista real no le darán ningún comentario real, solo pueden decirle la respuesta oficial, que no es otra que una mierda. Sin embargo, un entrevistador simulado lo ayudará a mejorar en todos los aspectos, especialmente si tiene experiencia.

En general, no es necesario profundizar en la programación competitiva para conseguir un trabajo (no digo que no sea útil, sino innecesario). Definitivamente, hay muchas formas en que su proceso de preparación puede ser menos doloroso.

No entiendo el énfasis en la programación competitiva en Quora. En Google (compañía), soy miembro del Comité de Contratación y gerente de contratación: los elogios de la programación competitiva en un currículum significan literalmente cero, nada, para mí. No son necesarios para conseguir un trabajo en tecnología.

Compite en eventos de programación competitivos si los disfrutas, pero no los persigas como una especie de requisito de entrada a Google et al.

Recientemente entrevisté y recibí ofertas de un grupo de grandes compañías de software. Mi respuesta proviene del punto de vista de un candidato que espera maximizar sus posibilidades de obtener una oferta, pero no ofrezco opiniones sobre si el sistema es bueno o no.

Ser un programador competitivo ayudará

Para superar el proceso de entrevista en las grandes empresas, uno debe ser bastante bueno para resolver problemas difíciles en un tiempo limitado. Esto es algo en lo que los codificadores competitivos son muy buenos. Estos trucos incluyen verificar algunos casos extremos, encontrar una solución de forma cerrada a un problema, encontrar el subproblema óptimo en una pregunta de programación dinámica, etc. Si bien no necesita estar cerca del nivel de un codificador competitivo, creo que usted Me iría bien solo por practicar algunos de los problemas más fáciles. Necesito más pruebas: mis reclutadores (personas de Google y Facebook) me pidieron específicamente que examinara los problemas de Euler y el codificador superior. Necesito aún más pruebas: se diluyeron muchos de los problemas de mi teléfono y la entrevista en el sitio, versiones significativamente más fáciles de los problemas que he visto en el codificador superior.

Entonces, ¿realmente necesito ser un programador competitivo?

Absolutamente no. Los codificadores competitivos enfrentan problemas que son mucho más avanzados que los solicitados en Google o Facebook (en mi experiencia). Las estructuras de datos requeridas en las entrevistas rara vez van más allá de pilas, árboles, montones y mapas hash. La mayoría de los problemas complicados se resuelven utilizando conocimientos básicos, en lugar de un conocimiento profundo de estructuras de datos avanzadas. Los problemas de gráficos rara vez van más allá de BFS / DFS. Todavía tengo que ver los problemas de gráficos de Djikstra, Prim o cualquiera de los más avanzados. Nunca he visto preguntas combinadas de nivel competitivo tampoco. Esto es para no rebajar el nivel de entrevistas en las grandes empresas tecnológicas. No buscan exclusivamente codificadores competitivos. Las grandes compañías tecnológicas tienen miles de empleados. Si contrataran exclusivamente codificadores competitivos, no podrían conseguir demasiada gente. La mayoría de ellos elige entrevistar a sus candidatos en función de su currículum (no se requieren credenciales de codificación competitivas). El proceso de su entrevista tiene como objetivo principal garantizar que no apestas.

¿Qué tal una opinión?

Sé que no prometí opiniones, pero la vida es corta. En una entrevista de proyección en una gran empresa (puede o no, pero definitivamente rima con LaceCook) me pidieron que resolviera un problema de programación dinámica. Sucedí que había resuelto ese problema antes y se lo hice saber a mi entrevistador. Insistió en que todavía lo resuelvo (tal vez pensó que estaba faroleando). Terminé el problema y luego me pidió que mejorara la eficiencia del espacio (pregunta de seguimiento estándar en todas las preguntas de programación dinámica en las que no necesita toda la tabla para calcular la respuesta final). Se suponía que era una entrevista de 45 minutos y terminó en unos 8 minutos (incluido el chat chit). Le pregunté al entrevistador por qué preguntó ese problema en particular y dijo que le proporcionó una buena manera de juzgar a los candidatos en un corto período de tiempo. Le recordé cortésmente que la razón por la que me tomé tan poco tiempo para resolver el problema fue porque había visto un problema así antes. El reclutador me llamó unos días después para informarme que me había ido muy bien en la entrevista. ¿Qué tan estúpido es eso? Muy. Tenemos que dejar de poner el proceso de entrevista de la gran empresa tecnológica en un pedestal. No es tan desafiante como una competencia de TopCoder (ni debería serlo). De hecho, una vez que hayas conseguido una entrevista, la segunda mejor estrategia para entrar en una gran empresa de tecnología (segunda solo para practicar más problemas) es trabajar en tus habilidades de actuación. Pretender solo encontrar una solución de fuerza bruta y luego tropezar cuando llegas a la solución O (log N) con exactamente 9 minutos de sobra, esa es una habilidad que ninguna cantidad de topcoder te enseñará. Recuerde escuchar las pistas del entrevistador y programe la próxima etapa de su acto de manera experta. Recuerde poner los punto y coma en su solución única de “subsecuencia común más larga” del copo de nieve porque solo los perdedores usan compiladores. Sacude la cabeza con furia y grita eureka hacia el final, mientras que en el fondo piensas en las preguntas enlatadas que harás al final de la entrevista. Finalmente, termine con una gran sonrisa, como si su vida se enriqueciera de alguna manera significativa al encontrar el elemento número k más grande entre dos arreglos ordenados.

Déjame ser directo. Es una pregunta simple y a algunas personas les gusta complicarla y casi hasta cierto punto de hipocresía (mala elección de palabra, pero no se me ocurre una mejor, lo siento muchachos). Creo que entiendo tu dolor.

No es una programación competitiva, es solo una programación difícil que se enfoca principalmente en algoritmos, esas preguntas lo obligan a dar una solución logN en lugar de N ^ 2, necesita aplicar una programación dinámica para resolver un problema, etc. Personalmente odio esas preguntas también, porque simplemente no soy bueno en eso. La realidad en el trabajo es que, en la mayoría de los casos, realmente no necesita lidiar con esos problemas y, si de hecho son problemas reales, uno o dos tipos en su equipo o la compañía se encargarán de ellos porque son más inteligentes que usted .

La razón por la que Google / Facebook / Twitter hace esas preguntas (o esos juegos de ingenio “estúpidos”) son simples, quieren lo mejor de lo mejor, si no te gusta hacer esas cosas, hay dos cosas que puedes hacer.

1: Elige un libro y aprende lo suficiente para pasar la entrevista. Creo que puedes hacerlo, pero solo necesitas tener esa determinación. (está en mi lista de tareas para siempre).

2: Trabaja para nuevas empresas donde se preocupan más por hacer las cosas y su producto no requiere esas habilidades que no posees.

Mi respuesta se basa en mi experiencia personal y lucha. Simplemente apesta con esas cosas, tal vez porque simplemente no soy lo suficientemente inteligente o mi actitud de vago. Trabajé en 3 startups SV hasta ahora. Si bien no obtuve el mejor desempeño, definitivamente tengo un desempeño superior al promedio. Lo que hice fue trabajar muy duro, pensar mucho acerca de cómo abordar el problema de la manera correcta y realmente preocuparme por lo que hago. Ciertamente, las compañías me rechazaron porque exploté preguntas sobre algoritmos de compañías como CouchDB, pero todo el tiempo estaba buscando trabajo, siempre tenía múltiples ofertas de compañías decentes.

Una cosa que mi ex jefe me dijo acerca de mi desempeño fue que el esfuerzo cuenta. Cuando no tengas la inteligencia pura, concéntrate en tu otra fortaleza.

En una palabra: si.

La programación competitiva no tiene mucho que ver con la programación real, y para los candidatos de nivel superior, la cantidad de preguntas de entrevistas de programación que hacen es bastante mínima. Dicho esto, todavía querrás saber tus cosas antes de la entrevista y estar preparado para responder preguntas complejas y aparentemente inocuas con respecto a la disciplina de la pregunta de una manera que demuestre que has pensado en las cosas a escala.

Un ejemplo de esto es la siguiente pregunta:

Supongamos que desea realizar operaciones de agregar, quitar y recuperar en una tabla hash con clientes en ella. ¿Cuáles son algunas cosas especiales que tendrías que considerar al implementar un mapa hash?

Bueno, para la mayoría de las empresas, esto es trivial, es una estructura de datos en memoria, coloca a todos en ella, la conserva en la memoria durante la vida útil de la aplicación y la almacena en el disco cuando la apaga y la vuelve a abrir cuando puesta en marcha. Luego, agrega y elimina con moderación, y recupera a través de hash.

Esa es la mayoría de las empresas. Google le hará la misma pregunta y le dirá “Bien, ahora qué pasa si hay cuatro mil millones de entradas de clientes y el hashmap ya no cabe en la memoria, pero aún queremos que la búsqueda sea lo más rápida posible. Además, dado que ahora vamos a conservar partes del mapa en el disco cuando no lo estamos usando (o al menos vamos a hacer algo con él que no sea tenerlo en la memoria), ¿cómo optimizamos qué partes de Qué mapa están en la memoria para minimizar el tiempo de recuperación? Si el Hashmap es un conjunto con restricciones sobre la unicidad si agregamos un nuevo registro, ¿cómo hacemos para propagar el complemento en varios sistemas si estamos distribuyendo el mapa en varios servidores? Y así sucesivamente.

Esa es de repente una pregunta MUY diferente a la anterior, y si no estás acostumbrado a pensar en esos términos, al principio vas a tambalearte. La platija está bien, quieren ver qué tan cerca puedes llegar a lo que creen que es la respuesta correcta en esas circunstancias cuando tienes que diseñar una solución para un problema que nunca has visto antes. Eso sí, SABER la respuesta si hay una respuesta definitiva (¿cómo puede asegurarse de que un punto de datos que desea agregar sea único? Use un filtro Bloom) es una excelente manera de obtener una entrevista en Google, pero ciertamente no es necesario .

Entonces, piense en los problemas que tiene Google y experimente para resolverlos, tal vez incluso elija una parte particular de un problema en su espacio preferido y cree una biblioteca de código abierto con una solución que revise con el tiempo. Le enseñará a pensar en los problemas que suceden a la escala que Google trata todos los días, y eso es una gran parte de lo que Google realmente está buscando de los candidatos, y es increíblemente difícil de encontrar, ya que solo unas pocas empresas tienen problemas en eso. tipo de escala

Por último, esté dispuesto a fallar algunas veces. Casi nadie accede a su primera entrevista, y el proceso de entrevistas en compañías como Google favorece los falsos negativos. La forma en que manejas el rechazo también dice mucho sobre tus cualidades como ingeniero de software.

Esta respuesta se aplica por igual a la mayoría de las compañías de ingeniería de software de Internet: Google, Facebook, Netflix, Oracle y muchas otras.

Espero que esto ayude.

La gente ya ha pasado por la inutilidad de la programación competitiva.
déjame abordar la otra parte.
Cómo conseguir un trabajo en BIG corp. (ya sea FB / Google / MSFT)

La primera parte es que debes hacerte notar. Enviar su currículum es una forma, pero yo diría que es menos efectivo. necesitas un amigo en el interior para recomendarte para un puesto, o llamar la atención de un reclutador.
así que asista a reuniones, responda preguntas en listas de correo y, en general, escriba su nombre en su área.

La segunda parte es blitzing la entrevista. Aunque no creo en ellos, necesitarás ser bueno en:
– pensando rápidamente en un problema (para pantallas de teléfono),
– Recordando hechos básicos … (lo que O (XXX) es una clasificación rápida).
– y haciendo algo de codificación básica en una pizarra / documento de google.
Todo el tiempo conversando con su entrevistador y causando una buena impresión.

Las otras cosas que mencionaría, que tal vez no se den cuenta es que dentro de cada GRAN cuerpo, cada división / departamento es diferente / tiene una cultura diferente, y mucho depende de cómo se lleve con su gerente.
podrías estar en una fábrica de explotación o en una playa … no puedes verlo a primera vista. esa es también la razón por la que debes conocer a algunos expertos. Ellos te ayudarán un poco en qué áreas son interesantes.

y, por último, ¿por qué quieres trabajar para un GRAN cuerpo en primer lugar? Si eres joven / acabas de terminar tu carrera, arriesgate y trabaja para una startup y sé un experto en todos los oficios por un tiempo.

Si el liderazgo sénior de Google renunció a ese tipo de pruebas y méritos, e independientemente del proceso oficial de entrevista de varios pasos de la compañía dirigido a la mirada imparcial más completa del candidato, los gerentes de nivel más bajo (líderes de equipo, etc.) evalúan al candidato , que representan a la empresa en materia de contratación. Contratar suficientes académicos y madres de tigres criados 4.o grados de GPA, y convertirían las entrevistas en exámenes universitarios.

El problema es mucho más profundo que el impulso de la madre tigre por la excelencia académica. La industria está inundada de mano de obra barata, principalmente de un país. El “outsourcing” “offshore” fue novedoso en 2002, solo a los ojos de los directores financieros no técnicos, pero aún así, lo suficiente como para tomar esas decisiones. Por ahora, las empresas se han dado cuenta del valor negativo de $ 5 o incluso $ 20 / hr “recursos de descuento”. Crea más desorden que repara errores, desordenes que requieren expertos de más de $ 100 / hora para limpiar.

Desafortunadamente, incluso si los empleadores no quieren esa masa de cuerpos, todavía está ahí afuera, bloqueando todas las vías de contratación, que, como las estrechas calles históricas del vecindario durante la hora pico, no fueron diseñadas para tal volumen. ¿Cómo puede un candidato legítimo separarse de los “recursos de descuento”? ¿Cómo puede alguien asegurarse de que su currículum sea leído por el gerente de contratación? Quién mira en el top 10 máximo – de los miles de currículums de BS lanzados en la posición por los reclutadores. O perfiles publicados en Dice y LinkedIn.

Y así se inventaron canales alternativos para evitar autopistas y puentes atascados que conectan a los candidatos y empleadores. Meritocracia en lugar de la coincidencia de palabra clave de reanudar. Dale un par de años y esos canales también se inundarán. ¿Y que? ¿Rompecabezas progresivamente más difíciles?

¿Cuántos logros en la vida real tiene un graduado universitario? No todos pueden tener ideas para sus propios sitios web y aplicaciones, y mucho menos la resistencia para ejecutar: multitarea con el “trabajo diario” de ser un estudiante universitario a tiempo completo. Agregue la mentalidad del erudito: ser juzgado por los resultados del ejercicio y pasar interminables exámenes parciales y finales, y uno naturalmente adoptaría el sistema de calificación de la universidad a la vida real. Además, las mamás tigre y las “sabidurías” comunes muy obsoletas de “comer vegetales” y “buenas calificaciones garantizan el éxito en la vida”. Con la población más baja … tal vez. Ciertamente no después de anexar países de miles de millones de habitantes al grupo de trabajo occidental.

Contrata suficientes graduados ambiciosos, y sí, convertirán la contratación en una competencia académica a pesar de todos los esfuerzos de la compañía para evitarlo. Es un escenario sin ganancias dentro del sistema de reclutamiento actual. ¿De qué otra manera un graduado universitario obtendría el trabajo que él / ella merece? Al darle una oportunidad, ¿verdad? Y esperando pacientemente los resultados. ¿Cómo eliges a quién dar esa oportunidad de entre mil personas hambrientas de trabajo? ¿Por preferencias personales de la tribu / clan u otras “conexiones”? Ingenieros talentosos abandonan sus países del segundo y tercer mundo principalmente para evitar eso. Con la esperanza de ver la meritocracia en acción.

Es necesario cambiar todo el sistema de contratación de ingeniería para hacer frente a la presión laboral del tercer mundo, tan drásticamente como abandonar los currículums. En lugar de simplificar un paso (prueba) al ponerlo en línea y / o convertirlo en un concurso / hackathon.

No me gusta la programación competitiva, no es que no me interese, ¡pero nunca dedico tiempo a eso! Tengo amigos que ocupan un lugar destacado en TC y CodeChef y les hablo, creo que debería hacerlo, pero hay algo que me empuja a construir cosas en lugar de participar competitivamente. Trabajé en Microsoft, Amazon y Samsung y pronto me uniré a Facebook, ¡también tengo un amigo que no está en programación competitiva pero que ha trabajado en Microsoft, Amazon y Google! Mi punto es que no tienes que estar en programación competitiva, ¡estas compañías valoran a los constructores y a las personas que saben cómo se puede usar la tecnología en el mundo real! Si puedes convencerte a ti mismo y a las empresas de que eres un constructor, alguien que lo haga en lugar de solo pensar en cosas que te recogerán en poco tiempo.

Para aclarar las entrevistas, es posible que desee repasar sus conceptos básicos, pero, de nuevo, si está construyendo cosas, sabría todo esto de todos modos. Las entrevistas ponen a prueba su sentido común y lo que esperan de usted en el trabajo son ideas y una forma organizada de hacer las cosas de manera efectiva.

Como pasante, diría que es cierto que una parte significativa de los ingenieros de software junior contratados por gigantes tecnológicos tienen experiencia en programación competitiva. Pero me temo que la correlación no es necesariamente causalidad.

Por un lado, en el caso de las entrevistas tecnológicas, sí. La experiencia de programación competitiva es para ayudarlo mucho a resolver las preguntas de la entrevista en poco tiempo, de una manera aún más limitada que la mayoría de las competencias de codificación.

Por otro lado, la programación competitiva es una de las formas más efectivas de desarrollar sus habilidades de codificación. De hecho, sospecho que una gran proporción de estudiantes universitarios de CS no codificaron lo suficiente como para practicar esta habilidad. Y en comparación con eso, aunque la programación competitiva no se superpone demasiado con los trabajos diarios para los ingenieros de software, sus participantes realizan una cantidad significativa de código y bastante depuración.

Sin embargo, sin ofender a la educación CS, no es raro que un estudiante senior de CS no pueda implementar correctamente Dijkstra, o un montón. ¿Algún ingeniero de software codifica algoritmos como Dijkstra a diario? Probablemente no. ¿Él / ella codifica / depura cosas de complejidad similar? Probablemente.

Como se menciona en muchas otras respuestas, sí, contribuir a proyectos de código abierto o incluso comenzar uno propio es beneficioso en el sentido de experiencias prácticas de codificación / depuración.

No es necesario participar en competencias de programación para obtener un puesto en una gran empresa tecnológica. De hecho, pocos de los desarrolladores más antiguos han participado en una competencia de este tipo, ya que no estaban tan extendidos hace más de 15 años.

El desempeño en la entrevista es importante. Así que prepárese para codificar en una pizarra, responder preguntas de diseño, etc. La programación competitiva puede ayudar con la entrevista, pero de ninguna manera es esencial.

Hay muchas formas diferentes de obtener esa primera entrevista.

  • Tener un doctorado en un campo relevante (por ejemplo, lingüística computacional, visión artificial).
  • Graduado con honores en una de las mejores universidades.
  • Convierte a tiempo completo de una pasantía.
  • Trabaja en cualquier otra gran empresa tecnológica.
  • Tener experiencia laboral relevante en una startup.
  • Contribuir a proyectos de código abierto. Aún mejor, comienza el tuyo.
  • Obtenga una referencia interna.

Ser clasificado a nivel nacional en una competencia de codificación es solo una forma de llamar la atención de un reclutador.

Hay muchos mitos en torno a las oportunidades profesionales de Facebook, Google y Microsoft, y ¿es realmente posible pasar una entrevista?

Están llenos de complicados acertijos matemáticos, que solo pueden resolver los genios que pueden Rain Rain soluciones perfectas de la nada. A menos que sea un niño prodigio que construyó computadoras a los 10 años y estudió informática en Stanford a los 16 años, no tiene ninguna posibilidad.

¡Incorrecto! La carrera / entrevista de Facebook, Google, Microsoft es extremadamente fácil de aprender.

Para comenzar, todo lo que necesita son algunas habilidades generales de programación, del tipo que puede obtener

  • Casa del árbol
  • Code Avengers
  • Código escolar
  • LearStreet
  • Udacity
  • CodeHS
  • Academia Khan.

Pero para tener más confianza mejor saber:

  1. C / C ++ / C #
  2. Java
  3. Desarrollo de software
  4. Pitón
  5. JavaScript
  6. Algunas metodologías ágiles
  7. SQL

Bueno, creo que si eres un estudiante universitario y quieres trabajar en empresas tecnológicas de primer nivel (Google / Facebook / Microsoft, etc.), la programación competitiva sería de gran ayuda. De hecho, la programación competitiva te ayudará a aprender mucho de cosas interesantes, especialmente algoritmos. En segundo lugar, le ayudará a aprender cómo abordar los problemas, trabajar bajo presión, seguramente aumentará su paciencia en virtud. Y sí, lo llevará a cualquiera de esas compañías de primer nivel a las que desea ir. Entonces uno de mis amigos aquí mencionó proyectos de código abierto. ¡Tipo! trabaje en uno y tenga algún impacto allí (muy recomendable). Y desarrolle una destreza en cualquiera de esas áreas técnicas como el desarrollo de aplicaciones de Android / iOS o desarrollo web o IA (si desea ser más vulnerable a los reclutamientos), etc.
Ahora para mis colegas que critican la programación competitiva y dicen que significa casi cero en el perfil de un individuo. Puede ser que tengan razón, pero echemos un vistazo a esto ¿Cómo fue reclutado Anudeep Nekkanti para Google, Zurich?
Lea el último párrafo, cito
“Lo que me ayudó a conseguir este trabajo: programación competitiva. Eso es todo lo que hice bien desde mi segundo año hasta la fecha. Lo que pude responder en las entrevistas fue por lo que aprendí sobre programación competitiva. :)”

Anudeep es uno de los reclutas recientes en Google Zurich y él responde a la pregunta anterior.
———————————————————————————————
Puedes ver que escribí un sustantivo en negrita en la primera línea de mi respuesta. ¡Y sí, el “Prerrequisito” de ser tremendamente fabuloso en la programación competitiva para trabajar en las empresas de primer nivel es cierto para los estudiantes universitarios, independientemente de su raza, institución, título, calificación o País LOL! (un poco absurdo)

PERO no creo que eso también sea cierto para los ingenieros experimentados, quiero decir que ya tienen una experiencia notable de sus trabajos obtenidos en su lugar de trabajo anterior y son muy buenos en eso.

Entonces, los chicos que juzgan la programación competitiva como el único criterio no es recomendable. Hay muchas otras cosas que hacer incluso como ingeniero de software.
Explore nuevos campos, la informática tiene un dominio real.
Lo más importante: ¡DIVIERTE Y AMA LO QUE HACES!

Soy un ingeniero que hizo la transición a la gestión de productos hace 7 años, y ahora enseño a otros ingenieros a hacer lo mismo de Product School, un curso de gestión de productos a tiempo parcial de 6 semanas para ingenieros de software en San Francisco: cursos de gestión de productos en San Francisco

Aquí está la presentación que hice recientemente sobre “Cómo pasar de la ingeniería a la gestión de productos”. En resumen, hay 3 habilidades críticas que debes desarrollar para conseguir un trabajo como Gerente de Producto en el campo del software, independientemente del canal que utilices para encontrar reclutadores:

  1. Experiencia técnica
  2. Dominio de la industria
  3. Habilidades de comunicación

La razón principal por la que los ingenieros deciden hacer un cambio de carrera hacia la gestión de productos es porque están interesados ​​en tener más poder de decisión sobre la estrategia de producto de la empresa, en lugar de solo codificar lo que otra persona les dice que codifiquen.

Uno de los errores más comunes al obtener su primer trabajo de MP es establecer altas expectativas. En cambio, debe trazar trayectorias profesionales realistas (idealmente, dentro o fuera de su empresa actual):

  • Ingeniero -> Gerente de Programa Técnico -> Gerente de Producto
  • Ingeniero -> Atención al cliente en el inicio -> Gerente de producto
  • Ingeniero -> Ingeniero de Ventas -> Gerente de Producto
  • Ingeniero -> Project Manager -> Product Manager

Su trabajo ideal de MP probablemente no será su primer trabajo de MP, pero asegúrese de que sea relevante para su objetivo profesional.

En primer lugar, amplía tu horizonte. Prácticamente cualquier empresa de hoy necesita desarrolladores de software, y algunos de ellos pueden no centrarse tanto en la programación rápidamente. En particular, las compañías que tienen que producir software de alta calidad, altamente confiable y fácil de mantener (por ejemplo, compañías automotrices, contratistas de defensa, NASA y muchas otras grandes empresas) podrían estar más interesadas en alguien que sea metódico y que produzca software de alta calidad en lugar de Alguien que se centra en la velocidad.

En segundo lugar, considere dónde puede llevarlo una carrera en software. Una buena carrera podría ir desde la programación hasta liderar un equipo de programación, administrar un proyecto, administrar un gran proyecto y diseñar un sistema grande e integral para resolver un problema importante (por ejemplo, el sistema de control de tránsito aéreo o el sistema informático de una aeronave) . Las personas que alcanzan la cima tienden a no ser las programadoras competitivas, sino las que pueden liderar un equipo, administrar un proyecto y, lo que es más importante, quienes pueden comunicarse de manera efectiva con los demás. Por ejemplo, es posible que tenga la mejor solución técnica del mundo, pero no servirá de nada a menos que pueda vender sus ideas a las personas con dinero, que pueden tener poco o conocer conocimientos técnicos. Lo que esto significa, por supuesto, es que debe aprender más que la informática: debe aprender a leer, escribir y comunicarse, a organizar y administrar, etc.

La programación competitiva es un juego para determinar quién es el más inteligente en la menor cantidad de tiempo. Las buenas prácticas de desarrollo de software requieren tiempo y paciencia. El tipo de ADD que fomentan los juegos de programación competitivos se opone directamente al tipo de desarrollador estable a largo plazo que buscan la mayoría de las empresas. Si te gusta el juego, anímate y disfrútalo. Pero no piense que ganar en una aplicación artificial se traducirá en un trabajo.

Si no te gusta la programación básica, también hay muchas otras funciones interesantes en estas empresas tecnológicas. Muchos de esos roles requieren buenas habilidades técnicas para que pueda trabajar bien con los ingenieros y los clientes técnicos, pero esos roles no esperan habilidades básicas de programación. Tu experiencia debería ser útil allí. Dos roles de ejemplo obvios son Product Manager y Program Manager. Pero hay muchos más.

Entiendo que un gran desafío es saber cuáles son las expectativas de estos roles, qué esperan los gerentes de contratación y los entrevistadores y cómo prepararse. Puede tomar algunos cursos, leer mucho, contratar algunas agencias de colocación, pero nada es mejor que la tutoría y la orientación de personas que realmente son gerentes de contratación y entrevistadores en este tipo de empresas. Encuentra a esas personas de tu red. Si no tiene una buena red, intente usar este foro en línea para obtener tutoría y simular entrevistas de entrevistadores reales y gerentes de contratación. Esta es una excelente manera de obtener comentarios personalizados y sugerencias útiles sobre cómo prepararse para estos trabajos y la entrevista.

Está clasificando la forma competitiva de programación en el primer lugar de la lista. Cuando lo veo en un currículum, todo lo que me indica es que te gusta la programación competitiva.

Tener proyectos personales es igual de bueno para demostrar que te gusta escribir software, que no es solo un trabajo. Considero más los proyectos personales porque puedes investigar más a fondo ya que hubieras tenido más tiempo para planificar, construir y refinar tu trabajo.

Lo principal que les importa a las empresas es si tienes las habilidades para hacer lo que necesitan.

Si crees que tienes las habilidades necesarias, entonces debes concentrarte en otras cosas que te ayudarán a encontrar trabajo. Esas otras cosas incluyen mejorar sus habilidades de entrevista y también idear formas que pueden poner su pie en la puerta. Por ejemplo, trabajando en su currículum vitae, encontrando personas que respondan por usted en las empresas que desea trabajar, etc.

¿Es necesario ser un programador competitivo para ingresar a Google?

No, nunca he hecho ninguna programación competitiva y aún así he ingresado. Nunca he visto un desafío o partido de programación competitiva y no conozco a ningún programador competitivo. He oído hablar de TopCoder, pero nunca lo he visitado, y creo que es un sitio de programación competitivo, pero ni siquiera estoy seguro.

Sin embargo, tengo algo de experiencia en programación de proyectos paralelos.

Tampoco creo que sea un requisito previo. Algunos de los entrevistadores parecían estar interesados ​​en esos proyectos (están en mi CV), pero más a nivel informal, no hicieron preguntas en profundidad al respecto.

  • La programación competitiva no es como jugar al golf. ¿Por qué golf? Porque no tiene nada que ver con la informática. Pero la programación competitiva tiene mucho que ver con CSE. Para su amable información, la programación competitiva ayuda al programador a aprender a desarrollar mejores algoritmos. ¿Eso es inútil? Ciertamente no. La programación competitiva no es imprescindible para ser contratado, pero le ayuda a ser preseleccionado para entrevistas. Lo hace. Lo repito Lo hace. Los avances tecnológicos hacen preguntas que tienen mucho que ver con los algoritmos. Y hoy en día, incluso otras compañías han comenzado a seguir la misma tendencia. No necesitan esas habilidades, pero esto no les impide plantear problemas algorítmicos en las entrevistas. Google codejam, Facebook HackerCup, ACM ICPC, etc. no existen para entretener a las personas. No están destinados a dar a las personas una plataforma para divertirse. Muchas compañías seleccionan candidatos para nuevas rondas de entrevistas al juzgar su desempeño en los concursos de codificación. Google también lo hace. Espero que hayas entendido. Tener conocimiento de diferentes marcos y tecnologías es una forma diferente de ser reclutado y reclutado, y la programación competitiva es diferente. Ambos son interdependientes.

More Interesting

Si me dan un trabajo de desarrollador para el que no soy bueno y lo hago al asignarlo a trabajadores independientes en el trabajo por adelantado, ¿qué podría salir mal?

Si alguien afirmara producir un programa de software consciente, ¿cómo se probará?

¿Por qué algunos desarrolladores senior y líderes tienen la cabeza en alto y desprecian a las personas con menos habilidades técnicas?

¿Cómo conseguir un trabajo en QA Profile en Bangalore mientras actualmente se encuentra y trabaja en Kolkata como ingeniero de control de calidad y pruebas? Como dar la entrevista

¿Cuánto tiempo lleva encontrar un trabajo como ingeniero de software después de graduarse de Hack Reactor?

Soy un probador de software con 4 años de experiencia. ¿Puedo pasar a la prueba de dispositivo móvil (prueba de producto)?

¿Qué puestos debe evitar un recién graduado en ingeniería de software / informática para su primer trabajo?

¿Cuáles son los pros y los contras de elegir un trabajo de autorización de alto secreto en lugar de un trabajo de producto comercial superior (como ingeniero de software)?

¿Cuál tiene bueno como carrera, crecimiento, salario a largo plazo? (1) Ingeniero de pruebas de selenio-probador de automatización O (2) ¿Probador interno de dataware / probador ETL?

Cómo aprender las habilidades necesarias para una pasantía en informática (especialmente ingeniería de software), aparte de lo que aprendo en la universidad

¿Qué se siente al trabajar como ingeniero de software en Info Edge (India) Ltd.?

¿Debo abandonar la idea de convertirme en ingeniero / programador de software, porque no tengo un título universitario en ese campo?

¿Qué es lo mejor para una prueba de software de ingeniería electrónica más reciente o un desarrollador PHP y Java?

Si no me etiquetan para un proyecto (trabajo como recurso sombra), ¿contaría la experiencia?

¿Cómo pasaste de profesor a desarrollador, cuánto tiempo te llevó?