junio 11, 2020 - Futurizable | Sngular
Enlaces rápidos
  • Blockchain
  • Big Data
  • Educación
  • Robótica
  • Espacio

Daily Archives junio 11, 2020

Optimizando equipos de alto rendimiento gracias a OKR

Publicado el 11 junio, 2020

Como ya sabéis en Futurizable llevamos más de un año dando a conocer la metodología OKR por la gran utilidad que puede aportar a las empresas para progresar, mejorando en su estrategia de negocio o diseñando una estrategia enfocada en los resultados. A este respecto además de los contenidos que venimos publicando en Futurizable, lo cual ha servido para elaborar el Manual de OKR, también estamos realizando los eventos OKR Day y los cursos de OKR Champion.

Continuando con esta labor de divulgación de los OKR, los siguientes pasos que vamos a dar van en la línea de encontrar la forma de aplicar la metodología en diferentes ámbitos, como por ejemplo es el desarrollo de software, de lo cual ya hemos hablado con anterioridad aquí y volvemos a hacerlo ahora de una forma mucho más específica al enmarcarlo en el trabajo que realizan los equipos de alto rendimiento en el sector IT.

Y para hablarnos sobre cómo usar OKR en equipos de alto rendimiento hoy contamos con la colaboración de Francisco Moreno QA Area Leader en Sngular and @NorthemQuality Co-organizer.

OKR en el sector IT

Durante estos últimos años, la metodología OKR se ha erigido como una de las más efectivas a la hora de diseñar, gestionar y conseguir objetivos propuestos, ya sea a nivel personal o empresarial.

Su sencillez y flexibilidad hacen que se pueda adaptar a prácticamente cualquier situación u organización. Es por ello que grandes corporaciones como Google la llevan utilizando desde el año 2000 para establecer y realizar el seguimiento de sus objetivos, lo que les has permitido crecer enormemente durante las últimas décadas.

El pilar fundamental de OKR se basa en establecer objetivos que sean claramente medibles para que así, de manera objetiva, podamos comprobar su grado de cumplimiento periódicamente. Esta idea encaja muy bien dentro del mundo IT, principalmente por dos motivos:

  • Métricas: A día de hoy tenemos la capacidad de extraer mediciones sobre, prácticamente, cualquier variable que necesitemos de manera rápida y concisa. Además, contamos con una gran variedad de herramientas que permiten realizar todo tipo de cálculos sobre este conjunto de datos para extrapolar conclusiones.
  • Evaluación periódica: Necesaria para llevar a cabo un proceso de mejora contínua efectiva. Ir comprobando con datos objetivos, y no por sensaciones, que avanzamos en la buena dirección resulta fundamental para no desviarse de la estrategia global establecida.

Contexto actual del sector IT

Si tuviésemos que resumir en única frase la evolución que ha sufrido el mundo que nos rodea durante los últimos 20 años, probablemente una de las candidatas sería: “Software is eating the world”.

La tecnología se ha instaurado hasta tal punto en nuestro día a día que prácticamente ya no somos conscientes de ella y, obviamente, detrás de todo esto se encuentran infinidad de empresas tecnológicas dando servicios y construyendo soluciones.

A día de hoy, la competencia entre estas compañías resulta muy fuerte y pequeños detalles pueden marcar la diferencia dentro de un mercado cada vez más global. Por ello, conceptos como time to market, performance, SLAs, alta disponibilidad, despliegue continuo, deuda técnica, monitorización de sistemas, bugs en producción, customer experience, etc. cobran especial relevancia. Es muy posible que, si descuidamos alguno de estos aspectos, nuestro producto quede sepultado por el resto de empresas competidoras. Es por ello que debemos establecer mecanismos tanto para controlarlos como para mejorarlos en caso de que no se encuentren dentro de los parámetros deseados.

Mejorar Delivery

Por todo lo anterior, mejorar el rendimiento de los equipos IT se convierte en un aspecto crítico dentro de las empresas de software. No obstante, debemos entender que, en un entorno como el descrito anteriormente, la mejora del delivery no puede estar enfocada únicamente al aumento de la velocidad en sacar nuevas versiones a producción.

Esto no será de ayuda para nuestro negocio si, además, no somos capaces de hacerlo de manera escalable, manteniendo unos estándares de calidad adecuados, recogiendo feedback de los usuarios y adaptándonos a sus necesidades, manteniendo la imagen de la marca, cuidando la cultura, haciendo que el equipo comparta la visión global de la empresa y consiguiendo su involucración y que se sientan partícipes de la misma.

Es por ello que debemos dar pasos para establecer una mejora del delivery desde un punto de vista global. Es decir, no se trata por tanto de centrarse en una medida de la productividad “clásica” de tareas completada por unidad de tiempo, sino en métricas capaces de reflejar todos los factores antes enumerados.

Mejorar outcome vs output

En definitiva, debemos dirigir nuestros esfuerzos a mejorar el “outcome” global y no ceñirnos únicamente al “output” particular de cada tarea.

Identificar objetivos globales

Para poder aplicar de manera efectiva la metodología OKR a nuestro caso particular, debemos comenzar identificando claramente nuestros objetivos globales, virtudes y carencias.
Si no tenemos claros estos aspectos, puede resultar útil plantearse una serie de preguntas:

  • ¿Qué nos hace buenos y/o mejores que la competencia?
  • ¿Cuál es nuestra propuesta de valor principal en el mercado?
  • ¿Qué esperan nuestros clientes de nosotros?
  • ¿Qué nos diferencia de nuestros competidores?
  • ¿Qué nos hace falta para ser mejores?
  • ¿Dónde nos gustaría estar? ¿Nos queremos parecer a alguien?
  • ¿Dónde NO queremos estar?
  • ¿Qué tipo de servicio no queremos ofrecer?
  • ¿Con qué cosas no nos sentiríamos cómodos?

Es importante también tener claro puntos hacia los que no queremos llegar. Esto nos ayudará tanto a tener claros los objetivos globales como a poder transmitir la visión general de la empresa de manera clara.

En la actualidad existen varios artículos y estudios, como el informe DORA, que vinculan el éxito de algunas empresas tecnológicas con la manera en la que trabajan sus equipos de desarrollo.

A día de hoy, resulta claro que existe un conjunto de prácticas técnicas y procedimientos comunes a todos los equipos de alto rendimiento. Éstas pasan desde establecer una excelencia técnica, basándose en ideas de eXtreme Programing y filosofía DevOps como pilar fundamental, a cultivar una cultura colaborativa y de reconocimiento y definir unos procesos que permitan reaccionar de manera ágil a las nuevas necesidades.

Concretamente, si lo enfocamos al caso concreto de delivery de los equipos IT, en 2018 se publicó “Accelerate”, un libro que resume las conclusiones a las que se llegó después de realizar un estudio durante más de 4 años para tratar de averiguar los factores que unen a las organizaciones IT con un “software delivery performance” más alto.

Lo novedoso de este estudio es que no está basado en la opiniones de los autores “per sé”, sino que está fundado en el análisis estadístico de los datos recogidos en empresas IT de todo el mundo.

Una de las principales innovaciones que aporta este estudio es que no se basa en la medida clásica de “productividad”, puesto que no se trata tanto de medir la velocidad del delivery sino de conseguir que ésta sea de calidad, escalable y con aporte de valor significativo.

Por ello, los autores identifican 4 indicadores básicos para medir el “performance” del software delivery, que son:

  • Lead Time – Tiempo transcurrido desde un commit hasta su puesta en producción
  • Frecuencia de despliegues a producción
  • Mean Time to Restore (MTTR) – Tiempo desde que reportar un bug en producción hasta tu corrección
  • Change Fail Percentage – Cómo es de común que fallen los despliegues en Producción

Como puede verse, estos indicadores no están encaminados únicamente a medir la velocidad de sacar nueva funcionalidad a producción, también se tienen en cuenta indicadores que, de manera indirecta, establecen que las entregas no deban contener fallos y que nuestros procesos deban favorecer una manera ágil de trabajar.

Identificar Key Results

Una vez establecidos los objetivos generales, vendría la parte si cabe más complicada. Se trata de identificar las “palancas” sobre las que debemos actuar para conseguir cumplir dichos objetivos marcados.

Esta parte suele ser la más costosa ya que en muchas ocasiones no tenemos claras las tareas que debemos llevar a cabo para alcanzar los objetivos marcados. Por ejemplo, puedo tener un objetivo muy claro que sea : “aumentar el número de seguidores de mi cuenta de Twitter”, pero no conocer los mecanismos y tareas concretas para conseguirlo. Al igual que puedo tener unos objetivos como, “aumentar las ventas de mi ecommerce” o “reducir el número de bugs en producción” y de la misma manera, no tener claras las palancas sobre las que actuar.

Por ello, en esta parte del proceso, en algunos casos, puede resultar aconsejable contar con la ayuda de expertos en el negocio, que puedan aportar su punto de vista sobre aspectos clave encaminados a la consecución de los objetivos marcados.

Lo más importante es que establezcamos unos resultados claramente medibles para conocer en todo momento su grado de cumplimiento. En este sentido, la ventaja que aportan los entornos IT es que disponemos de las herramientas necesarias para medir prácticamente cualquier parámetro que necesitemos.

Por continuar con el ejemplo de “Accelerate”, durante su estudio encontraron una correlación directa entre los equipos con un delivery más alto y las prácticas y procesos que utilizaban

Estos factores comunes son los siguientes bloques generales y puntos concretos:

  • Continuous Delivery
    • Utilizar sistemas de control de versiones
    • Automatización de despliegues
    • Proceso de Integración continua
    • Trunk-based development
    • Automatización de pruebas
    • Test data management
    • Shift-left on security
    • Implementación continuous delivery efectivo
  • Arquitectura de sistemas
    • Sistemas poco acoplados entre sí
    • Empoderar a los equipos para tomar decisiones técnicas y funcionales
  • Producto y procesos
    • Analizar el customer feedback
    • Visibilidad del producto y desarrollo
    • Trabajar en small batches
    • Favorecer team experimentation – No penalizar la exploración de nuevas ideas
  • Lean management and monitoring
    • Proceso de aprobación de cambios ligero
    • Monitorizar aplicaciones e infraestructura para tomar decisiones de negocio
    • Comprobar system-health
    • Controlar WIP y sus límites
    • Monitorizar calidad del sistema
  • Cultura
    • Favorecer cultura colaborativa (Westrum) (cooperación , confianza, información, etc.)
    • Favorecer aprendizaje
    • Favorecer colaboración entre equipos
    • Cuidar job satisfaction haciendo que el trabajo sea “meaningful”
    • Transformational leadership – Liderazgo inspirador

Como puede observarse, la mayoría de estos indicadores pueden medirse prácticamente de manera directa y objetiva. Para otros, tendremos que recurrir a reuniones 1-to-1, encuestas, formularios, etc. Aún así, de todos ellos podremos realizar un seguimiento periódico para evaluar resultados y tomar acciones.

¿Cómo podemos medir estos parámetros?

Tal y como se ha mencionado, existen múltiples herramientas que nos permitirán tomar mediciones sobre los puntos anteriormente descritos.

A continuación, se enumeran algunos ejemplos:

  • Plataformas para sistemas de control de versiones: GitHub, GitLab, AzureDevOps, BitBucket
  • Automatización de despliegues y procesos de integración continua: Kubernetes, Octopus, Github Actions, Jenkins Pipelines, TravisCI, Azure Pipelines
  • Automatización de pruebas: Frameworks de unit testing, Postman, SoapUI, JMeter, Selenium, Appium, Contract Testing, Visual Testing
  • Acoplamiento y deuda técnica: Analizadores estáticos de código, SonarQube
  • Control de trabajo en curso: Jira, AzureDevops, Kanban Boards, TargetProcess
  • Monitorizar sistemas en producción: Profilers, agentes conectados, logstash
  • Analizar customer feedback: Entrevistas, mapas de calor, testing A/B, beta testing
  • Cultura: Entrevistas, conversaciones one to one, Nailted, feedback 360

La lista podría ser más amplia, dependerá de la empresa y del contexto concreto del sistema, seleccionar aquellas que mejor se ajusten en cada caso. Simplemente, son algunos ejemplos de herramientas que ofrecen información que podemos utilizar comprobar el grado de cumplimiento de nuestros objetivos.

Por lo tanto el reto en este punto es afinar esas herramientas para que nos permitan obtener los datos que necesitamos de cara a verificar el nivel de cumplimiento de nuestros objetivos. Aquí reside entonces una de las dificultades iniciales de OKR y donde puede ser necesario contar con especialistas en la metodología, de todas las opciones existentes a la hora de medir los resultados en una actividad cuáles elegimos como claves para verificar que la estrategia desarrollada está siendo la adecuada.

Conclusiones

Llegados a este punto vemos como la metodología OKR se adapta perfectamente a entornos IT donde, por ejemplo, deseemos mejorar el delivery del equipo de desarrollo.

Pero, ¿por qué resulta interesante aplicar OKR en un caso como este?

Como hemos podido ver, hemos llegado a identificar muchos puntos de acción en diferentes ámbitos. Seguir la metodología OKR nos facilitará mantener el foco en las prioridades y así, orientar nuestro trabajo diario.

Por otro lado, nos ayudará responsabilizarnos de las tareas (accountability) y alinear nuestros esfuerzos con los objetivos globales de la empresa. Esto hará que nos sintamos más involucrados y que tomemos conciencia del aporte de valor de nuestro desempeño.

También es muy importante que, dado que los objetivos serán evaluados periódicamente (idealmente en periodos de no más de 3 meses), se favorecerán enormemente los feedback loops y las conversaciones entre integrantes de la compañía, consiguiendo así que la implicación de las personas sea mucho mayor, además, claro está, de saber si los objetivos marcados individualmente están ayudando a conseguir que su cumplan los globales.

Además dado, que los OKRs son públicos, conseguiremos coordinar las tareas de todas las personas involucradas en el delivery consiguiendo así aumentar la efectividad de las mismas.

Por todo esto resulta muy recomendable contar con una metodología como OKR por la gran aportación que puede hacer de cara a construir un equipo de desarrollo de alto rendimiento.

Etiquetas: , ,