En seis días, del 13 al 20 de agosto de 2018, realicé entrevistas en seis empresas de Silicon Valley (LinkedIn, Yelp, Apple, Amazon, Facebook y Google) y recibí una oferta de trabajo de cada una.
En el proceso de preparación, que describo a continuación, me basé en gran medida en
la publicación de este
último año : fue él quien en un momento me impulsó a pensar si era hora de mudarme a otra compañía. No tenía ganas de deambular constantemente hacia el otro extremo del país y regresar en busca de un trabajo ideal, por lo que estaba claro que tenía que armar mi testamento y planificar todas las entrevistas para que fueran una tras otra. Apunté a vacantes que son relevantes para el desarrollo móvil, pero el enfoque descrito para la capacitación, consejos y trucos también es adecuado para otros casos.
Espero que mi historia inspire a alguien que ahora está en la misma posición (no muy contento con el trabajo actual, quiere mudarse al área de la bahía, pero es un poco corto en términos de preparación), atrévase, quién sabe lo que les depara el futuro.
Introducción y estadísticas
Decidí firmemente que quiero trabajar en el área del golfo, donde puedo conseguir una gran empresa y crecer seriamente como desarrollador móvil. Solía trabajar en startups, y fue una buena experiencia, pero esta vez por varias razones estaba buscando un pez más grande (me refiero no solo al tamaño del equipo, sino también a la capital). También sabía que todavía no tenía una compañía específica, además de entender qué salario necesitaba solicitar, para no perder en comparación con lo que tengo. Finalmente, no tenía ganas de enviar cientos de currículums, como ya hice justo después de la universidad.
Con todo esto en mente, envié un currículum a veinte empresas. Cuatro de ellos (Reddit, Nest, Stripe, Uber) me rechazaron inmediatamente después de recibir la carta. De los dieciséis restantes, diez (Lyft, Airbnb, Dropbox, Instagram, YouTube, Square, Robinhood, Twitter, Snap, Slack) no dieron ningún comentario. La aritmética simple sugiere que seis compañías respondieron y sugirieron que hable con un reclutador. Como resultado, recibí seis invitaciones para una entrevista telefónica, seis, para una entrevista en la oficina y seis ofertas de trabajo.
Después de revisar mi calendario en Google, calculo que se distribuyó así:
- 7 reuniones con reclutadores en 10 días
- 7 entrevistas técnicas en 11 días
- 29 entrevistas de oficina en 8 días
- 3 rastros de entrevista telefónica entrevista
Al unir estos números, podemos calcular: Realicé 46 entrevistas en 73 días (si cuenta los intervalos entre etapas). Fue difícil, y durante muchas semanas tuve que pasar todas mis pausas para el almuerzo en las reuniones. Comencé a trabajar temprano para poder salir temprano y pasar las tardes en conversaciones telefónicas. Las complicaciones se crearon por el hecho de que era necesario continuar desempeñando sus funciones adecuadamente en su trabajo actual; sin embargo, siempre traté de darle prioridad y reprogramaba las reuniones si las circunstancias lo requerían. No tenía la intención de alejarme para hacer más conveniente la entrevista. Esto no es ético, deja una mala impresión y, además, puede terminar sin encontrar un nuevo lugar y arruinando su reputación en el antiguo.
Empresas (en orden cronológico)
LinkedIn (Sunnyvale, CA)LinkedIn, de hecho, desarrolla aplicaciones bastante agradables, y
hacen una contribución considerable a la comunidad de código abierto. Todo el tiempo de nuestra interacción, me impresionaron tanto la cultura corporativa como las soluciones de ingeniería. Si compara la posición en la calificación de prestigio en el mercado de iOS al principio y al final de todo el proceso, es esta compañía la que más ha crecido a mis ojos.
Yelp (San Francisco, California)La aplicación de Yelp se ve muy bien: sientes la finura del apósito al hablar sobre un conocimiento profundo de la plataforma iOS. Me gustó el ambiente en su oficina. El edificio en sí es muy hermoso, y me encantaría trabajar en equipo con cualquiera de las personas que entrevistaron. En comparación con otras compañías de mi lista, esta es bastante pequeña y afecta a todo, pero tiene un efecto positivo. El equipo parece haber funcionado muy bien y los procesos de trabajo se están desarrollando extremadamente rápido.
Manzana (Cupertino, CA)Apple ha sido durante mucho tiempo una parte integral del mercado de iOS (ja, ja). He sido su fanático rabioso desde la infancia (bueno, desde la edad de doce años seguro). Fue gracias a sus computadoras Mac que me dejé llevar por la programación. El iPhone SDK me ha ayudado a crear y lanzar mi primera aplicación. Cuando me invitaron a tener una entrevista en la oficina y luego formar parte del equipo, fue como en un sueño. Ni siquiera sé qué más decir en su cuenta.
Amazon (Palo Alto, California)No llamaría a Amazon una empresa centrada principalmente en el desarrollo móvil, sino todo lo contrario. Sin embargo, el puesto y el equipo cumplieron los criterios que me establecí al principio. La oficina en Palo Alto, donde entrevisté, no me impresionó, pero este es un refugio temporal y pronto deberían mudarse a un edificio que esté más en línea con el estilo de Amazon. En este sentido, no tuve suerte con el tiempo. La gente con la que hablé parecía muy entusiasmada con sus proyectos. Literalmente de todas las compañías que escuché: "¡Tenemos una atmósfera aquí como en las startups!", Pero con Amazon realmente parece ser cierto.
Facebook (Menlo Park, CA)Fui entrevistado en su nuevo edificio. En general, todo parecía estar bien, pero recuerdo los detalles de la reunión bastante vagamente: era mi quinto día de entrevistas seguidas y la falta de sueño se hizo sentir. Solo recuerdo que recibí mucho placer al comunicarme con los empleados y que la reunión en la cena resultó ser muy informativa.
Google (Mountain View, CA)En Google, según tengo entendido, las entrevistas para un puesto determinado se realizan más o menos siguiendo un patrón. Logré hablar con muchos miembros del equipo que trabajaban en uno de los productos iOS más grandes de la compañía, pero solicité un puesto no relacionado específicamente con sus actividades. Después de que el comité de contratación dio el visto bueno, me transfirieron a la siguiente etapa, donde seleccionaron el equipo adecuado y finalmente encontraron una opción adecuada. Este es un proceso muy largo, en comparación con el ritmo de las negociaciones de otros equipos con los que hablé. Tuve que mantener constantemente informados a otros empleadores sobre cómo estamos haciendo negocios con Google, y Google, respectivamente, sobre lo que se nos ocurrió con otras compañías.
Plan de entrenamiento
Lo dejaré claro: cuando comencé, en teoría pude resolver la mayoría de las tareas de la sección "Simple" en Leetcode en aproximadamente treinta minutos y aproximadamente el 25% de las tareas de la sección "Dificultad promedio", si no estableciste límites de tiempo. Resolver las tareas de la sección "Complejo" para mí fue como tratar de probar la igualdad de las clases NP y P. En resumen, tenía mucho trabajo por hacer.
Para ajustar los algoritmos, primero recurrí al libro
Cracking the Coding Interview . Los domingos, por la mañana, me levantaba, caminaba al café y allí resolvía los problemas para Objective-C. Después de haber resuelto un número decente de tareas del libro (alrededor de treinta y cinco), cambié a Leetcode y revisé las tareas que correspondían a los capítulos que había completado. Después de varias semanas de tales clases, sentí que ya había aprendido los "conceptos básicos" bastante bien y pasé a la siguiente etapa.
Armado con mi conocimiento básico, tomé
Elementos de las entrevistas de programación . Este libro es mucho más complicado que el anterior. Los planes de lecciones recomendados se dan allí, y traté de no desviarme demasiado de ellos. Si no recuerdo mal, uno fue diseñado para cuatro semanas de entrenamiento, y lo hice casi por completo. En mi opinión, es de vital importancia practicar la resolución de las tareas en la pizarra o realizar un ensayo telefónico con alguien. Además, por "críticamente importante" me refiero no solo a "útil", sino que debe considerarse como un elemento obligatorio del plan de estudios. No tengo dudas de que alguien podrá conseguir un trabajo sin él, pero por mi parte no encontré una mejor manera de desarrollar mis habilidades.
Si alguien necesita un compañero para ensayar entrevistas para publicaciones relacionadas con iOS, entonces estaré encantado de ayudarlo. Puede encontrarme en
CS Career Hackers : póngase en contacto, mira, estaremos de acuerdo de alguna manera, si no estoy muy ocupado. Y si no, hay otras personas que voluntariamente lo apoyarán. Por supuesto, estarás avergonzado. Este es todo el punto. Si todo funcionaba solo, entonces no tenía sentido practicar, ¿verdad? Si durante los ensayos en el pizarrón o en el teléfono está muy avergonzado o se siente fuera de lugar, está haciendo exactamente lo que necesita: capacitarse con anticipación. Personalmente, al principio me sentí muy constreñido, y luego en algún momento pasó, por lo que el entrenamiento valió la pena.
Después de un mes de finalización de la tarea diaria (dos o tres horas entre semana, más los fines de semana), me concentré en la sección "
Preguntas populares de la entrevista " en Leetcode. No los revisé todos, pero pasé lo suficiente. Para prepararse para una entrevista sobre algoritmos, lo principal es alcanzar el nivel en el que pueda encontrar una solución justo en el curso de la entrevista. Intentar memorizar todas las decisiones no vale la pena, es imposible. Casi todas las tareas que encontré durante esa semana de entrevistas eran nuevas para mí, pero al mismo tiempo, se parecían a lo que ya había visto. Después de todo, el proceso de desarrollo en sí ocurre de acuerdo con el mismo esquema. Muchas tareas en general se describen entre sí, pero cada caso tiene un conjunto especial de restricciones.
Lo que aprendi
A continuación enumeraré en una lista las conclusiones que he hecho por mí mismo, en orden aleatorio. Todas estas recomendaciones me serían muy útiles si las conociera de antemano, tanto las relacionadas con la preparación para entrevistas técnicas como las que hablan sobre planificación y otros matices que no están relacionados con la programación. No hay nada en ellos que se aplique única y exclusivamente a iOS, por lo que creo que, en términos generales, son adecuados para todas las entrevistas en nuestra industria.
- No te caigas. Cuando estaba buscando mi primer trabajo serio después de la universidad, solo tenía suficiente para una o dos semanas de clases. Razoné así: aparentemente, simplemente no me lo han dado. Después de todo, ha pasado más de una semana y casi no se han observado progresos, entonces, ¿qué sentido tiene perder más tiempo? Pero esta vez decidí que no tenía otra opción. Después de un tiempo, la imagen comenzó a tomar forma. Será necesario invertir mucho trabajo, pero es el deseo de estudiar lo que distingue a los solicitantes exitosos de los demás.
- El entrenamiento es nuestro (casi) todo. Por supuesto, aquí también se necesita un cierto nivel de habilidades innatas, pero la práctica (es decir, el entrenamiento) puede cambiar mucho, mucho. Las personas no son contratadas por lo que nacieron. Son contratados por el hecho de que pueden cumplir con éxito ciertas tareas, y dónde y cuándo recibieron el conocimiento necesario no importa.
- Entrenar con amigos es nuestro descanso. No importa si ensayas en el pizarrón o usas algo como Codeshare , el punto es que cuando te sumerges en la atmósfera de una entrevista con alguien durante mucho tiempo, está lejos de dar miedo. Si durante la entrevista el cerebro falla repentinamente y das algún tipo de estupidez, eso no te perturbará. Bueno, si logras encontrar una persona que conozca las soluciones, incluso para aquellas tareas que no entiendes, y que pueda empujarte en la dirección correcta, generalmente será perfecto. En serio, tal entrenamiento vale su peso en oro.
- La cobertura es decisiva. Puede entrenar antes de quedar estupefacto (e incluso productivamente), y aún así no conseguir un trabajo, porque su currículum no llegó a la persona adecuada o fue atacado por un estupor en el pizarrón y no resolvió el problema a tiempo. La mejor garantía es darse la máxima oportunidad. Es decir, envíe un currículum a todos los que se adapten a usted y a quienes cumpla con los requisitos, y no solo la mejor opción. ¡He seleccionado un total de veinte mejores compañías!
- La decisión es un proceso, no un resultado. La memorización no logrará nada. Aproximadamente una semana me ofrecieron unas veinte tareas sobre algoritmos, y solo una de ellas me era familiar (lo cual informé de inmediato, aunque muchos lo considerarían superfluo). Pero aprendí a identificar patrones, así que logré encontrar soluciones sobre la marcha.
- No te rindas. Me quedé atrapado más de una o dos veces, y el entrevistador tuvo que llevarme a la respuesta correcta. Esto no me impidió recibir ofertas de trabajo de todas las empresas. Hubo una entrevista, la cual me sentí irremediablemente fallida (cuatro de las cinco sesiones, en mi opinión, obtuvieron un "no" definitivo), pero de hecho, finalmente me invitaron al equipo. En resumen, lo que solo no sucede en la vida.
- No se apresure a barrer tareas. Cuando estudiaba con un amigo, a menudo rechazaba las tareas más difíciles y decía que esto no me sería útil. Curiosamente, de los cuatro tipos de tareas que, según él, "definitivamente no caerán", dos fueron atrapadas. No del todo en la forma en que los resolvimos, sino de una manera muy similar. Si durante el proceso de capacitación te encuentras con algún tipo de concepto, resuélvelo.
- No subestimes la importancia de las habilidades blandas. Creo que debo gran parte de mi éxito al hecho de que mis respuestas (bastante honestas) a las preguntas estaban en línea con la política de la compañía. Tengo la teoría de que a los desarrolladores muy fuertes a veces les resulta difícil encontrar un trabajo decente simplemente porque se comportan groseramente, mienten o no saben cómo permanecer en situaciones que no están relacionadas con la programación. En mi opinión, todas estas son buenas razones para rechazar a un candidato. Por lo tanto, practique su comportamiento de la misma manera que las habilidades técnicas.
- Muestra tu conocimiento. Durante las entrevistas, a menudo ocurrían situaciones en las que, en respuesta a una pregunta, mencioné algunas de mis otras habilidades con la advertencia de que, debido a la falta de tiempo, no podía contar en detalle sobre la implementación de esta solución. ¿Estás hablando de líneas? Muestre en su decisión que sabe cómo trabajar con Unicode, o diga cómo apoyarlo. ¿Llamando a un método privado? Explica cómo funcionan las cosas con los métodos en Objective-C. ¿Actualizar datos en la vista de tabla? Lista las animaciones que puedes soportar. Si no está bien versado en algo, plantear este tema, por supuesto, no merece la pena. Pero si tiene algo que decir, aproveche la oportunidad para ir más allá del marco angosto en el que la pregunta inicial lo impulsa, y muestre su ventaja sobre aquellos que no abandonan los caminos trillados.
- Intenta no alcanzar la barra, sino elevarla. La impresión que haga en la entrevista depende no solo de si se le ofrecerá un trabajo, sino también de qué condiciones se le ofrecerán. Si en algún momento estará seguro de que su conocimiento para esta vacante es suficiente, ¡excelente! Pero no lo olvide: hay una gran diferencia entre "más o menos acercamiento" y "absolutamente correcto". Tu objetivo debe ser el segundo. Las condiciones que inicialmente me ofrecieron (es decir, antes de las negociaciones) fueron muy, muy buenas, y creo que las entrevistas desempeñaron un papel importante aquí.
En conclusión
Bueno, eso es todo! El maratón todavía estaba allí, pero no me arrepiento de nada. Espero sinceramente que todo lo que escribí aquí ayude a alguien a despegar en busca del sueño. Si alguien está interesado en consejos relevantes específicamente para el segmento de iOS, puedo compartirlo, así que escriba
en los comentarios .
Si esto lo alienta: este es mi segundo trabajo después de la universidad, tengo cerca de dos años y medio de experiencia, no tengo grandes nombres en mi currículum, me gradué de una universidad muy modesta, que nunca tuvo grandes empresas en la "feria de trabajo", comencé el proceso preparación a fines de abril, y comencé a enviar un currículum en junio-julio, y finalmente, en solo unos meses obtuve un trabajo con el que solo podía soñar.
Finalmente, quiero anunciar una vez más la comunidad
CS Career Hackers . Si está buscando un lugar para practicar, o simplemente quiere conversar con personas que están en su posición (o que están familiarizadas con él, a ambos lados), no pase por alto. Lo encontré solo unos meses después de firmar el contrato, pero de todos modos, es genial allí. ¡Buena suerte con tus preparativos!