Cómo obtener ofertas de Ingeniero de Software en 43 días mientras trabaja en un trabajo de tiempo completo

Hechos

Hace aproximadamente un año, recibí ofertas como ingeniero de software de Google, LinkedIn, Amazon, Uber ... La mayoría de las ofertas venían con una promoción, y el aumento de salario base era de hasta el 40%. Terminé eligiendo a Uber de todas esas compañías (no la que tenía el salario más alto, pero estaba profundamente alineado con el potencial de esta compañía, jaja). Como hoy se cumple el primer aniversario de trabajo con Uber, y como los amigos a mi alrededor constantemente solicitan consejos con las entrevistas, decidí reflexionar sobre el proceso de la entrevista hace un año e intentar incluir la esencia que encontré útil durante la preparación.

¿Por qué empezar?

Valoro mucho mi carrera y la ciudad en la que vivo. Trabajé para el equipo de Microsoft Office y viví en Bellevue cuando comencé a buscar trabajo y ambos factores contribuyeron igualmente a mi decisión de buscar trabajo. Me gustaría trabajar en ingeniería de software relacionada con la web y vivir en una ciudad vibrante llena de jóvenes profesionales que pueden trabajar duro y divertirse. Como ninguna de mis preferencias se cumplía con mi trabajo y ciudad anteriores, decidí seguir adelante.

Resumen del plan

En mi opinión, la entrevista estilo Silicon Valley para ingenieros de software es un sistema de evaluación separado que es muy diferente de evaluar el desempeño de uno en el trabajo. Aunque muchas de las compañías están tratando de modificar el proceso de la entrevista para que la señal emitida por las entrevistas refleje la capacidad de los candidatos de hacer el trabajo real tanto como sea posible, aún está lejos de ser perfecta. Al comienzo de este proceso de preparación, mi objetivo es muy claro: ver el proceso de la entrevista como una prueba estandarizada y concretarlo.

Beneficiado / sobrevivido de la larga exposición del sistema educativo de China, preparar una prueba estandarizada, para mí, siempre ha estado en el lado más fácil del espectro: necesito una línea de tiempo de alta intensidad, y solo pasaré tiempo en cosas que van a ser impactante para la entrevista. Hay innumerables publicaciones en línea que le dicen a las personas que lean libros de texto de la universidad nuevamente, y para mí eso es una exageración. Simplemente no necesita conocer la historia de Knapsack para concretar la entrevista, todo lo que necesita hacer es estar familiarizado con cómo utilizar la Programación dinámica para resolver los problemas. No digo que haya necesariamente un "atajo" para la preparación de la entrevista, pero debería haber al menos este "camino claro" en el que los candidatos razonables deberían ponerse de acuerdo mutuamente.

Cronograma finalizado: 1 día para actualizar mi currículum, 2 días para enviar / referir / establecer contactos / (cualquier proceso que ayude a obtener la entrevista) y 20 días para prepararse antes de la primera entrevista, y finalmente otros 20 días para entrevistar / preparación continua.

Obtener entrevistas

Lista de compañías para obtener la entrevista

Arriba está la lista de compañías que compilé en Evernote. Como valoro mucho la ciudad en la que vivo, clasifiqué a las compañías en 3 grupos: NYC, LA y SF Bay Area (no aprecio mucho el resto del área de la bahía, por lo que esas compañías se convirtieron en el segundo nivel para mí. odio el viaje largo).

Para cada una de las compañías mencionadas anteriormente, me aseguré de comunicarme con esas compañías desde 3 perspectivas diferentes: portal en línea, referencias de amigos y reclutadores a los que se puede llegar desde LinkedIn. Un pequeño consejo es que intente priorizar la referencia de amigos sobre el portal en línea, ya que para algunas empresas, las referencias no estarán disponibles una vez que haya enviado la solicitud en línea.

Hice todos los procesos anteriores para todas las empresas mencionadas durante un fin de semana, y para EOD el próximo lunes tenía programadas más de 10 entrevistas.

Algoritmo y Estructura de Datos

Los candidatos generalmente tienen miedo de la entrevista de algoritmo y estructura de datos, pero personalmente creo que en realidad es uno de los temas más fáciles una vez que tiene el enfoque sistemático. Me concentré en dos perspectivas durante la preparación: resolución de problemas y explicación de la resolución de problemas.

Utilicé una plataforma de codificación en línea llamada Leetcode.com para preparar mi resolución de problemas, y estoy contento con el resultado. La preparación de entrevistas con el ingeniero de software mediante la práctica en Leetcode.com no es nada nuevo, pero creo que he diferenciado mi enfoque de "menos es más": solo me concentré en los primeros 150 problemas, sin clasificar. Hay bastantes personas en línea que dicen que debe ordenar por dificultad y comenzar con las más fáciles, y para mí eso no tiene sentido: no se está preparando para entretenerse o aumentar su confianza, y debe intentar reflexionar sobre el escenario real de la entrevista como objetivamente como sea posible.

Los primeros 150 problemas son asombrosos. Cubren prácticamente todos los temas requeridos en una entrevista de Ingeniero de Software: desde temas comunes como String, Array, Binary Tree, Dynamic Programming, Bit Manipulation, hasta temas no tan comunes como Segment Tree, Trie, Topological Sort.

Temas cubiertos en Leetcode.com

Mida el tiempo de cada intento de programación. Tener un tiempo estricto es de vital importancia para entrar en el ritmo de la entrevista. Asigné 30 minutos para cada problema para mi primera iteración de los 150. Durante mi primera iteración de los problemas, realmente intenté resolver cada uno de ellos. Si no resolví un problema en 30 minutos, no haré una parada difícil hasta que no pueda resolverlo después de otros 30 minutos. Sin embargo, para mi segunda iteración, puse la restricción de tiempo en 15 minutos por cada problema, suponiendo que tengo los enfoques ya consolidados en mi memoria.

Explicar la resolución del problema juega otro papel importante. Solía ​​pensar que, naturalmente, se convertirá en mi defecto porque el inglés no es mi primer idioma. Sin embargo, hablar inglés con fluidez no es el factor determinante para una entrevista técnica. Es cierto que se trata de "hablar el idioma correcto", pero "el idioma correcto" es en realidad una agregación de las terminologías correctas que están envueltas en el contexto del idioma inglés. Por lo tanto, tener las terminologías correctas y el proceso correcto para transmitir la idea son los aspectos más importantes para luchar.

Geeksforgeeks.com es, con mucho, el sitio web que más me beneficié al prepararme para explicar mi proceso de pensamiento. Es un resumen de blog de tecnología sobre el algoritmo de cada clase y los problemas de ejemplos clásicos. El blog de tecnología se ajusta perfectamente al ritmo de una entrevista: ambos están tratando de transmitir una idea clara como el cristal de una manera concisa y eficiente en el tiempo. Por cada problema de programación dentro de los 150, me aseguré de reflexionar sobre qué algoritmo está detrás del problema. Luego leeré a fondo el artículo de Geeksforgeeks.com sobre el algoritmo, así como los problemas de ejemplo y sus soluciones.

En el proceso de leer Geeksforgeeks, me di cuenta de lo mucho que me faltaba en el proceso de entrevista tecnológica como un nuevo graduado. Obtener soluciones rápidas para cada problema hace que el candidato parezca inteligente, pero "hablar el idioma" / explicar la resolución del problema de la manera correcta hace que los entrevistadores quieran trabajar con el candidato. Por lo general, este último juega un papel aún más importante, y eso fue lo que me sucedió en una ronda de entrevistas de Google, en la que no obtuve la respuesta correcta por completo, pero mi comunicación se ganó los comentarios positivos.

Diseño de sistemas

El diseño del sistema pesa mucho más para los empleados de la industria que para NCG. Sin la experiencia en el diseño de un sistema web a gran escala durante mi trabajo anterior, no tenía ni idea.

Afortunadamente, los cursos de Diseño de sistemas en hiredintech.com me ayudaron de la mejor manera. Cubrió conceptos básicos, elaborados en los cuellos de botella clave en un sistema web, y lo más importante: cómo cuantificar muchas partes de su diseño para que parezca que está hablando de años de experiencia.

Practicar el diseño del sistema puede ser difícil, ya que por naturaleza es una pregunta abierta y difícil de encontrar un proceso universal / estandarizado para la resolución de problemas. Entonces, ¿qué debemos hacer cuando no se puede encontrar un enfoque universal? Clasificamos los problemas de diseño del sistema y luego dividimos y conquistamos.

El proceso de categorización es bastante sencillo. Clasifiqué por el cuello de botella que han enfrentado algunos productos populares, y resumí ejemplos sobre cómo esos productos superan esos cuellos de botella. A continuación se muestra parte de la lista de aplicaciones web en la que profundicé.

Justin Tv

Fuerza de ventas

Instagram

Flickr

Como puede ver, muchos de los artículos de arriba son de highscalability.com. Profundiza en ese sitio web.

Finalizando

Mirando hacia atrás, esos fueron 43 aunque días. Me preparé para alrededor de 5 horas en un día laborable y aproximadamente 15 horas en un día de fin de semana. Dividí a todas las compañías en dos lotes: el primer lote era Google, Amazon, LinkedIn, Uber, etc., y el segundo lote era Facebook, Bloomberg, Airbnb, Spotify, etc. Decidí continuar con la programación del primer lote para comenzar con. La idea es que si mi preparación no funcionó totalmente, todavía tendré tiempo para ajustar mi estrategia y disparar para el segundo lote, que es un conjunto igualmente bueno de empresas de la OMI.

Afortunadamente, todas las estrategias y esfuerzos valieron la pena. 30 días en preparación ya sentí que estaba recibiendo la esencia de la entrevista al estilo de Silicon Valley. Más importante aún, sentí que ya tengo una comprensión lo suficientemente profunda del sistema de entrevistas para evaluar objetivamente el desempeño de mi entrevista. Mi expectativa establecida después de la entrevista siempre ha sido consistente con el resultado, lo cual fue un buen sentimiento.

Al final, ser un buen entrevistado no garantiza un rendimiento superior cuando se enfrentan a proyectos del mundo real. Es una suerte que tengamos una forma sistemática de jugar con este sistema de entrevistas en evolución, pero también debe ser claro para cada candidato que la acumulación de conocimiento a largo plazo y la pasión por toda la industria contribuiría en gran medida. Todavía estoy en camino de convertirme en un buen ingeniero de software, y esta parte requerirá un esfuerzo real.

Espero que este artículo te sirva de ayuda. Siéntase libre de discutir, criticar y compartir.

Mi LinkedIn Facebook. Vamos a conectarnos

-Siyi