Actualización (21 de abril de 2015) : para obtener una descripción de la última iteración de nuestro proceso de entrevistas, consulte https://stripe.com/jobs/engineer….
Hemos rediseñado nuestro proceso de entrevistas varias veces, ya que hemos aprendido qué funciona bien y qué no. La iteración más reciente fue diseñada por Siddarth Chandrasekaran, Evan Broder y yo en mayo de 2013 [1].
Nuestras entrevistas intentan simular el trabajo que haría en el día a día. No hacemos preguntas puramente algorítmicas: ningún proyecto en Stripe ha requerido escribir un árbol rojo-negro desde cero. También estamos perfectamente de acuerdo con las personas que buscan o colaboran con sus entrevistadores.
- ¿Cómo es la entrevista en el sitio para YGT en ESRIN?
- ¿Cuáles son algunas preguntas que deben hacerse en una entrevista de salida?
- ¿Qué hiciste para prepararte para una entrevista con Optiver?
- ¿Cuáles son los peores errores que comete la gente en las entrevistas de trabajo?
- ¿Debería actuar de manera diferente en una entrevista de pasantía que en una entrevista para un trabajo regular?
Comenzamos con una entrevista de codificación a través de Skype. En general, hacemos la codificación real a través del uso compartido de la pantalla de Skype para que pueda escribir en su editor favorito (también puede usar el idioma que prefiera). Las preguntas que hacemos están destinadas principalmente a probar lo que llamamos el “compilador pensado para codificar” de una persona. Es decir, siempre está bastante claro cómo un humano resolvería nuestros problemas, pero el desafío es escribir código limpio y fácil de mantener para implementar la funcionalidad relevante. Simplemente escribir el código correcto no es suficiente: la razón más común para hacerlo mal en esta entrevista es no tener una intuición lo suficientemente sólida sobre lo que hace que el código sea bueno .
Nuestras entrevistas en el sitio consisten en los siguientes componentes:
- Diseño e implementación (90-120 minutos) . Le pedimos que diseñe algún sistema (como una API, una interfaz web o un sistema distribuido; intentamos adaptar la pregunta a su experiencia) y luego producir un prototipo de su sistema. Para esto, tratamos de observar cómo se resuelve un problema de principio a fin: pensar en los requisitos (ya sean requisitos del usuario o técnicos), encontrar una solución y luego hacer que esa solución exista. Debe construir esto como si fuera a ponerlo en producción: optimice la calidad del código sobre la cantidad, escriba las pruebas según corresponda, etc. Está bien si realmente no terminas.
- Squash de insectos (45-60 minutos) . Le entregamos un proyecto de código abierto popular junto con un caso de prueba fallido para algún error. Su tarea es corregir el error (o hacer el mayor progreso posible para hacerlo). Estamos buscando principalmente para ver cómo maneja la navegación de una base de código desconocida y la solución de problemas en el código de otras personas.
- Refactorización (45-60 minutos) . Le proporcionamos una aplicación simple que necesita mejoras urgentes y le pedimos que mejore la estructura. Aquí, tratamos principalmente de medir sus ideas en torno a lo que hace un buen código.
- Programación en pareja (30-45 minutos) . Le damos un proyecto pequeño y autónomo. Es importante destacar que el proyecto siempre se puede resolver en código puro: no queremos que pase tiempo buscando en las bibliotecas. Nuevamente, buscamos una implementación limpia y mantenible. Intentamos evaluar su capacidad para producir código cuando las restricciones son muy claras.
Mientras hacemos la evaluación técnica, prestamos atención a cómo es trabajar con usted. En general, buscamos una comunicación agradable y de gran ancho de banda.
Al final del proceso, aplicamos algunas pruebas:
- Prueba de emoción ¿Contratar a esta persona te emocionaría más por trabajar en Stripe? Cada persona que contratemos debería hacer que la empresa sea fundamentalmente mejor de alguna manera. No es suficiente estar entusiasmado por tener finalmente a alguien para mantener un sistema no amado: la persona necesita agregar realmente algo más allá de las horas humanas puras.
- Prueba de velocidad . ¿Estaría esta persona en una trayectoria para ser autosuficiente dentro de los 6 meses de unirse a Stripe? Contratamos a una variedad de ingenieros, algunos muy avanzados en su carrera y otros que recién comienzan. Si bien contratamos una variedad de niveles de habilidades y queremos brindar orientación y orientación a todos, también queremos asegurarnos de que todos sean capaces de guiar su propio trabajo. Si no podemos imaginar a un ingeniero a ese nivel dentro de los primeros 6 meses, entonces no están en una pista de alta velocidad para nosotros.
Cada decisión de contratación requiere que todos en Stripe estén (al menos implícitamente) a bordo. Las reuniones de contratación están abiertas para todos en Stripe (aunque en la práctica generalmente solo asisten los entrevistadores), y cualquiera puede vetar una contratación. De esa manera, todos se sienten involucrados en cada nuevo empleado que se une al equipo, y nadie puede afirmar que alguien más fue contratado injustamente.
Un aspecto importante de cualquier proceso es cómo mide su éxito. A la larga, lo principal que nos importa es que estamos formando un gran equipo. Ciertamente es difícil evaluarlo definitivamente, pero nuestra prueba de fuego es si los ingenieros continúan uniéndose a Stripe simplemente por la gente. Poner a un candidato en la mesa del almuerzo con un puñado de Stripes ha sido nuestra estrategia más vendida hasta la fecha. Mientras ese sea el caso, sabemos que estamos formando el equipo adecuado.
[1] Con frecuencia cambiaremos el proceso de entrevista para candidatos particulares, ya sea para obtener una señal adicional o para manejar las limitaciones de las personas. Entonces, si está entrevistando con nosotros, no debe preocuparse si su proceso de entrevista difiere de lo que describo aquí.