Enable javascript in your browser for better experience. Need to know to enable it? Go here.
Blogs Banner

Qué esperar de una entrevista de pair programming

¿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”
2. Jonette M. Stecklein y otros, “Error Cost Escalation Through the Project Life Cycle

Aviso legal: Las declaraciones y opiniones expresadas en este artículo son las del autor/a o autores y no reflejan necesariamente las posiciones de Thoughtworks.

Mantente al día con nuestros últimos insights