Cada vez que entramos a una oficina vemos gente trabajando. Todos trabajamos de distintas maneras. A veces trabajamos individualmente, a veces nos juntamos con un par para terminar una tarjeta que elegimos de la pared (tarjeta = post-it con una tarea en el tablero de Scrum). Estas dos formas de trabajar son bien distintas, y podemos tenerlas en cuenta al momento de diseñar la ubicación de los puestos de trabajo en la oficina.
¿Cómo organizar los escritorios de una oficina para hacer la mejor Programación de a Pares posible?
Cuevas
Las personas necesitan privacidad. Necesitan poder atender o hacer llamadas telefónicas, o hacer otras cosas sin molestar al resto de las personas en la oficina. También necesitan tener su "hogar de oficina", donde puedan dejar todas sus cosas. Estos lugares pueden ser pequeñas oficinas o cubículos.
Las Cuevas también son muy buenas para aquellas parejas cuya tarea es investigar en la que ninguno de los dos tiene experiencia. De esta manera se pueden explorar cosas nuevas de manera mucho más eficiente, logrando distintos enfoques para obtener varios resultados. Luego la pareja se junta para discutir las soluciones que se encontraron. Si la pareja trabajara en una única PC, su productividad sería sólo un poquito mejor que un único desarrollador trabajando solo.
Área común
Cuando se trata de hacer Programación de Pares, las personas suelen usar sus "espacios personales", o usan espacios diseñados para este propósito, como escritorios de parejas o salas de parejas. Hay dos roles en cada pareja. El conductor es la persona que está en control del teclado y el mouse en un momento. La otra persona se llama navegante.
En el caso de los espacios personales, cada escritorio no debe limitar el acceso a la PC. Es decir, es mejor que el escritorio sea recto, sin curvas ni agregados. Los escritorios "de esquina" no permiten que dos desarrlladores se sienten juntos, uno al lado del otro: el navegante se tiene que sentar atrás del conductor, y tiene una visión muy limitada de la pantalla. En este caso, al "cueva" no sirve para la tarea.
Existen distintas variantes de cómo organizar un escritorio para hacer Programación de Pares. Veamos en detalle.
Una PC, una pantalla, un mouse, un teclado
En este configuración sólo hay una pantalla, por lo que debemos ubicar a las personas de manera que tanto el navegante como el conductor tengan buena visibilidad de la pantalla. Sino, el navegante no va a poder contribuir tanto, y disminuye la productividad de la pareja. El navegante no tiene control activo sobre lo que ocurre. La única forma que tiene el navegante de influenciar el proceso es diciéndolo o sugiriéndolo al conductor. Esta limitación de tener un único teclado y mouse termina en el "cambio" de roles. Cuando el navegante decide conducir, se le pasa el control a él, entregándole el teclado y el mouse. De esta manera, todos en la oficina pueden ver cuál es el rol de cada par en un momento dado.
Idealmente los desarrolladores deberían sentarse lado-a-lado y compartir el mismo porcentaje de la pantalla (50% cada uno). Esto se puede lograr usando un monitor grande de pantalla ancha (widescreen de 21" o más).
Para pantallas más chicas, el porcentaje que ocupa el conductor está relacionado con el tamaño de la pantalla. Para monitores de 19" es aproximadamente el 60%. Cuando cambian los roles, el desarrollar cambia de lugar físicamente respecto a la pantalla, como vemos a continuación:
Una PC, una pantalla, un teclado, dos mouse
Una alternativa es tener dos mouse. Los mouse USB funcionan perfecto para esto. Tan sólo hay que enchufar los mouse a la PC y voilá, todo listo. El sistema operativo debería reconocer ambos mouse y dejarlos listos para usar. Desafortunadamente hay un único puntero en la pantalla, así que la pareja va a tener que "pelear" por usarlo (o al menos no conocemos ningún buen software que permita tener dos punteros).
Hay varios beneficios interesantes al usar dos mouse. El navegante no tiene que sufrir frases del estilo "¡¡NO LLENES DE DEDOS MI PANTALLA!!" cuando quiere señalar algo. Un segundo mouse es una herramienta poderosa, para señalar o ayudar haciendo clicks (hoy en día se pueden lograr muchas cosas con un sólo click!).
Entonces tenemos dos mouse, ¿cómo cambiamos de rol? Es casi lo mismo que antes. El teclado se pasa entre la pareja. El navegante suele sentarse a la izquierda, con el mouse extra. El conductor se sienta a la derecha, controlando el teclado y el mouse. Cuando cambian los roles, el condductor que se convierte en navegante (a la derecha) pierde el control ya que no hay un tercer mouse a su derecha (lo mismo que con la configuración de un teclado y un mouse), por lo que el navegante a la derecha queda bastante pasivo.
Una solución sería agregar un tercer mouse a la derecha. Podría funcionar, pero parecen ser demasiados ratones sobre el escritorio.
Una PC, una pantalla, dos teclados, dos mouse
Esta configuración es aún mejor que las anteriores. En este caso se agrega otro teclado a la PC. Cada desarrollador tiene su propio combo de teclado/mouse. Con esta configuración se pueden cambiar los roles de manera muy efectiva, ya que de manera casi instantanea un navegante puede convertirse en conductor, y luego devolver el control rápidamente.
Si la empresa no puede permitirse gastar en un par extra de teclados y mouse, alcanza con traer los propios a la estación de parejas. Todos tenemos una PC con su teclado y mouse, ¿no?. Así que tan sólo hay que desconectarlo de nuestra PC y traerlos a la PC de parejas. idealmente no tenemos que llegar a esto, ya que va a haber algunos teclados extra por ahí. Los mejores resultados se obtienen con dispositivos inalámbricos, ya que se evitan todo el cablería sobre el escritorio y se pueden cambiar de lugar facilmente. El único problema que puede surgir es que puede empezar a haber problemas de interferencia con las frecuencias, por lo que en estos casos es mejor seguir con los cables.
Una PC, dos pantallas, dos teclados, dos mouse
Esta es la configuración ideal, y quienes la tienen son afortunados. No hay muchas empresas que puedan brindarle este lujo a sus desarrolladores. En nuestra empresa tenemos varias salas de parejas equipadas con PC rápidos, pantallas duales de 21", y dos combos de teclado y mouse.
Esta configuración es ideal desde el punto de vista del conductor y del navegante, ya que ambos tienen una visión completa de la pantalla. Cuando sos navegante a veces podés sentir que la máquina está haciendo tu trabajo (si lográs ignorar a la persona sentada a tu lado, pero mejor se bueno con esa persona, que también le va a tocar ser navegante).
Alternativamente se puede aprovechar ambos monitores para "estirar" el escritorio virtual, mostrando una mitad en un monitor y la otra mitad en el otro. De esta manera hay más espacio virtual de trabajo, lo que resulta en una configuración más eficiente. Esta es la configuración típica, en donde una pantalla tiene el código fuente y la otra se usa para probar la aplicación (el navegador web, para la mayoría de las aplicaciones).
Notebooks y la programación de a pares
Las notebooks son esas cositas tan bonitas y chiquitas. Todos las queremos. Pero no son ideales para hacer Programación de a Pares. Al menos, no en su forma "nativa". Hay que hacer algunos arreglos. Pueden leer más en why the laptops are no good for pair programming.
¿Qué podemos hacer? ¿Cómo podemos hacer programación de a pares y usar notebooks a la vez?
La respuesta no es tan dificil. Para acomodar al segundo desarrollador necesitamos una pantalla, un teclado y un mouse. ¿Escucharon del USB? Consigan un teclado y un mouse USB, y listo. Bueno, casi. El segundo desarrollaro también necesita ver, por lo que necesitamos otra pantalla. Las notebooks tienen salida de video, por lo que no debería resultar dificil agregar la pantalla extra. La única dificultad podría ser ajustar la resolución de la notebook a la del monitor adicional.
También puede configurarse el escritorio para estirarlo a la segunda pantalla, aumentando el área de trabajo (siempre y cuando ambos tengan buena visibilidad de ambas pantallas).
Ubicación de los escritorios en la oficina
Hasta aquí hablamos de la configuración de los escritorios. ¿Cómo deben organizarse estos escritorios dentro de la oficina?
Hay dos factores a tener en cuenta: ruido y comunicación. La comunicación es importante no sólo dentro de la pareja, sino también entre parejas. Es muy beneficioso si podemos comunicarse rápidamente cada vez que lo necesitamos. La ubicación de los escritorios en la oficina tiene que permitir que las parejas se vean y hablen entre ellas con facilidad. La siguiente configuración de escritorios es la que recomiendan la mayoría de los libros de Extreme Programming (XP), en donde se ubican seis escritorios (seis parejas) de la siguiente forma:
Esta es la formación ideal si hay lugar disponible. Todas las parejas se pueden ver y hablar entre ellas sin tener que gritarse. También tienen espacio semi-privado donde la pareja puede trabajar sin generar mucho ruido.
Los escritorios tienen que ser lo suficientemente grandes para acomodar a ambos desarrolladores, equipados con PCs rápidas y un par de teclados y mouse. Todo este equipamiento debe pertenecer al área común, y no deben ser cuevas personales de nadie.
No todos logran esta configuración. También puede haber salas de parejas que están bien equipadas, pero son salas comunes. Y por lo tanto aislan a las parejas entre si. La desventaja es que los desarrolladores no suelen comunicarse entre las parejas fuera de las reuniones (formales o informales) cuando están fuera de las salas de parejas. No todos los desarrolladores se acostumbran a estas salas. Es simple: suele haber muchas personas y pocas salas. Entonces se puede terminar usando los espacios personales como espacios para parejas también. Ninguno de esos escritorios está ubicado en el medio de la sala. Están alineados contra la pared y ventanas de la oficina. Por lo que a veces hay que hacer magia para ubicar a las parejas.
Sin importar la configuración de escritorios en la oficina, hay que intentar respetar a los desarrolladores individuales que necesitan una atomósfera tranquila para programar. Los pares generan más ruido, pero también pueden bloquear más efectivamente el ruido de otros. Los programadores individuales no pueden hacer eso (a menos que usen auriculares...). Idealmente, las parejas deberían estar en cuartos separados del espacio personal donde se trabaja solo.