
Después de identificar las posiciones a las que deseas aplicar para realizar tu práctica profesional, preparar tu hoja de vida y enviarla a través de los sitios web de las compañías (o por intermedio de algún contacto que trabaje en la empresa), si los reclutadores se han interesado en tu perfil te invitarán al proceso de entrevistas. Para potenciales practicantes que cursan actualmente un programa de pregrado o posgrado, el proceso usualmente consta de dos entrevistas iniciales que se realizan telefónicamente -o por videoconferencia- para evaluar habilidades generales de programación, y en caso de ser exitosas, una entrevista adicional para la selección del proyecto específico, la cual se enfoca en la experiencia previa y en las expectativas personales del candidato. Las materias básicas, e.g. fundamentos de programación, análisis de algoritmos y estructuras de datos de un programa de Ingeniería son un buen punto de partida de preparación para este tipo de entrevistas, pero es necesario practicar suficientemente y con anticipación para que puedas estar cómodo durante la entrevista.
Formato de la entrevista técnica
Aunque el formato de las entrevistas varía de empresa a empresa, el proceso es relativamente estándar entre las empresas grandes de Silicon Valley (Apple, Cisco, Facebook, Google, Hewlett-Packard, Intel, LinkedIn, Twitter), las cuales ofrecen los programas de prácticas profesionales más masivos (hay empresas que durante el año reclutan cientos de practicantes) y maduros, es decir, donde tendrás mejores oportunidades de conseguir una práctica y desarrollar nuevas habilidades. Las empresas más pequeñas, tipo startup, usualmente ofrecen pocas vacantes para posiciones de práctica profesional, y estas son usualmente ocupadas rápidamente por candidatos locales.
Las entrevistas se conducen en Inglés, por lo cual debes poder entender, hablar (explicar tu solución) y escribir (código) en Inglés. Cada entrevista dura aproximadamente 45 minutos y usualmente incluye 2 problemas: el primero (warmup o calentamiento) suele ser sencillo y se resuelve en los primeros 15 minutos, el segundo (o una derivación del primero) presenta un nivel de complejidad adicional, y se resuelve en los siguientes 30 minutos. La solución para cada problema propuesto debe hacerse escribiendo el código en un documento compartido en línea, no en un IDE, por lo cual debes practicar sin tener las ayudas típicas como el auto-completado. Asegúrate de preguntar si se pueden usar ayudas en línea, e.g. Stack Overflow. Dado que necesitarás implementar una solución en un lenguaje de programación, es importante identificar el lenguaje con el que te sientas más cómodo, e indagar sobre si hay un nivel adicional de experticia requerido para las vacantes de práctica, tales como desarrollo web front-end o móvil .
Preparación para las entrevistas técnicas
La preparación para las entrevistas técnicas es indispensable y requiere una dedicación intensiva para asegurarte que estás en un buen nivel de conocimiento y agilidad resolviendo los problemas en el tiempo requerido. Como dato curioso, hemos encontrado que cerca del 80% de los practicantes colombianos que hemos conocido en Silicon Valley han tenido experiencia participando en competencias de programación de alto nivel, e.g. Colombian Collegiate Programming League (CCPL), a través de sus Universidades en Colombia. A continuación listamos algunos recursos complementarios que te servirán para la preparación:
Libros:
Cracking the Coding Interview, 6th Edition - Gayle Laakmann McDowell
Programming Interviews Exposed: Secrets to Landing Your Next Job, 3rd Edition - John Mongan, Noah Kindler, Eric Giguere
Algorithms For Interviews - Adnan Aziz, Amit Prakash
Cracking the PM Interview: How to Land a Product Manager Job in Technology - Gayle Laakmann McDowell
Cracking the Tech Career: Insider Advice on Landing a Job at Google, Microsoft, Apple, or any Top Tech Company - Gayle Laakmann McDowell
Sitios web:
Career cup: http://www.careercup.com/.
Top coder: http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index
Project Euler: http://www.projecteuler.net
Tips de entrevistas telefónicas: https://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions
Tips de entrevistas: http://www.kegel.com/academy/getting-hired.html
Entrevistas ficticias (mock interviews) para practicar:
Career cup: http://www.careercup.com/interview
Pramp: https://www.pramp.com/
Codility: http://www.codility.com
Hacker Rank: https://www.hackerrank.com/
Interviewing.io: http://interviewing.io/
Videos:
Gayle L McDowell - Cracking The Coding Interview: https://www.youtube.com/watch?v=rEJzOhC5ZtQ
How to Work at Google - Candidate Coaching Session: Tech Interviewing: https://www.youtube.com/watch?v=oWbUtlUhwa8
Ask Me Anything: Gayle Laakmann McDowell (Cracking the Coding Interview): https://www.youtube.com/watch?v=1fqxMuPmGak
Moishe Lettvin - What I Learned Doing 250 Interviews at Google: https://www.youtube.com/watch?v=r8RxkpUvxK0
Hangouts On Air: Google Technical Internships: https://www.youtube.com/watch?v=gb3Wed9M25A
Enfrentar la entrevista técnica
Durante una entrevista técnica no se espera que el candidato entienda en su totalidad el problema o la solución óptima desde el primer momento, por lo cual siéntete en libertad de hacer preguntas aclaratorias y compartir con el entrevistador tu punto de vista, confirmando que lo entendiste adecuadamente y que estás considerando soluciones válidas. Al enfrentar cada entrevista técnica, se recomienda:
Entender el problema: Asegúrate de entender muy bien la naturaleza del problema, el contexto en el cual existe el problema y las restricciones que puedan definir el nivel de complejidad y viabilidad de una solución. Valida tus supuestos y escríbelos de forma que sean fácilmente referenciables para la toma de decisiones de diseño de tu algoritmo.
Proponer soluciones: En ocasiones no hay una respuesta única u óptima a un problema, por lo cual es buena idea proponer varias soluciones (incluyendo la subóptima, conocida como "de fuerza-bruta"), confrontando su complejidad y desempeño teniendo en cuenta el impacto en procesamiento y almacenamiento.
Implementar la solución: Hazlo en el lenguaje con el que te sientas más cómodo, idealmente alguno de los populares actualmente en la industria: C/C++, Java/C# o Python/Ruby/PHP/Perl, pero definitivamente no en seudocódigo. Aunque no es necesario escribir código que compile, se asume que estás familiarizado con la sintaxis básica del lenguaje (arquitectura general y nombres de clases, métodos, etc.)
Validar que funcione: Al codificar una solución, asegúrate de que no hay errores o "bugs" haciendo unas pruebas básicas y déjale saber al entrevistador qué tipo de pruebas detalladas, e.g. unitarias, harías para asegurar una mayor cobertura de calidad.
Formato de la entrevista para selección de proyecto
Esta entrevista es usualmente menos técnica y se enfoca en conocer a un alto nivel tu experiencia aplicada en el dominio que sea requerido para un proyecto específico a traves de una conversación con los miembros del equipo en el cual trabajarías. Aunque es buena idea estar abierto a nuevos retos de aprendizaje, ten en cuenta que enfrentarte a un proyecto totalmente nuevo toma tiempo, por lo cual es ideal minimizar las variables que consideres poco relevantes (e.g. un nuevo lenguaje de programación), de forma que tengas una práctica más productiva y exitosa.
Al finalizar las entrevistas recuerda agradecer a los entrevistadores por su tiempo. Si tu entrevista fue exitosa serás contactado por los reclutadores quienes te indicarán los pasos a seguir en el proceso. Es difícil decir cuánto tiempo toma esta notificación pues depende de muchas variables, pero si no has recibido noticias luego de aproximadamente dos semanas, no está mal enviar un correo corto al reclutador preguntando por el estado del proceso.
Ver artículos relacionados:
Razones por las cuales hacer una práctica profesional en Silicon Valley cambiará tu vida
Cómo prepararte para conseguir una práctica profesional en Silicon Valley
Cómo prepararte para conseguir una práctica profesional en Silicon Valley: La hoja de vida
Cómo prepararte para conseguir una práctica profesional en Silicon Valley: Aplicar a la posición