martes, 12 de octubre de 2010

Largá el twitter!

Probablemente el consejo de usabilidad más conocido por todos los programadores es el no construir menúes con más de 7 +- 2 opciones. Seguramente nuestros lectores recuerdan el motivo de este criterio: los seres humanos (y generalmente nuestros usuarios lo son) tenemos problemas en mantener en nuestra memoria de corto plazo más de esa cantidad de elementos a la vez.

¿Qué es la memoria de corto plazo? Para explicarlo en términos nerds (y muy simplificados), es una suerte de cache donde nuestro cerebro guarda cosas que podemos acceder en forma extremadamente rápida. Cuando todo lo que necesitamos para realizar una tarea está en esta cache, el desarrollo "fluye" y se producen esos momentos en que todas las ideas que tenemos son fácilmente plasmadas en nuestro código. Es en estos momentos cuando una hora de trabajo nos rinde más que ocho horas de trabajo normal. Este fenómeno es lo que en inglés se conoce como "flow" o estar "en la zona".

Este estado de concentración total es dificil de alcanzar y es muy frágil. Cualquier interrupción hace que nuevas cosas ocupen nuestra cache y cuando queremos volver a nuestra tarea el cerebro empieza a "paginar", buscando los pedazos de información que necesita para continuar. Si estas interrupciones se producen muy a menudo, trabajamos todo el tiempo de una manera muy inferior a nuestro verdadero potencial y todas las tareas nos llevan mucho más tiempo del que deberían.

Entre las interrupciones que sufrimos normalmente, las mas comunes son las interrupciones producidas por nuestros compañeros de trabajo o, peor aún, por nuestros jefes. Estas son interrupciones dificiles de evitar. Una manera es llegar muy temprano o quedarse más tarde en el trabajo, de manera de tener unas horas de productividad por día. Otra manera es ponerse de acuerdo entre compañeros y hacer los pedidos de ayuda de una manera no intrusiva, de forma tal que la persona a la que vamos a interrumpir pueda manejar el momento en que responde a nuestro pedido (por ejemplo por mail). A riesgo de quedar como un antisocial, también es posible enchufarse los auriculares y poner "Cowboys from Hell" a todo volumen.

Otras interrupciones son mucho más fáciles de solucionar, aunque requieren más fuerza de voluntad. Me refiero a las interrupciones causadas por messengers, redes sociales, mails, etc. A menudo he visto trabajar a programadores a la vez que chatean con 3 o 4 personas y generalmente estos programadores producían código de baja calidad, con millones de bugs y mucho más lentamente que los programadores que trabajaban más concentrados. Esto no quiere decir que se deban prohibir estas herramientas (y mucho menos que los programadores deban trabajar sin conexión a internet, como he visto en algunas empresas). Quiere decir que es importante separar el tiempo en que se está programando del tiempo en que se está chateando, y que aunque parezca antiintuitivo, un programador que dedica 6 horas de su tiempo a programar y 2 a chatear va a ser mucho más productivo que si dedicara sus 8 horas a programar a la vez que chatea.

Ultimamente estoy utilizando una forma de trabajo basada en la técnica Pomodoro (aunque no siguiéndola al pie de la letra ya que esta tiene otras cosas interesantes, que espero poner en práctica en algún momento). Básicamente divido mi tiempo de trabajo en mini-sprints de 24 minutos. Durante esos mini-sprints desactivo los messengers, las notificaciones de mails y básicamente todo lo que me puede llegar a interrumpir. Trabajo totalmente concentrado durante esos 24 minutos y cuando termino me tomo unos 5 minutos para descansar. Antes de arrancar el siguiente sprint, verifico si tengo mails que contestar o si alguien intento chatear conmigo. Cada tres o cuatro sprints, me tomo un descanso un poco más largo.

De esta manera, puedo mantener períodos intensos de concentración y a la vez solo estoy incomunicado por a lo sumo 24 minutos por vez. Es interesante que en las primeras épocas en que utilicé está técnica, terminaba el día muy cansado, por la falta de costumbre de trabajar realmente a full tanto tiempo.

Nuevamente, estas ideas no apuntan a que nos comportemos como robots ni a que seamos antisociales, trabajando todo el tiempo totalmente concentrados y sin comunicación con el resto. El ambiente laboral es algo muy importante y las charlas y los chistes alrededor de la cafetera ayudan a formar ese ambiente laboral. También son muy importantes las reuniones de equipo como el Daiyly Meeting, de Scrum. Lo que buscamos es maneras de hacer que el tiempo que dedicamos a programar sea mucho productivo solo dedicándose a ..... Programar!.

2 comentarios:

  1. http://english.bilinkis.com/2010/07/22/twitter-culture-and-the-end-of-attention/

    Los hábitos que las tecnologias de la información imponen sobre nosotros atentan contra una concentración prolongada. Aunque es un problema cada vez más corriente y que se puede diagnosticar de las expresiones populares de "soy re colgado" o "no tengo memoria para nada", todavia no hay una percepción pública de ser un problema epidemico.

    Si lo tiene un nene es sindrome de deficit de atención, si lo tiene un adulto es "un pelotudo importante que no para de boludear" o un "cabecita de novia" como diria mi abuela.

    Voy a probar la técnica pomodoro.

    ResponderEliminar
  2. Ja, buenisimo Matias. Y es como lo que me contabas ayer, 700 personas en el Google Dev Fest, y la gran mayoría se la paseo twiteando o actualizando su Facebook, casi nadie le prestaba atención al que hablaba.

    ResponderEliminar