Qué esperar de una entrevista de pair programming
Publicado: June 09, 2020
¿Por qué Thoughtworks evalúa las habilidades de pair programming de los candidatos?
En Thoughtworks, creemos firmemente en el pair programming, no solo para la programación, sino también para la mayoría de nuestras actividades cotidianas. De hecho, ¡esta misma publicación es el resultado de una pair programming! El pairing promueve naturalmente la comunicación, la alineación de pensamiento y el intercambio de conocimientos, al tiempo que reemplaza sin problemas cualquier sentido de competencia con una sensación de colaboración. Para nuestros clientes, esto se traduce en software de mayor calidad, una reducción de los silos de conocimiento y una mejor comunicación.
Aunque parezca paradójico, el pair programming solo es un 15% más lento que tener a dos desarrolladores trabajando por separado (ver #1). Además, el pair programming reduce en promedio un 15% los errores en comparación con tener a esos dos desarrolladores trabajando por separado. Esto resulta muy beneficioso, ya que el pair programming previene errores en las primeras etapas del ciclo de vida del desarrollo de software, y los costos de corregir errores aumentan exponencialmente cuanto más tarde se detectan (ver #2).
¿Se espera que tenga experiencia previa en pair programming?
No. En última instancia, lo que evaluamos son tus habilidades de trabajo en equipo y capacidades técnicas prácticas.
¿Cómo es la entrevista de pair programming?
La entrevista de pair programming se divide en dos sesiones. En la primera, se te dará una declaración del problema y unos minutos para leerla. El primer entrevistador se unirá a ti y discutirán el enfoque que vas a tomar y el diseño que vas a utilizar, así como cualquier otro aspecto que consideres importante. La discusión debe llevar naturalmente a escribir código, y eventualmente la primera sesión terminará.
En la segunda sesión, el primer entrevistador abandonará la sala y se unirá otro. Se espera que le expliques el problema, el enfoque que tú y el primer entrevistador decidieron tomar, el porqué de las decisiones, los compromisos, etc. En esta parte es más importante contextualizar al nuevo entrevistador con la solución del problema actual que simplemente mostrarle y presentarle el código. Eventualmente volverás a codificar y la segunda sesión también terminará pronto.
No esperamos que entregues una solución completa al problema propuesto, así que no te preocupes por eso.
¿Cuáles son los principales aspectos evaluados en la entrevista de pair programming?
Comunicación
Este es probablemente el aspecto más importante que evaluaremos en esta entrevista. Comunícate en todo momento. ¿Dudas entre dos enfoques? Preséntalos a tu entrevistador: ¿Cuáles son los pros y los contras de cada uno, sus implicaciones, compromisos? ¿Te encuentras con algo que no sabes? Comunica lo que ya sabes, cómo abordarías una solución para esa pregunta, dónde empezarías, qué camino tomarías. ¿Tienes dificultades con un problema? Expresa tus preocupaciones, discute posibles enfoques, sus pros y contras, los compromisos.
Flujo de pensamiento
Esperamos que puedas estructurar tus pensamientos y definir una estrategia para abordar el problema propuesto, así como los problemas que surgirán a partir de él, de manera organizada, para que tu entrevistador pueda seguirte y colaborar contigo. Es normal que puedas confundir a tu interlocutor, pero también es importante poder dar un paso atrás y ponerlo nuevamente en el camino correcto.
Trabajo en equipo
Esta entrevista se asemeja mucho a un día normal de trabajo en Thoughtworks. Tu entrevistador actuará la mayor parte del tiempo más como un compañero de trabajo que como un entrevistador. Se espera que ambos cuestionen aquello con lo que no están de acuerdo, que discutan sus ideas y que se adapten a nuevos hechos y propuestas que les presenten, de acuerdo con lo que consideren correcto o incorrecto.
Diseño
Es importante realizar un diseño para tu solución antes de escribir cualquier código. Te permitirá comprender mejor el problema, anticipar problemas de estructura e integración de código y elegir el punto desde el cual comenzar a codificar de manera informada. Tómate tu tiempo para pensar, discutir y evolucionar el diseño a medida que avanzas.
Habilidades de codificación
Esperamos que estés familiarizado con el lenguaje que elijas para la entrevista de pair programming, así como con el entorno de desarrollo que elijas usar. No evaluaremos específicamente tus habilidades en ese lenguaje, pero la falta de familiaridad con él o con el entorno puede afectar nuestra capacidad para evaluar tus habilidades de programación.
Las pruebas automatizadas son una parte muy importante de lo que hacemos, y esperamos cierta familiaridad con ese tema de tu parte. Debido a la naturaleza de los problemas propuestos y las limitaciones de tiempo, solo abordamos las pruebas unitarias en esta entrevista. Conocer TDD y cómo aplicarlo en términos prácticos definitivamente te ayudará.
Presta atención a la legibilidad, mantenibilidad y extensibilidad de tu código.
1. Alistair Cockburn y Laurie Williams, “The Costs and Benefits of Pair Programming”
En Thoughtworks, creemos firmemente en el pair programming, no solo para la programación, sino también para la mayoría de nuestras actividades cotidianas. De hecho, ¡esta misma publicación es el resultado de una pair programming! El pairing promueve naturalmente la comunicación, la alineación de pensamiento y el intercambio de conocimientos, al tiempo que reemplaza sin problemas cualquier sentido de competencia con una sensación de colaboración. Para nuestros clientes, esto se traduce en software de mayor calidad, una reducción de los silos de conocimiento y una mejor comunicación.
Aunque parezca paradójico, el pair programming solo es un 15% más lento que tener a dos desarrolladores trabajando por separado (ver #1). Además, el pair programming reduce en promedio un 15% los errores en comparación con tener a esos dos desarrolladores trabajando por separado. Esto resulta muy beneficioso, ya que el pair programming previene errores en las primeras etapas del ciclo de vida del desarrollo de software, y los costos de corregir errores aumentan exponencialmente cuanto más tarde se detectan (ver #2).
¿Se espera que tenga experiencia previa en pair programming?
No. En última instancia, lo que evaluamos son tus habilidades de trabajo en equipo y capacidades técnicas prácticas.
¿Cómo es la entrevista de pair programming?
La entrevista de pair programming se divide en dos sesiones. En la primera, se te dará una declaración del problema y unos minutos para leerla. El primer entrevistador se unirá a ti y discutirán el enfoque que vas a tomar y el diseño que vas a utilizar, así como cualquier otro aspecto que consideres importante. La discusión debe llevar naturalmente a escribir código, y eventualmente la primera sesión terminará.
En la segunda sesión, el primer entrevistador abandonará la sala y se unirá otro. Se espera que le expliques el problema, el enfoque que tú y el primer entrevistador decidieron tomar, el porqué de las decisiones, los compromisos, etc. En esta parte es más importante contextualizar al nuevo entrevistador con la solución del problema actual que simplemente mostrarle y presentarle el código. Eventualmente volverás a codificar y la segunda sesión también terminará pronto.
No esperamos que entregues una solución completa al problema propuesto, así que no te preocupes por eso.
¿Cuáles son los principales aspectos evaluados en la entrevista de pair programming?
Comunicación
Este es probablemente el aspecto más importante que evaluaremos en esta entrevista. Comunícate en todo momento. ¿Dudas entre dos enfoques? Preséntalos a tu entrevistador: ¿Cuáles son los pros y los contras de cada uno, sus implicaciones, compromisos? ¿Te encuentras con algo que no sabes? Comunica lo que ya sabes, cómo abordarías una solución para esa pregunta, dónde empezarías, qué camino tomarías. ¿Tienes dificultades con un problema? Expresa tus preocupaciones, discute posibles enfoques, sus pros y contras, los compromisos.
Flujo de pensamiento
Esperamos que puedas estructurar tus pensamientos y definir una estrategia para abordar el problema propuesto, así como los problemas que surgirán a partir de él, de manera organizada, para que tu entrevistador pueda seguirte y colaborar contigo. Es normal que puedas confundir a tu interlocutor, pero también es importante poder dar un paso atrás y ponerlo nuevamente en el camino correcto.
Trabajo en equipo
Esta entrevista se asemeja mucho a un día normal de trabajo en Thoughtworks. Tu entrevistador actuará la mayor parte del tiempo más como un compañero de trabajo que como un entrevistador. Se espera que ambos cuestionen aquello con lo que no están de acuerdo, que discutan sus ideas y que se adapten a nuevos hechos y propuestas que les presenten, de acuerdo con lo que consideren correcto o incorrecto.
Diseño
Es importante realizar un diseño para tu solución antes de escribir cualquier código. Te permitirá comprender mejor el problema, anticipar problemas de estructura e integración de código y elegir el punto desde el cual comenzar a codificar de manera informada. Tómate tu tiempo para pensar, discutir y evolucionar el diseño a medida que avanzas.
Habilidades de codificación
Esperamos que estés familiarizado con el lenguaje que elijas para la entrevista de pair programming, así como con el entorno de desarrollo que elijas usar. No evaluaremos específicamente tus habilidades en ese lenguaje, pero la falta de familiaridad con él o con el entorno puede afectar nuestra capacidad para evaluar tus habilidades de programación.
Las pruebas automatizadas son una parte muy importante de lo que hacemos, y esperamos cierta familiaridad con ese tema de tu parte. Debido a la naturaleza de los problemas propuestos y las limitaciones de tiempo, solo abordamos las pruebas unitarias en esta entrevista. Conocer TDD y cómo aplicarlo en términos prácticos definitivamente te ayudará.
Presta atención a la legibilidad, mantenibilidad y extensibilidad de tu código.