h1

A qué dedica su tiempo un desarrollador

01/10/2014

Wizdoc [Icon By Buuf]  Tips & Tricks.

Los requerimientos cognitivos para la programación (ingeniería de software) son mucho más parecidos a los necesarios para componer música o pintar un cuadro, que aquellos para construir un puente o instalar una alcantarilla. La falsa idea de que los “geeks” somos aburridos, poco creativos y torpes implicaría que Mozart, Beethoven y Daft Punk también lo son.

Entonces, ¿por qué insistimos en medir el desarrollo de software como si fuera una ciencia de la ingeniería?

Hace un par de meses publiqué un post referente a las herramientas y tecnologías más usadas en el lenguaje de programación Java. Adicionalmente a la frecuencia con la que se emplean estas tecnologías, el estudio original también contiene un apartado relacionado a la productividad del personal IT. Específicamente, a qué dedica su tiempo un desarrollador. Los resultados son reveladores:

Actividad Descripción Tiempo Porcentaje
Generación de código Programando, codificando, desarrollando hacks 15 Hrs. 37.5%
Resolviendo problemas Debugueo, perfilamiento, tuning de desempeño 5 Hrs. 12.5%
Comunicación Juntas, chats, correos, teleconferencias 5 Hrs. 12.5%
Overhead técnico Compilando, desplegando, instalando hardware y software 4 Hrs. 10%
Estrategia Arquitectura, diseño, refactoring 4 Hrs. 10%
Ocio Twitter, Facebook, YouTube 3 Hrs. 7.5%
QA Generación de pruebas, revisiones de código 2 Hrs. 5%
Bomberazos Caídas de sistema, problemas de desempeño 2 Hrs. 5%

Desglose de actividades desempeñadas durante una semana de trabajo de 40 Hrs. (Fuente: zeroturnaround.com)

De acuerdo al reporte – que incluye a desarrolladores, arquitectos, sysadmins y QAs – el personal IT sólo pasa 26 horas a la semana (65% del total, o tan sólo 5.2 horas efectivas al día) desempeñando su función principal: generando código, resolviendo problemas, realizando tareas de estrategia y QA; el resto del tiempo lo dedica a actividades menos productivas como juntas, bomberazos y cierto grado de ocio.

Por otro lado, si estos parámetros son resultado de una encuesta global, es inevitable darse cuenta que el personal Latinoamericano es aún menos productivo, ya que nuestra cultura incluye distracciones como ir a la tienda de la esquina por unas papas o pasar por el café de las 4:00 al Starbucks local. Esto nos proporciona una buena idea de la productividad real de un desarrollador en nuestros países, ya que ésta puede disminuir a tan sólo 3-4 horas efectivas al día. Como resultado, muchas empresas de la región extienden sus horarios a 45 horas o más a la semana, agotando aún más a los recursos y a largo plazo, impactando su productividad.

Las causas organizacionales de una baja productividad

¿Por qué cuidar la productividad del personal IT? La respuesta es simple: dinero. El factor más importante en el desarrollo de software son los desarrolladores, mientras que el ambiente de trabajo tiene un profundo impacto en la productividad y calidad, como veremos más adelante. Por ello, es necesario hacer ajustes en ambos para maximizar el retorno de inversión: un desarrollador es un empleado caro con un mejor salario que el del promedio de otros trabajadores de oficina. Considerando los tiempos de desarrollo, tiene sentido mejorar su eficiencia y productividad, pues una mala calidad y fechas de liberación erradas terminan en marchas forzadas, cacerías de brujas y ultimadamente, un mayor costo para la organización.

Ahora bien, ¿qué puede hacer la empresa para incrementar nuestra productividad? Muchos jefes creen que bloqueando internet mejorará el desempeño de sus empleados. Sin embargo, esto no puede estar más alejado de la realidad: de acuerdo a varios estudios, al navegar por la red obtenemos el descanso y relajación necesarios para mejorar nuestro estado de ánimo, incrementando nuestra productividad. Por supuesto, sitios pornográficos o con material ofensivo deben ser filtrados, pero una empresa sin acceso a Stack Overflow sólo significa que top management no tiene idea de lo que está haciendo.

En realidad, existen otras maneras de destruir la productividad de la gente IT que pueden clasificarse en básicamente cinco categorías:

1. Las manzanas podridas. En esta categoría tenemos programadores con pésima actitud, hombres orquesta con egos más grandes que la deuda externa y narcisistas que insisten en achacar a otros los errores de su propio código. En algunos casos, es posible corregir el rumbo al delimitar responsabilidades, tener una estrategia de capacitación y una intervención real de recursos humanos que ayude a retenerlos y resolver temas de comportamiento. Aunque, más a menudo de lo que se cree, la mejor opción es deshacerse de las manzanas podridas antes de que echen a perder el resto del barril.

2. Overhead administrativo. Juntas de avance maratónicas, parálisis por inboxes saturados, así como los procesos mismos para medir el desempeño – reportes de actividades, reportes de horas, procesos de control al estilo RUP – dañan más a la productividad de lo que Facebook o Twitter jamás podrán lograr. Aunque la respuesta a este problema yace en la cultura organizacional (tradicional vs. ágil, esclavos de la metodología vs. interpretación pragmática), es una buena idea generar una retrospectiva o análisis FODA para darnos cuenta dónde estamos fallando, ya que la perfección se alcanza, no cuando no hay nada más que añadir, sino cuando ya no queda nada más que quitar.

3. Mala administración. Dos de los peores infractores son aquellos gerentes que no tienen ni idea de TI y cuya única aportación es reenviar correos, o esos managers que recientemente fueron desarrolladores, perdiéndose constantemente en los detalles en vez de tener una visión general del proyecto. En este caso vale la pena ayudar al manager a mejorar sus habilidades, ya sea mediante coaching, revisión por pares o cursos gerenciales. En un peor escenario, habrá que dejarlo “buscar nuevas oportunidades”, pero sólo si hemos buscado ayudarlo sin resultado alguno o ya es un tema de actitud – recordemos que hay estudios demostrando una importante cantidad de sociópatas en las posiciones de medio y alto nivel gerencial.

4. Ambiente de trabajo y dinámica de grupo. Si el ambiente no es propicio para la concentración requerida o el equipo de trabajo no tiene afinidad cultural (programadores vs. testers), se perderá mucho tiempo debido a interrupciones o falta de comunicación. En las metodologías ágiles esto se resuelve al dejar a todo el equipo aislado del resto de la organización, por ejemplo, en una sala de juntas. De la misma manera, los integrantes deben sentirse a gusto con sus demás compañeros al encontrar un tema de interés mutuo, el cual debería ser en la mayoría de los casos, la satisfacción del cliente.

5. Problemas técnicos. La deuda técnica, demasiados requerimientos de documentación o uso de software con pobre documentación, desarrollos que tengan que ver con sistemas legados o por el contrario, implementaciones con tecnologías inmaduras, implican cuantiosas pérdidas de tiempo en investigación, pruebas de concepto, lectura de más y más manuales así como re trabajo constante. Entre otras opciones, es necesario considerar el tiempo dedicado a estas actividades e incluirlo en el plan de proyecto. Así mismo, debemos asegurarnos que las incidencias sean resueltas tan pronto como vayan apareciendo, para evitar que la entropía se haga presente.

Con todo y todo, hasta este punto estamos asumiendo que el ambiente laboral no es tóxico o extremadamente burocrático, o que el personal vive lo suficientemente cerca del trabajo como para no llegar exhausto después de un recorrido de hasta dos horas. Pero, si buscamos quitarle cargas innecesarias a los empleados, estaremos dando un paso en la dirección correcta: hay pocas cosas que podamos hacer para incrementar la motivación y productividad de un desarrollador, pero sí que podemos hacer mucho para destruirla.

Nosotros también somos parte del problema

Así es: los sistemólogos tampoco somos el cuchillo más filoso de la cocina, pues tenemos malos hábitos que impactan nuestra propia productividad, incluyendo:

• Multitasking. La mayoría intentamos llevar a cabo varias tareas al mismo tiempo, como generar un entregable mientras checamos el correo y nos reímos ante la última actualización del 9GAG: ¿por qué creen que las configuraciones multi-monitor y el ALT + TAB se han vuelto tan populares? Multitasking es de hecho, una actividad que incrementa exponencialmente el tiempo necesario para terminar las tareas que podríamos realizar de forma secuencial, y aun así, insistimos con ello: ¿quién no ha visto ese video donde un tipo va caminando por la calle mientras textea con su móvil, sin darse cuenta que tiene enfrente a un oso? Una solución ante un problema tan común es simplemente, trabajar desconectado. Aplicar 25 minutos de furioso trabajo sin interrupciones para después relajarse por 5 minutos y caminar un poco, leer correos o checar el WhatsApp. Esto es de hecho, una recomendable técnica de administración del tiempo con serias bases en la neuropsicología.

• Cómo atacamos tareas “aburridas”. Hay actividades que NO son precisamente del agrado de nadie, como la documentación, reportes de horas o rastreo de incidencias. La mayoría de las personas se quedan estancadas realizando estas tareas, tomando más de lo que deberían. Una buena opción es darnos cuenta en qué momento del día somos más productivos y en qué momento “volamos en piloto automático”. Por ejemplo, si somos del tipo matutino, debemos dejar por la mañana todas las actividades que requieran concentración, dejando para la tarde – usualmente después de la hora de la comida – las tareas más bien repetitivas que requieren poco “cerebro”. Si aun así nos cuesta trabajo, podemos escuchar música que nos ponga en el modo correcto: la instrumental es la más recomendada por los expertos; el ritmo de nuestra selección define qué tan energéticos o relajados nos sentiremos (por ejemplo: dance vs. chill-out).

• Que hacemos – o dejamos de hacer – con las interrupciones. Si no es posible mudarse a una sala de juntas, podemos adquirir unos audífonos anti ruido. Existe una menor probabilidad de ser interrumpidos por ruidos medioambientales y automáticamente estamos dando una señal de “no molestar”. Si es factible negociar un horario flexible, es conveniente trabajar algunas horas extra el lunes y martes, que son los días en que usualmente tenemos más energía y mejor actitud, compensándolas saliendo un poco más temprano el resto de la semana. Por ejemplo, trabajar 12-14 horas el lunes puede significar sólo trabajar hasta el mediodía del viernes.

• Juntas. Si hay algo que atormenta a la mayoría son las juntas innecesarias. Es necesario evitarlas a toda costa, aunque tarde o temprano tendremos que asistir a una. De acuerdo a los especialistas, debemos buscar calendarizarlas a las primeras horas de la mañana, cuando la mayoría tiene más energía. Sin embargo, se supone que el martes a las 3:00 PM (justo después de la comida) es cuando casi todos tenemos un pico máximo de atención. Si el objetivo es llegar a un acuerdo rápido o se trata de reuniones de alto nivel, al tenerla poco antes de la hora de salida lograremos el efecto deseado, ya que a nadie le gusta quedarse después de las 6.

Es un hecho corroborado por varios estudios, que los mejores programadores son hasta 28 veces más eficientes que los peores programadores. Esto se debe entre otras cosas, a que toman ownership del proyecto, generan más código con menos incidencias, escriben estructuras mantenibles y hacen más con menos. Por ello, vale la pena leerse valiosos ejemplares como Beautiful Code o The Pragmatic Programmer y luego poner todo en práctica: en el mercado laboral actual, un “programador promedio” gana alrededor de US$23,800 anuales, mientras un superstar alcanza los US$30,200. Esto significa una diferencia de más del 26%.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: