Cómo conseguí un trabajo de ingeniero de software en Twitter

Esta es la historia de cómo conseguí un trabajo en Twitter como ingeniero de software a tiempo completo. Compartiré el proceso por el que pasé, cómo me preparé y por qué finalmente decidí unirme a la empresa.

Como comencé mi viaje

Clic-clac-clic-clac .

El sonido de mis dedos rompiendo furiosamente las teclas del teclado resonó en la noche.

Levanté la vista de la pantalla de mi computadora portátil y miré hacia un reloj en la pared de un apartamento en el sótano que estaba alquilando por $ 600 al mes.

Eran las 2 de la mañana.

Ahora podría pensar que estaba escribiendo un software o pirateando algo importante. ¿Por qué más estaría despierto de otra manera?

Yo no lo estaba.

Me estaba preparando para mi próxima entrevista de codificación técnica utilizando un sitio web llamado Leetcode. Fury se apoderó de mí porque no pude revertir una lista vinculada, que se calificó como Fácil en la plataforma (pruébelo aquí).

Como llegué

Un correo electrónico de un reclutador de Twitter había llegado una semana antes, preguntándome si me gustaría programar una pantalla de teléfono inicial con uno de sus ingenieros.

Estaba emocionado, pero también nervioso porque había solicitado un puesto de ingeniería de software en Twitter hace unos años sin éxito.

El reclutador me había enviado una hoja de preparación completa con enlaces para practicar y repasar mis habilidades de codificación y algoritmos.

Uno de los elementos de la lista de verificación me indicó leetcode.com (un sitio web de desafío de codificación) y así fue como terminé codificando en este sitio web durante horas para prepararme para mi entrevista de codificación técnica.

No fue fácil prepararse para las entrevistas técnicas. Para alguien que ha estado fuera de la universidad durante algún tiempo, se necesita una cantidad de tiempo no trivial para repasar las habilidades y los fundamentos necesarios para tener éxito en una entrevista de codificación técnica.

El reclutador subrayó explícitamente que nuestra entrevista técnica se centrará específicamente en los fundamentos técnicos, como mapas, árboles binarios, listas enlazadas, árboles binarios de búsqueda, gráficos, etcétera .

Si hoy estuviera comenzando a prepararme desde cero, trataría de buscar un enfoque mucho más estructurado para poder maximizar mi tiempo de preparación.

Por eso comencé un curso de coaching personalizado, llamado Acing The Technical Interview.

Este curso ayuda a las personas a prepararse para sus entrevistas de la manera más eficiente posible para que puedan superar esas entrevistas técnicas y evitar los escollos y trampas que tuve que aprender por las malas.

Muchos otros ingenieros han tenido éxito con los enfoques descritos en el curso.

Mi pasado

Tenía 3 años de experiencia como ingeniero de pila completa en una startup, principalmente con la creación de microservicios y el desarrollo de API en la pila de AWS.

La pila se centró principalmente en PHP, NodeJS, AWS SQS como cola de mensajes, Postgres para nuestra base de datos y AWS S3 para almacenamiento a largo plazo.

No tenía ninguna experiencia profesional previa o experiencia de pasantía, y el trabajo en la puesta en marcha fue mi primer puesto de ingeniería de software "real".

Tuve una educación formal en ciencias de la computación: me gradué de una pequeña universidad jesuita privada en el estado de Washington en 4 años con una licenciatura en ciencias de la computación.

Mirando hacia atrás, creo que fue una experiencia valiosa ir a la universidad. Si tuviera que hacerlo de nuevo, todavía optaría por una educación formal en lugar de un Bootcamp de codificación. Puedes ver mi video aquí para ver un desglose de un título de 4 años en ciencias de la computación frente a un Bootcamp de codificación.

Postulé a más de 30 empresas diferentes, me entrevisté con 15, me rechazaron 6, recibí ofertas de 6, rechacé 5 y acepté 1. Si estás contando, las matemáticas no encajan perfectamente porque algunas empresas se desviaron después del sitio .

Puede leer más aquí si está interesado en cómo obtuve ofertas de empresas FAANG de primer nivel sin un título de la Ivy League.

Cómo me preparé para las entrevistas

Pasé la mayor parte de mi tiempo en Leetcode y con un libro llamado Elements of Programming Interviews (muy recomendable).

También pasé alrededor del 10% de mi tiempo navegando en YouTube para entrevistas de diseño de sistemas, como Jack Gabbard y Gauran Sen.

Otro recurso / sitio web que me gustó fue DailyCodingProblem.com, que envía una pregunta de codificación al día a su correo electrónico. Esto le permite obtener nuevas preguntas todo el tiempo.

Tiempo de preparación en total

Mi tiempo de preparación fue de alrededor de un mes de práctica constante e ininterrumpida . Es fundamental tener un horario constante.

Solía ​​continuar codificando rachas: 3 horas de codificación estricta seguidas de una semana de descanso. Descubrí que eso era ineficaz y pagué el alto precio de cambiar de contexto varias veces.

En total, pasé alrededor de 3 horas al día entre semana (debido al trabajo) y de 4 a 6 horas los fines de semana para un total de aproximadamente 20 horas a la semana durante un mes .

Cómo apliqué a trabajos

Solicité a Twitter a través de su página de carreras laborales. En retrospectiva, podría haber sido más efectivo encontrar una referencia o un reclutador en LinkedIn porque eso probablemente habría acelerado el proceso de solicitud.

Un currículum bien redactado es fundamental, especialmente cuando se postula a través de un centro profesional en línea. Sin esto, no creo que hubiera podido tener la oportunidad de entrevistarme con estas empresas tecnológicas de primer nivel.

Puede leer más aquí sobre cómo elaboré mi currículum para que los gerentes de contratación se fijaran en mí.

Unas semanas después, un reclutador finalmente se comunicó conmigo y quiso programar una pantalla de teléfono inicial.

Cronología de mi proceso de solicitud

  • 10 de febrero de 2017: el reclutador se acercó para programar un TPS
  • 8 de marzo de 2017 - TPS inicial
  • 13 de abril de 2017 - Segundo TPS
  • 18 de abril de 2017 - Presencial
  • 2 de mayo de 2017 - Oferta ampliada
  • 23 de mayo de 2017 - Twitter confirmado
  • 24 de julio de 2017 - fecha oficial de inicio

Las primeras 2 pantallas técnicas del teléfono involucraron la codificación en un documento compartido en línea, como Google Docs. Hablamos sobre diferentes enfoques y compensaciones, y dedicamos más de 30 minutos a la implementación.

Después de las dos primeras rondas, pasé a la siguiente ronda de entrevistas en el sitio en Twitter Seattle.

Luego, el reclutador me envió un enlace a un repositorio de codificación en línea y me pidió que revisara el código. Necesitaba hacer sugerencias sobre cómo mejorar el código y discutirlo con los entrevistadores en el sitio.

Me tomó alrededor de un día revisar el código, imprimirlo en papel (alrededor de 5 páginas en una fuente de 10 puntos) y noté áreas de mejora en el papel. Este resultó ser un ejercicio útil, como descubriría más tarde.

La entrevista in situ

El sitio tuvo 3 rondas en total con un almuerzo intercalado (juego de palabras):

  • Ancho (75 minutos)
  • Profundidad (75 minutos)
  • Almuerzo
  • Calificación superior (90 minutos, opcional )

Una cosa a destacar es que las rondas en el sitio de Twitter tenían 2 entrevistadores cada ronda.

Me sentí intimidante al principio, ser mirado por dos entrevistadores que me juzgaban por cada uno de mis movimientos. Pero en realidad, me gustó como se sentíamucho más colaborativo y estábamos intercambiando ideas.

Amplitud (diseño del sistema)

La entrevista Breadth (System Design) se centra en una amplia gama de temas para que puedan comprender cuánto sabe usted sobre el diseño de un sistema desde cero . El objetivo es llevar al candidato a sus límites y ver hasta dónde puede llegar.

Hicieron preguntas como esta:

¿Puede crear un sistema confiable con un tiempo de inactividad razonable de un extremo a otro, desde la configuración de la interfaz de usuario hasta la comunicación a través de una API HTTP, hasta la creación de un servicio de backend?

Disfruté de la conversación porque siempre me ha gustado jugar con diferentes tecnologías. Si te gusta construir cosas, también te gustaría esta ronda. Los entrevistadores fueron muy amables y me guiaron cortésmente durante la entrevista.

Terminamos con una pregunta de codificación al final. Honestamente, no puedo recordar qué fue, pero no fue nada fuera de lo común.

Profundidad (reanudar)

La entrevista de Depth se centró mucho más en mis proyectos y experiencia anteriores. Esto fue, con toda honestidad, mucho más intenso y desafiante porque el entrevistador se sumergió profundamente en cada aspecto de los proyectos que construí y desafió mis decisiones de diseño.

¿Qué proyecto construiste recientemente? ¿Por qué lo construiste? ¿Cuáles fueron las alternativas consideradas? ¿Funcionó al final?

Viniendo de un entorno de inicio, fui responsable de crear muchas cosas desde cero, como configurar clústeres de AWS y configurar SQS para tareas de procesamiento.

Aunque estaba íntimamente familiarizado con muchos proyectos, esta ronda me llevó al límite. Tuve que retroceder a través de mi experiencia y contar la historia desde mi perspectiva: ¿por qué diseñamos ciertas cosas de ciertas maneras y había enfoques mejores / peores en los que pensamos? No hay preguntas de codificación para esta ronda.

Calificación superior / Cultural

La ronda Cultural fue una entrevista de 90 minutos con el gerente de contratación y el liderazgo superior.

Más tarde descubrí que si logras entrar en esta ronda, eso significa que lo has hecho lo suficientemente bien técnicamente y ellos están buscando un ajuste cultural en ambos sentidos, ya sea que encajas en su cultura y si ellos tienen las oportunidades adecuadas para ti.

Tampoco hay preguntas de codificación para esta ronda.

Retrospectiva del proceso de entrevista

Las entrevistas en Twitter se centran en gran medida en los fundamentos de la informática . Así que asegúrese de conocer sus estructuras de datos de arriba a abajo y de izquierda a derecha. También es una buena idea revisar todos los algoritmos básicos que habría aprendido en su clase de CS101.

Aquí hay algunos otros consejos:

Conozca sus algoritmos en profundidad

Comprenda cómo funcionan las compensaciones entre la complejidad del tiempo y la complejidad del espacio .

Conoce muy bien un idioma

Conocer y comprender un idioma realmente bien ayudó enormemente. Para esto recomiendo algo como Python o Java o C ++, ya que son lenguajes de uso muy común.

Personalmente, disfruto usando Python porque es muy fácil de leer, muy fácil de explicar y tiene un montón de estructuras de datos integradas.

Hacer una revisión de currículum

Asegúrese de repasar los proyectos enumerados en mi currículum. Esto significaba

  • comprender todo el diseño del software del que era responsable de principio a fin,
  • comprender las compensaciones que se hicieron en el sistema, y
  • tener razones de por qué los sistemas se construyeron de esa manera y cuáles eran las alternativas.

Sea disciplinado en su preparación

Calcule por adelantado las áreas que le faltan y establezca un horario para practicar. Es importante tener una práctica constante e ininterrumpida.

Empecé con el pie izquierdo y deseé haber sabido esto antes para no perder el tiempo en cosas equivocadas.

Piense en los sistemas con los que interactúa a diario

Descubra las compensaciones, las alternativas, los pros y los contras, y cómo puede construir un sistema mejor. Esta habilidad lo llevará muy lejos en la ingeniería de software.

Recursos que recomiendo

  • Acing The Technical Interview: Mi coaching personalizado para ayudarte a superar la entrevista técnica en las principales empresas de tecnología.
  • Leetcode.com: Practique los problemas de codificación aquí.
  • Consulte esta página de recursos para obtener más equipos, herramientas y libros que recomiendo encarecidamente.

Puedes leer más de mis artículos sobre tecnología en mi blog personal, donde comparto mi viaje para convertirme en un ingeniero de software profesional.

Si te gustó esto, considera compartirlo con alguien que se beneficiaría de él y sígueme en Youtube, LinkedInk y Twitter.

También estoy lanzando un nuevo curso que aborda lo que buscan los entrevistadores, cómo puede prepararse y cómo maximizar sus posibilidades de conseguir entrevistas y conseguir el trabajo que desea.