Guía definitiva: Cómo conseguir un puesto de ingeniería de software de nivel inicial

La ingeniería de software puede ser una carrera increíblemente gratificante. Pero sin la preparación adecuada, puede ser difícil conseguir el trabajo de ingeniería de software que tienes en mente. Yo aprendí esto, mientras tomaba cursos de ciencias de la computación en la universidad para conseguir un papel de ingeniería de software (SWE).
Me entrevisté para una docena de puestos de software en la mayoría de las empresas tecnológicas que puedas nombrar: Google, Apple, Microsoft, y startups (en ese momento) como Snapchat y Uber. Aquí resumo mis aprendizajes, a partir de mi preparación para el trabajo y mis experiencias en entrevistas, para ayudarte a prepararte en tu viaje en el mundo de la ingeniería de software: desde la lluvia de ideas sobre a qué empresas aplicar, el envío de un mensaje frío a un reclutador en LinkedIn, el perfeccionamiento de tu currículum, cómo son las entrevistas típicamente, y qué temas de ciencias de la computación estudiar.
Esta es la única guía que necesitas para aterrizar un trabajo de ingeniería de software de nivel de entrada.

Aplicar a las empresas

Muchas grandes empresas contratan ingenieros de nivel de entrada. Por lo general, se trata de papeles genéricos para recién graduados (no estás entrevistando para ser específicamente un desarrollador de iOS). Tampoco descartes las empresas no tecnológicas. Todos los sectores buscan talentos tecnológicos, y la tecnología está revolucionando todos los campos de forma emocionante.
Puedes encontrar estos puestos en la feria de carreras de tu universidad, hablando con un reclutador, o buscando en Google estas palabras clave: nombre de la empresa + carreras universitarias.
Si no eres un estudiante, sino que te has introducido en la tecnología a través de un campo de entrenamiento de codificación o enseñando a codificar por ti mismo, este es también un buen lugar para empezar. A menudo hay puestos de trabajo de nivel básico publicados junto a estos trabajos para estudiantes. Sin embargo, si estás haciendo una transición a mitad de carrera, es posible que tengas que hacer un poco más de red (a través de amigos, eventos o mensajes fríos a los reclutadores).
Aquí tienes algunas ideas sobre dónde empezar a buscar:

  • Grandes empresas tecnológicas (Facebook, Apple, Amazon, Google, IBM, Cisco)
  • Estrellas tecnológicas (Snowflake, DoorDash)
  • Finanzas (Goldman Sachs, Visa, Robinhood)
  • Entretenimiento (Disney, Viacom)
  • Minoristas (Macy’s, Target, Walmart)
  • Defensa/Aeroespacial (Boeing, Northrop Grumman)

El perfecto mensaje en frío de LinkedIn

Inevitablemente, habrá empresas que no se pongan en contacto contigo ni siquiera después de que lo hayas solicitado directamente. Para intentar que la pelota ruede, trata de establecer una red para conseguir una entrevista. Para ello, puedes ponerte en contacto con los miembros de tu red (antiguos alumnos o amigos) o con los propios reclutadores.
Estas son mis 5 reglas para un mensaje en frío de LinkedIn:

  1. Averigua si una conexión mutua puede presentarte: es menos probable que la gente ignore a quienes ya conoce.
  2. Mantén la concisión: la gente está ocupada. No les des una excusa para leer parcialmente tu mensaje antes de descartarlo.
  3. Encuentra puntos en común – Si ambos fuisteis a la misma escuela o trabajasteis en la misma empresa, saca a relucir ese hecho para provocar la familiaridad.
  4. Sea directo – No se vaya por las ramas tratando de entablar una conversación trivial. Este no es el lugar para eso.
  5. Demuestre credibilidad – Si tiene experiencia relevante, dígalo. Si tienes conocimientos particulares, dales una muestra.

Aquí tienes una plantilla de mensaje frío de LinkedIn para empezar:
¡Hey, muy interesado en unirme y ver si hay un ajuste mutuo! Soy un ex @ . Me encantaría charlar.
Ejemplo:
¡Hey, muy interesado en unirme a Roblox y ver si hay un ajuste mutuo! Soy un ex PM @ Rockstar Games. Me encanta el concepto de juego social no estructurado. Me encantaría charlar.

Currículum

Escribir un buen currículum es una forma de arte, que se reduce a dos cosas: el formato y el contenido.
El mayor error que comete la gente con el formato es añadir demasiada información, con el currículum terminando en dos o incluso tres páginas. Eso es innecesario. Hazlo de forma sencilla. Tu currículum debe ser de una sola página. Utiliza la cursiva y la negrita de forma estratégica; en realidad, sólo deberían usarse para ayudar al reclutador o al director de contratación a entender quién eres y qué aportas (por ejemplo, úsalas sólo para poner en negrita las secciones y los nombres de las empresas).
En cuanto al contenido, asegúrate de decir más diciendo menos. No se ande con rodeos y utilice cifras cuantitativas. Los números proporcionarán pruebas fehacientes de tus contribuciones. Intenta centrarte en tus habilidades concretas. No es necesario decir innecesariamente al reclutador que eres un gran jugador de equipo, un visionario o un gran trabajador. Cualquiera puede decir esto. En su lugar, muestra a través de la acción cómo has ayudado a tu equipo.
Para obtener más información, echa un vistazo a esta lista de verificación para asegurarte de que tu currículum de ingeniería de software está pulido y listo.

Una entrevista típica

Desde mi experiencia, el proceso de las entrevistas de ingeniería de software es más o menos el mismo en todas las empresas, ya sea Google o una pequeña startup que acaba de levantar su serie B. Esto es lo que puedes esperar razonablemente en el proceso de la entrevista.

Comportamiento

La ronda de comportamiento normalmente se hace por teléfono con un reclutador o el gerente de contratación para el papel. En esta conversación, la empresa quiere averiguar si encajas bien en el puesto, tanto por tu experiencia como por tu capacidad de comunicación (y para que puedan calibrar si puedes ser una persona problemática para trabajar). Conozca bien su currículum, ya que es probable que el reclutador o el director de contratación le pregunten sobre las experiencias que figuran en su currículum en esta conversación.

  • Más preguntas sobre el comportamiento: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions

Desafío de codificación

Después de la entrevista de comportamiento, puede obtener un desafío de codificación para completar en su propio tiempo. Esto podría significar obtener una lista de requisitos y un esqueleto de código. A continuación, se le pedirá que complete el código y lo envíe después de completar el código en su propio entorno.
Más comúnmente, las empresas han estado utilizando Hackerrank (o herramientas como esa). Este es un entorno de codificación en línea, basado en el navegador. Te sugiero que te registres en una cuenta y practiques su uso mientras te preparas para las entrevistas, para familiarizarte con el entorno.
En algunos casos, las empresas pueden querer que completes el reto de codificación primero antes de llamarte para la ronda de comportamiento. Esto se debe a que pueden tener muchos candidatos en la parte superior del embudo, y tienen alguna forma automatizada de filtrar a los candidatos cuyo código no pasa suficientes casos de prueba.

  • Pruebe este problema de «diferencia de matrices»: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays

Entrevista telefónica/vídeo

Puede encontrar de 1 a 3 entrevistas telefónicas. Estas suelen ser sobre estructuras de datos y/o algoritmos.
Típicamente, usted obtendrá un enlace de documento compartible (como Google doc o CodePen). Con ellos, tanto tú como tu entrevistador podrían ver lo que estás escribiendo en tiempo real. Se te presentaría un problema de codificación y mientras escribes tu código, el entrevistador podrá ver tu progreso.
Prepárate para implementar estructuras de datos y algoritmos comunes. Estudie las preguntas fáciles/medias de Leetcode.
Siempre debe dar primero la solución ingenua. Como desarrolladores de software, siempre queremos escribir el código más óptimo. Pero en una entrevista, es posible que el tiempo se agote antes de que termines tu solución óptima. Al menos ganarás algunos puntos en la entrevista si el tiempo se agota mientras escribes tu solución óptima, pero ya has presentado el código de fuerza bruta/ingenuo.
A veces, también te enfrentarás a preguntas de diseño de sistemas en estas entrevistas telefónicas.

  • Practica el diseño de la arquitectura de Reddit: https://www.tryexponent.com/courses/software-engineering/design-reddit

En el sitio

Las preguntas en su sitio son similares a las de su entrevista telefónica. Si has llegado hasta aquí, date una palmadita en la espalda. Ya casi ha llegado. En esta ronda final, es probable que codifique en una pizarra – así que practique antes de llegar a la entrevista (algunas empresas como Snapchat pueden permitirle / pedirle que traiga su propio ordenador portátil para codificar en el sitio).
También hay típicamente una ronda de almuerzo donde se llega a almorzar con el equipo.

Qué estudiar

Se siente muy cómodo codificando tanto en un entorno de desarrollo, así como en una pizarra. Aquí detallaré los temas de codificación que debes estudiar.

Comportamiento

Estas preguntas surgirán en tu llamada telefónica inicial, pero a medida que avanzas en el proceso de la entrevista, es inevitable que estas preguntas vuelvan a surgir (por ejemplo, durante el almuerzo en tu sede). Intente ser sucinto, hablar con seguridad (terminando sus frases con una inflexión hacia abajo en su tono) y eliminar las palabras de relleno (uh, um, como) de su vocabulario.

  • Cuénteme sobre usted.
  • ¿Por qué ingeniería de software?
  • Cuéntame alguna vez que hayas cometido un error.
  • Cuéntame tu proyecto, x, y lo que has aportado.

Lenguajes de programación

Desde mi experiencia, las empresas te permiten codificar en el lenguaje con el que te sientas más cómodo. En mis cursos universitarios de informática (en la UCLA), a todos nos enseñaron C++. Sin embargo, hice todas mis entrevistas en Java o Python. Me resultó muy fácil aprender otros lenguajes una vez que me familiaricé con su sintaxis.
Sugeriría preguntar al reclutador o al gerente de contratación si las entrevistas requieren algún lenguaje específico. De lo contrario, vaya con el lenguaje con el que es menos probable que cometa errores.

Estructuras de datos

Familiarícese con las preguntas de codificación en torno a estas estructuras de datos. También familiarícese con las compensaciones, así como con la complejidad de tiempo y espacio de cada una.

  • Matriz
  • Lista enlazada
  • Tree/Graph
  • Tabla Hash
  • Stack/Queue
  • Heap

Algoritmos

Familiarícese con las cuestiones de codificación relacionadas con estos algoritmos. También estar familiarizado con las compensaciones, así como la complejidad de tiempo y espacio para cada uno.

  • Búsqueda (y Graph search)
  • Sort
  • Programación dinámica

Dependiendo del papel y la empresa, también se le puede pedir problemas de manipulación de bits.

Recursos

Por suerte, existe una plétora de recursos online para ayudarte en tu viaje. Estos son los que recomiendo.

Leetcode

La mayoría de tus preguntas de codificación se pueden encontrar en Leetcode. Si te vuelves muy bueno en estas preguntas de pizarra, deberías estar preparado. Prepárate para las preguntas fáciles/medias, pero prueba también las preguntas más difíciles – especialmente a medida que avanzas a las rondas presenciales.

Exponent

El curso de entrevista de ingeniería de software de Exponent es el único curso que necesitas. Cuenta con artículos y vídeos guiados para ayudarte a refrescar tus conocimientos/reaprender las estructuras de datos y los algoritmos que necesitas para tu entrevista, todo en un solo lugar. Además, Exponent ha añadido un curso de entrevista de diseño de sistemas completo para algunas de las preguntas de diseño de sistemas más difíciles.

GeeksforGeeks

GeeksforGeeks tiene las mejores soluciones para las preguntas de codificación. Para la mayoría de las preguntas de la entrevista, usted puede enfrentar, GeeksforGeeks no sólo le muestra la implementación ingenua, sino también una solución optimizada, así como la complejidad de tiempo y espacio.

r/CSCareerQuestions

Esta página de Reddit (subreddit), r/CSCareerQuestions, es una comunidad de ingenieros de software aspirantes y experimentados. Puedes usarla para leer sobre las experiencias de otros entrevistados en empresas específicas o para hacer preguntas tú mismo. Una advertencia: los miembros de este subreddit están muy obsesionados con el prestigio y la compensación de las empresas. Es bueno apuntar a las grandes empresas tecnológicas FAANG, pero recuerda siempre tener los pies en la tierra: ¡hay un mundo fuera de la tecnología!

Envolviendo

Muchas personas eligen la ingeniería de software como carrera por una o más de las muchas razones. Puede que quieras convertirte en ingeniero de software porque te gusta construir cosas. O tal vez te inspira cómo la tecnología está cambiando el mundo. O tal vez sólo quieres una carrera sólida con un buen potencial de ingresos (¡no hay nada malo en ello!).
Tenga un horario de estudio consistente (por ejemplo, haga una pregunta de Leetcode cada dos días) y manténgalo.
Mientras trabaja en su preparación para la entrevista, Exponent está siempre aquí para ayudar cuando sea necesario. Si necesitas un repaso, el único recurso que te recomiendo es el Curso de Entrevistas de Ingeniería de Software, que fue elaborado por ingenieros de software que trabajaron en algunas de las principales empresas tecnológicas de la industria.

Deja un comentario