"El lado humano del software"

Planificación de horarios y modelo productivo

He hablado en multitud de ocasiones de los problemas de la producción del software y de la desmotivación que muchas veces se produce en nuestro gremio (ver los artículos sobre el estado del sector en nuestra web).

Parece como si fuera incompatible una alta productividad y rentabilidad con nuestra propia satisfacción laboral. Pero dejando los lamentos, este sitio está escrito pensando en los empleados y en las empresas. La idea es lograr encajar el mejor modelo productivo para todos, aunque suponga tener que cambiar de paradigma a unos y otros. Las soluciones en el ámbito personal del empleado ya están escritas aquí

Lo que está claro es que para obtener calidad de vida hay que generar valor, das valor y obtienes valor. El valor se puede obtener de muchas maneras. Finalmente, el valor se convierte en dinero. No podemos pedir valor sin darlo.

Partimos de la base – y esto en el mejor de los casos- que las personas son personas, con sus momentos de genialidad y sus miserias. Y las empresas valga la redundancia empresas, su eje central es facturar, el resto de valores, siempre serán secundarios. Y aunque me repita, esto en el mejor de los casos, los empleados que sólo van a calentar la silla sin productividad y/o las empresas que sólo consideran lo económico están a la orden del día.

Sacar lo bueno de las personas es lo que importa. Y es difícil, más cuando el amor es un concepto mal entendido en el ámbito empresarial que parece incompatible con la realidad económica y/o productiva. La seriedad y responsabilidad no deben confundirse con un estado de humor agrio o la ausencia del afecto entre las personas. Las formas importan.

Angustiadas por la realidad económica, las empresas se centran en los objetivos y no tanto en los participantes en los proyectos (principalmente empleados, internos, externos, y colaboradores), cuando son estos los que generan los resultados. Contrariamente a la idea generalizada, intentar obtener la máxima eficiencia no produce un mayor beneficio. A corto plazo aparentemente los mejoran, pero a largo plazo merma la productividad por la insatisfacción y agotamiento generado. La rotación constante de personal es el peor de los métodos.

 

Fórmula Idónea.

En primer lugar, el teletrabajo es plenamente posible. Ahorra muchísimo tiempo por desplazamientos y supone una fuerte motivación laboral.

El ser humano es sociable y por cuestiones de motivación e integración necesita el contacto directo, por ello no se debe reducir el acto presencial a menos del 20% del tiempo total. La horquilla se debe situar entre el 20% al 40%. El 40% puede superarse excepcionalmente en las fases de definición de un proyecto, en que verse las caras importa.

Si el empleado se encuentra a mucha distancia de la oficina, se debe aumentar a varios días el acto presencial para aprovechar cada viaje. Por ejemplo, si la distancia o dificultad de asistencia es grande, se puede reducir a un solo viaje al mes prolongando la estancia a toda una semana (5 días laborales). Siempre buscado ese mínimo del 20% de asistencia en la medida de lo posible.

Si la distancia no es tanta, es mejor una asistencia a la oficina de una jornada a la semana. El día seleccionado debe de ser el lunes o martes. En cualquier caso, nunca un jueves y mucho menos un viernes.

El teletrabajo implica reforzar los puntos de control para evitar que algunos empleados pudieran aprovechar para disminuir el rendimiento. Estos puntos de control deben de ser astutamente planteados para evitar caer en una excesiva burocracia. Es por ello que se deben colocar mandos intermedios que realicen este control técnico y funcional. Existen actualmente magnificas herramientas informáticas para facilitarlo.

El teletrabajo significa libertad de horarios, en ningún caso libertinaje o falta de compromiso. Se deben establecer unas horas obligatorias que, en caso de no poderse trabajar, el empleado solicite permiso. Las horas obligatorias deberían estar comprendidas en un mínimo de 10:00 a 13:00 horas. Es cada empresa las que las tiene que definir, aunque las horas obligatorias no deben ser menores de 3 ni mayores de 6, dejando el resto de horas a elegir.

El empleado y el empresario deben de favorecer una organización de la jornada para evitar las pérdidas de tiempo por dispersión, que además de producir una baja eficacia, son una fuente de insatisfacción. El trabajo multitarea es realmente perjudicial y su nivel de improductividad y estrés es proporcional a la complejidad de las tareas a resolver. Fuera de los tópicos sobre la capacidad de las personas de hacer varias cosas a la vez y de la supuesta superioridad de las mujeres al respecto, lo cierto es que cuando estamos programando o analizando algo complejo, la dispersión es “matadora” siendo una fuente de improductividad, pérdida de rentabilidad y estrés.

Las tareas complejas precisan de concentración y de un tiempo de calentamiento mental, por lo que tener un buen bloque de soledad resulta imprescindible.

Organizar la jornada y saber priorizar es fundamental. No se trata de agobiarse queriéndolo hacer todo a la vez, en su lugar es mejor separar las tareas en 3 montones: lo prioritario, lo normal y lo que en algún momento tendremos que hacer.

Hay que considerar también los biorritmos de las personas para el ciclo productivo.

Por tanto, deberemos de resguardar y hacer valer con ahínco un tiempo al día para la concentración en la que evitemos interrupciones a toda costa. Sólo deberán pasar el filtro los temas urgentes o aquellos que se encuentren íntimamente relacionados con la actividad que estemos desarrollando. El tiempo de concentración debe estar comprendido según el puesto a desarrollar, desde un mínimo de 4 horas, a un máximo de 6, en las que el programador sólo debe estar concentrado en el código y su análisis.

El biorritmo importa, los ciclos mentales en el que la persona se encuentra más fresco deben de reservarse para las tareas complejas.

Un ejemplo aproximado de jornada podría ser la siguiente (ejemplo pensado para teletrabajo, en el que ganamos de una a dos horas diarias por el transporte). Para otras culturas el concepto es el mismo, sólo que adelantando el horario:

  • 7:00 a 7:15 Tomar la taza de café y lectura por encima de emails personales, alguna noticia de los periódicos y/o vistazo rápido de tareas.
  • 7:15 a 8:00 respuesta de emails y clasificación y planificación rápida de las tareas a analizar y/o codificar durante el día. Elaborar mentalmente y con garabatos los esquemas de lo que vamos a codificar.
  • 9:00 a 13:30 creación de código. Todas las energías y máxima concentración a crear código. Sin distracciones y sin espacios compartidos.
  • 13:30 a 14:00 Almorzar. Al ser teletrabajo el tiempo necesario para el mismo se reduce.
  • 14:00 a 14:30 Tiempo para ir al servicio, tomar una pequeña siesta o simplemente relajar la mente.
  • 14:30 a 15:30 Preparación de reuniones, resolución de incidencias técnicas y soporte. Cualquier tarea burocrática que dependa de la labor de cada empleado, etc. Este tiempo se puede prolongar si hay reuniones o no.
  • 15:30 a 16:00 Reuniones y/o en su lugar prolongación de las tareas anteriores.
  • 16:00 a 17:00 Al ahorrarse tiempo de trasporte para volver a casa disponemos de un tiempo para labores complementarias. Que será alternativo: un mínimo de 2 veces a la semana se dedicará a aprendizaje de nuevos conocimientos o leer sobre la actualidad del sector, aprendizaje de idiomas, etc., y otro mínimo de 2 veces a la semana se dedicará tiempo para hacer deporte. Siendo ambas tareas obligatorias para todo empleado. Este tiempo de evolución personal es independiente de si luego en otros momentos se quiere dedicar un tiempo adicional. Pero insisto, el tiempo para la formación/renovación de conocimientos y de hacer deporte deben suponer una obligación. El inmovilismo físico al que estamos sometidos y los cambios constantes del sector así lo requieren. El empleado deberá notificar a la empresa los nuevos conocimientos que va a adquirir en ese espacio de tiempo.

 

A las 17:00 el empleado queda libre, con tiempo suficiente para conciliar vida familiar, ocio y cualesquiera otras actividades teniendo además el mínimo de deporte cumplido y de renovación de conocimientos. Por si esto no fuera poco, dispone además de media hora para relajarse, hacer la siesta o lo que quiera. Los viernes se acorta la jornada en 1 hora (la última dedicada a labores complementarias). El día de asistencia física a la oficina también se acorta en otra hora.

 

De tal forma, que la semana queda aproximadamente de este modo:

  • Planificación colectiva: 1 hora.
  • Reuniones para asuntos concretos o trabajos grupales: 2 h
  • Reuniones para evolución personal y colectiva: 1 h
  • Planificación individual y análisis y diseño del código de forma concreta: 2 horas. Tarea muy ligada a la codificación.
  • Programación del código, sin interferencias y en plena concentración: 20 horas.
  • Programación compartida, ayudando y siendo ayudado: 3 horas
  • Resolución de incidencias técnicas/soporte/bugs:  5 horas.
  • Responder a emails/burocracia (partes de actividad, etc): 2 horas.
  • Formación individual: 4 horas. Divididas en 2 h y formación grupal: 2 h (1 hora en reunión, otra hora entre compañeros). La formación es cruzada.
  • Deporte: 2 horas. Debe acreditarse su realización. Resulta imprescindible para un trabajo en el que las personas se pasan el día sentados casi inmóviles.

 

Agrupando por conceptos:

  1. Trabajo en Grupo: 5 horas
  2. Análisis y programación: 25 horas
  3. Resolución de incidencias/soporte: 5 horas
  4. Crecimiento personal/colectivo: 7 horas

 

Tenemos por tanto una jornada semanal de:

  • 3 jornadas a 9 horas diarias, por ejemplo, los lunes, miércoles y jueves.
  • 1 jornada a 8 horas el viernes
  • 1 jornada de martes a 7 horas cuando se asiste físicamente a la oficina.

(9*3)+8+7=42 horas semanales.

Se logra:

  • Sensación de plenitud por disponer tiempo para vivir y/o realizar cualesquiera de otras actividades. El empleado dispone todos los días de 5 horas libres (si quitamos las 8 de sueño y otra por aseo, cuidados personales, elaboración de comida, etc.). Esas 5 horas libres diarias permiten vivir y que la persona tenga una vida paralela a su jornada de trabajo todos los días.
  • Menores dolores por tensión muscular y/o sueño por el descanso del medio día y un aumento de la productividad por la tarde.
  • Mejora de la condición física, lo que reporta en menos bajas laborales, más optimismo (el deporte lo produce) y mejor salud en general.
  • Sensación de evolución y no estancamiento al estar constantemente -aunque sea sólo un poquito- aprendiendo cosas nuevas. Aumento de la creatividad.
  • Aumento de la productividad gracias al respeto escrupuloso de los momentos de concentración y sus tiempos.
  • Al planificarse el trabajo, se logra la mezcla entre las metodologías agiles y el trabajo estructurado.

Permitir a los empleados en la oficina física una sala de descanso es altamente productivo. Como todo en la vida se requiere de unos límites. Pero un pequeño momento de relajación ya no sólo con el clásico café, sino estirando las piernas en un sofá y de quedarse trastocado es muy beneficioso. Por desgracia, esto en la gran mayoría de casos parece ciencia ficción. Nuestro trabajo es en su mayor parte intelectual puro, tener la mente lúcida es un requisito imprescindible. No se trata de calentar la silla.

Soy consciente que lo siguiente que voy a decir no va a gustar: se podría argumentar que es mejor acortar más la jornada de los viernes y alargar el tiempo de trabajo de lunes a jueves con el pretexto de optimizar los fines de semana. Por el contrario, esto es muy perjudicial para la productividad y salud de los empleados. Cuando se hacen largas jornadas entre semana los empleados llegan al agotamiento, el agotamiento sólo es pérdida de productividad para el empresario, por si esto no fuera poco, los empleados están deseando la llegada de los viernes, haciendo que se conviertan en semi-festivos, con la consiguiente pérdida de rentabilidad económica.

Para la salud y mente humana es mejor los días constantes.

El horario propuesto podría cambiarse, por ejemplo, hacer deporte a primera hora de la mañana, etc., lo importante son las ideas expuestas.

Hay que respetar el horario y evitar en la medida de lo posible las horas extra. Casi todos conocemos gestas de horas extras con jornadas extendidas hasta las 3 de la madrugada. No conducen a nada. Las podremos recordar como algo épico, pero lo cierto es que sólo reflejan que algo se hizo mal. Además, cualquier cosa a las 3 de la madrugada se puede hacer mucho mejor por la mañana bien temprano. Generalmente se pueden evitar con una correcta planificación. Es mejor la constancia y la concentración que las palizas de trabajo que tanto desgastan física y mentalmente. Cualquier trabajo extra al final repercute en los días posteriores con una merma de productividad, siendo finalmente anti rentables (excepto en asuntos muy puntuales). Las empresas deben de evitar las horas extras que tanto perjudican a todo el mundo. Las horas extras suelen producir una de las principales causas por las que los empleados maldicen a las empresas: esas energías malgastadas producen una baja productividad y encima un mal clima de trabajo.

Generalmente las empresas hacen “la vista gorda” o tienen mayor permisividad los viernes. Los lunes a primera hora suelen tener también un poco de permisividad, aunque no tanta como los viernes. Los días de máxima exigencia suelen ser los miércoles y jueves. Este es un modelo erróneo. Todo es por culpa de que la gente “se quema” durante la semana en vez de estar viviendo y disfrutando de su vida día a día. Es como si se esperase al “San Viernes” que nos lleva a la felicidad del fin de semana. Los lunes por la mañana “se consiente la resaca” por la vuelta al trabajo. Un modelo erróneo y estúpido. El modelo actual empresarial y de vida es considerar que de lunes a jueves se subsiste en un túnel, algo así como una especie de agujero negro.

Empresas y compañeros programadores, la vida se vive no sólo los fines de semana, la vida se vive todos los días. No debe existir la resaca de la infelicidad de los lunes ni el ansia del fin de semana porque se debe vivir todos los días. Es por ello el modelo propuesto. Es un modelo que lo permite. El cambio de paradigma hará a empleados más productivos y eficientes.

Las personas somos personas, estar rindiendo siempre al 100% es una utopía. No se debe exigir a los empleados que tengan siempre un rendimiento ejemplar. Por desgracia esto suele ser lo habitual y sólo genera frustración a todas las partes.

Por ello, en las planificaciones internas de tiempos de ejecución, debemos de considerar este lado humano, habrá días de peor rendimiento, falta de sueño, estar con el cuerpo un poco mal por alguna enfermedad, discusiones familiares etc. Considerar por tanto una pérdida de rendimiento de un 25% en un día a la semana. Estas horas perdidas no deberán ser comunicadas a los programadores añadiéndose como tiempos de ejecución a la finalización del proyecto. Este tiempo extra no debe ser confundido con el tiempo de colchón para imprevistos. La excelencia se encuentra en la constancia, es una especie de resiliencia sin sufrimientos (estos sólo desgastan estérilmente). Ser conscientes de las limitaciones humanas sin tampoco caer en el beneplácito.

 

El día de la asistencia física a la oficina.

El día de asistencia debe procurarse que sea un día de satisfacción y/o motivación y no sólo de rendir cuentas. Si ambas fueran necesarias deben combinarse inteligentemente. En cualquier caso, no debe ser un día a temer por parte de los empleados.

Para el día de asistencia nos basaremos en portátiles que favorezcan la movilidad y podremos prescindir de grandes instalaciones. La empresa puede incluso carecer de instalaciones propias para este menester y alquilar un espacio en uno de los múltiples centros de negocios existentes para un día a la semana.

 

En este día la empresa debe:

Tener reuniones de seguimiento de definición de objetivo de los proyectos. Las reuniones colectivas deben ser en este día.

Tener una reunión secundaria en la que reforzar la integración de las personas: en grupo e individuales de seguimiento, saber de primera mano cómo se sienten las personas.

Los objetivos no deben de ser únicamente el cumplimiento de unos objetivos empresariales, la empresa debe de fomentar el cumplimiento de que junto a los objetivos empresariales se logren los objetivos personales de los empleados tanto colectiva como individualmente. Por supuesto deben de cuidarse los aspectos de la intimidad de las personas. Profesionalmente debe existir un doble objetivo: entregas y metas personales de crecimiento. El crecimiento no tiene por qué solo monetario ni mucho menos. Tampoco deben ser metas inalcanzables o demasiado ambiciosas.

En la reunión de tipo personal y de relaciones hay que responder en colectivo e individualmente a preguntas del tipo:

¿Qué puntos no hemos realizado bien? ¿Por qué? ¿Y cuáles bien? ¿Nos hemos esforzado lo que podíamos? ¿Entendíamos bien de la técnica? ¿qué no comprendemos? ¿Qué riesgos tenemos?

Y luego ya entrar en otros aspectos: ¿Qué nuevas tecnologías hemos aprendido esta semana?, ¿qué de bueno tienen? etc.

Es importante el tono constructivo pues la intención es mejorar y no destruir. El reconocimiento en público de los logros de las personas es un valor. La compenetración y el sentimiento de equipo importan.

En este día debemos de considerar que el empleado consume tiempo de transporte, recordemos que lo importante es la constancia en el trabajo por encima de los picos que sólo desgastan. El día de asistencia física reduciremos en 1 hora la jornada.

Al ser un día de grupo aprovecharemos para que una tercera reunión, y es la de la formación y/o aprendizaje, tanto individuales como colectivas. Los grupos serán según proyectos o ámbitos.

De tal modo que en el día de la asistencia tendremos al menos una hora para repasar proyectos, otra para metas individuales y finalmente otra de aprendizaje/formación en la que se comparten conocimientos.

En el día de la asistencia, aunque sorprenda o cause risa a los empleados, la empresa debe de animar e insistir -en la medida de las posibilidades físicas de cada empleado- en que se haga una pausa durante 15 minutos para que en colectivo todos los empleados realicen estiramientos y algún ejercicio mínimo (dadas las limitaciones de instalaciones, vestuario, etc.). Es implementar la cultura al personal que, tras largos periodos de inmovilidad, las personas debemos de estirarnos y de que esto lejos de ser causa de ridículo, es orgullo por saber hacer las cosas. Esta idea debe ser trasmitida para que al menos un par de veces al día durante 5 minutos, los empleados hagan estiramientos tras 2 ó 3 horas de horas de inmovilidad pétrea delante de la pantalla. Es una cultura hacia el movimiento necesaria e imprescindible para el respeto hacia nuestro propio cuerpo dada la naturaleza humana.

El resto de las 4 horas restantes, trataremos aquel código difícil, preguntar dudas, ver opiniones de otros programadores, resolver incidencias técnicas que requieran de una acción grupal, etc. Y por supuesto programar código.

 

Abandonar la obesión a todo por Sprints

Actualmente la moda es planificar el trabajo mediante Sprints. Se funciona mejor cuando existen objetivos cerrados por fechas, nos hace ser más prácticos (trabajar por objetivos no debe equivaler a jornadas interminables).

El código se diseña a medida que se fabrica, sin esperar a ideas geniales. Para eso hace falta ir concretando, programando e interactuando, sin permanecer demasiado tiempo sólo en la teórica. La concreción y el contraste con la realidad producen valor.

Con las metodologías agiles obtenemos una retroalimentación rápida con los clientes y subidas constantes a producción. Pero si algo es cierto es que las reglas en extremo no suelen ser buenas.

En SCRUM la planificación puede incluirse en un sprint, pero la obsesión en la metodología por mirar constantemente a corto y medio plazo afecta a la calidad.

Con un diseño sólido evitaremos continuos cambios y produciremos satisfacción a los programadores por hacer un trabajo bien realizado en el que las piezas encajan.

En el desarrollo del software como en tantas otras cosas en la vida se debe trabajar/vivir sin miedo, sin pretender tener un control absoluto (imposible en la práctica) que desgasta.

“La verdad” se encuentra en un punto de equilibrio entre ser dinámicos y estáticos (“estáticos” juego de palabras que define la naturaleza de los lenguajes de programación dinámicos/estáticos). Con ser estático me refiero al sentido humano de ser reflexivo y cuidadoso en el proceder.

Por las modas, parece que ser estáticos es un pecado. Sin duda, volverán los tiempos de equilibrio.

En el desarrollo del software, existe la odiosa manía de pesar en el al largo plazo justo al arrancar un proyecto y luego pensar sólo a corto: es una tendencia equivocada, ni dedicarle tanto al principio, ni dedicarle tampoco tiempo después.

La pérdida de calidad y el estrés no sólo es por la falta de planificación a largo plazo, también es por la consideración que “código que funciona es código terminado”. Un error que lleva aún más al código espagueti. Que un programa funcione, no implica que sea correcto.

La solución es mezclar 3 filosofías, a partir del eje central la producción de la programación de software mediante sprint dinámicos, añadir a casi todas las semanas tiempo para refactorizar y mejorar el código ya implementado + planificar el diseño a largo plazo.

Efectivamente, entre refactorizaciones, planificaciones a largo, reuniones de trabajo, arreglo de incidencias y soporte al usuario se nos puede ir la mitad del tiempo de desarrollo, pero esto es inevitable y forma parte de la propia naturaleza del desarrollo del software. Intentar evitarlo es un error que lleva a consecuencias indeseables.

Las refactorizaciones del software es una práctica que se suele dejar sólo para cuando los programadores se encuentran ociosos. Es un gran error. Refactorizar frecuentemente produce los mismos beneficios que la integración continua. Además, hace a los equipos de trabajo más motivados y rentables. Se incentiva el sentimiento elitista de qué se pudo hacer mejor al programar. Hace sentir gusto por la profesión. Todo el mundo debe estar implicado en la calidad, no sólo algún departamento/persona. El programador debe ser usuario de su aplicación y debe seguir el mismo ciclo que cualquier usuario.

Debemos de recodar que es muy importante que los empleados sepan de la importancia de su trabajo, no es lo mismo pensar que sólo colocas ladrillos, que saber que estás construyendo un gran puente vital para la ciudad. Las formas importan, y el objetivo del trabajo también.

¿Te gustaría hacer teletrabajo? ¿Te gustaría que las empresas patrocinaran que los programadores hagamos deporte? ¿Y que nos apoyen en la formación de una forma real y no sólo con buenas palabras? ¿Qué piensas sobre el modelo de trabajar agónicamente de lunes a jueves para luego querer salir disparado los viernes?

Deja un comentario

Compartir
Twittear
Compartir
+1
Pin