• Las entidades vivas de JPA Develamos el misterio: ¿qué relación mantienen los objetos con la base de datos?
  • La fábula de Arturo Un valiente caballero nos enseñará las consecuencias de la deuda técnica.
  • 4 consejos para presentar como un samurai Averiguamos lo que tienen en común un samurai y un presentador efectivo.
  • Cómo alimentar nuestra creatividad Ideas para alimentar la creatividad cotidiana de los equipos de trabajo.

Pintura azulEs dificil construir un buen espacio de trabajo para un equipo de desarrollo. Hay que balancear muchos factores: humanos, sociales, ambientales, económicos y personales. No existe una solución universal, pero si podemos compartir algunas lecciones aprendidas durante los años.

Hay que tener en cuenta que las siguientes reglas sólo tienen sentido cuando sea de máxima prioridad crear un equipo productivo. Lamentablemente, en muchas organizaciones hay otros factores que terminan estando primero.

Las 10 reglas

  1. Ubicar en un mismo espacio a todas las personas vitales para el proyecto. Los métodos Ágiles se basan en la comunicación. Al estar todos juntos se facilita enormemente la comunicación; las personas dejan de tener que trabajar para comunicarse y simplemente se comunican.
  2. Aislar al equipo del ruido exterior. Queremos crear un espacio donde las personas estén cómodas escuchando las conversaciones a su alrededor. La mayoría de las cosas que escuchan deberían estar relacionadas con el trabajo que tienen, en un volumen moderado, sin dramas ni gritos.
  3. Tener muchas paredes libres y con pizarrones. El lugar de trabajo tiene que tener información rica, con planificaciones de producto, listas de tareas, gráficos y demás. Tiene que resultar facil saber qué está ocurriendo.
  4. Dejar lugar para las reuniones diarias de parado. Cada mañana los equipos se juntan para sincronizarse y contarse lo que están haciendo. Esto involucra el uso de gráficos, backlogs y otros artefactos. ¡Se necesita espacio para todo esto! 
  5. Usar escritorios en donde se pueda colaborar con otra persona. Es increíble la cantidad de organizaciones que hablan de la colaboración, y luego compran muebles que son activamente hostiles para esto. Sin importar si el equipo practica la programación de a pares, todos los puestos de trabajo deberían tener lugar para que dos personas se sienten lado-a-lado con comodidad, teniendo ambos acceso al teclado y la pantalla.
  6. Minimizar las distracciones. Las distracciones son mortales para los programadores, ocasionando caida en la productividad y disminución de la calidad del producto (esto no aplica tanto a los no-programadores, aunque igual hay que tener cuidado con las distracciones). Para minimizar el caos: 
    • Sin teléfonos. Algunos equipos evitan por completo los teléfonos; otros los mantienen alejados de los puestos de trabajo.
    • Sin email o IM. Dejar esto para computadoras fuera del área principal de trabajo. Una solución común es un área compartida de computadoras, con notebooks personales para email, IM y demás.
    • Los jefes callados. Los líderes, jefes, gerentes están acostumbrados a ser el centro de atención. Algunos equipos aprenden a seguir trabajando, pero para esto los jefes tienen que mantenerse callados y tranquilos. Si no pueden hacer esto o el equipo no puede ignorarlos, hay que mantenerlos fuera del lugar mientras se trabaja.
    • Controlar el tráfico. Es preferible ubicar a los desarrolladores lejos de las puertas, dejando ese lugar para los gerentes, dueños de producto y diseñadores. Los visitantes suelen hablar con la primer persona que encuentran; si esa persona puede ayudarlos, mejor para todos.
  7. Sólo los colaboradores directos permanecen en la habitación. Las personas con puestos en la habitación deben estar enfocadas principalmente en el proyecto. Una buena solución para los colaboradores part-time es tener escritorios para visitas, de forma de poder estar presentes cuando participan y volver a otro lugar cuando dejan de participar. Las personas con trabajos sin relación directa, especialmente grupos ruidosos como la gente de ventas, nunca debería estar en la misma habitación.
  8. Tener espacios necesarios cercanos. Crear software debería ser la principal ocupación del equipo de desarrollo, pero hay que asegurarse que exista espacio cercano para otras actividades importantes. Estos lugares pueden estar formalmente designados, o ser cosas informales como oficinas sin usar o bares cercanos. A menudo se comparten con otros grupos. En general está bueno ver: 
    • Salas de reuniones pequeñas. Estas salas sirven cuando una persona tiene que atender una llamada, o una reunión entre dos o tres personas.
    • Salas de reunión grande. Se puede usar salas de conferencias. Tiene que haber un pizarrón.
    • Una sala de recreo. Las personas necesitan descansar, y las buenas ideas a menudo surgen de conversaciones más informales.
    • Proyectos relacionados y staff. Los patrones de comunicación tienden a imitar los patrones espaciales. Hay que aprovechar esto! 
  9. Hacer que el lugar sea placentero. Hay que hacer que el lugar sea cómodo en vez de hostil. Seguro, las personas pueden trabajar casi en cualquier lugar, pero para que entreguen valor tienen que estar cómodas. Esto incluye: 
    • Buena iluminación. Iluminación natural, suplementada con buena iluminación en la habitación y en los escritorios. Los programadores odian las luces fluorescentes, por lo que hay que evitarlas.
    • Buena ventilación. Las habitaciones de equipo suelen tener una alta densidad de personas, por lo que es importante que exista una buena ventilación y temperaturas controladas. Sino, a las 3 de la tarde la habitación va a oler como un bar sábado a la noche en verano...
    • Muebles cómodos y confiables. No estoy hablando de muebles de lujo, sino muebles que sean buenos y funcionales. En general hay que invertir en buenas mesas en vez de escritorios comunes. Un escritorio malo y una silla incómoda terminan costando mucho más en productividad que el ahorro inmediato.
    • Plantas y decoración. Cuesta muy poco convertir una habitación en algo atractivo. Unas pocas plantas y algunos posters son una buena forma de empezar. También ayuda tener algunos juguetes, especialmente aquellos que fomentan la interacción y colaboración.
    • Snacks. La comida y la bebida juegan un rol fundamental en la hospitabilidad. Usualmente se pueden ubicar algunos snacks saludables, como frutas y verduras, y agua mineral. En la sala de recreo se pueden ubicar algunas opciones más elaboradas o menos saludables, como café, gaseosas, papas fritas, cereales y demás.
  10. Conseguir las herramientas apropiadas. Vale la pena gastar un poco más en conseguir buenas herramientas, incluyendo pizarrones, IDEs, pantallas, teclados y servidores de integración continua. Se amortizan con miles de horas de uso, y los de mayor calidad terminan siendo prácticamente gratis. No hay que gastar tiempo y energía en lidiar con malas herramientas.

¡Pero todo eso es muy costoso!

El "costo" suele ser la queja más común, pero no tiene ningún sustento cuando se mira a la relación costo/beneficio.

Si lo comparamos con lo que ya estamos gastando por la vida del proyecto veremos que despreciable. Y además no es la comparación correcta; cualquier equipo de software debería generar un Retorno de Inversión (ROI) que cubra con creces estos gastos obvios. Si estas recomendaciones generan aunque sea un modesto incremento en la productividad, entonces bien lo vale. Y en mi experiencia, los beneficios son drásticos y no modestos! 

¡Pero es muy dificil! 

A veces hacer esto resulta dificil por motivos legítimos. Por ejemplo, sin dudas es mucho trabajo mudar oficinas o reconstruir parte del espacio que tenemos. Pero es mucho mejor trabajar duro al inicio de un proyecto que pasar años y años de problemas intentando compensar las malas condiciones de trabajo.

Sin embargo, también puede resultar dificil porque las organizaciones valoran otras cosas más que la productividad. Algunos equipos no pueden arreglar su espacio de trabajo por algunas políticas de oficina, presupuestos muy rígidos, políticas obsesivas con los muebles, políticas corporativas sin sentido, procesos de toma de decisiones disfuncionales, o valorar la apariencia por sobre los resultados. Si este es el problema, debemos considerar debatir explíticamente estos problemas culturales de la organización.

Y si tenemos miedo de tratar estos temas, deberíamos preguntarnos si vale la pena estar trabajando en esa empresa. Quizás tu empleador actual no comparta tu pasión por terminar las cosas, pero estate seguro que hay otros que si.

Más información

Traducido de 10 rules for great development spaces, por William Pietri

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw