innersource archivos - Futurizable | Sngular
Enlaces rápidos
  • Blockchain
  • Big Data
  • Educación
  • Robótica
  • Espacio

Currently Viewing Posts Tagged innersource

¿Se puede usar OKR para mejorar el desarrollo de Software?

Publicado el 23 enero, 2020

Contexto actual del desarrollo de software: la experiencia de Bitergia

Por José Manrique, CEO de Bitergia

En las empresas cada día se consume más software que viene de fuera, sobre todo por un tema de agilidad, de rapidez y de eficiencia, hasta el punto de que se estima que en el 75% de las aplicaciones tecnológicas, más de la mitad del software no habrá sido desarrollado por la propia empresa, sino que proviene de otras organizaciones, principalmente a través de iniciativas Open Source. Además, vemos cómo cada vez más las empresas están contribuyendo a proyectos de software libre, porque resulta estratégico para ellas y también algunas otras empresas desarrollan su propio software libre.

Lo que estamos viendo últimamente es que, cuando las empresas alcanzan cierto tamaño, utilizan un modelo llamado “desarrollo basado en silos”. Los silos son estructuras muy cerradas debido a cuestiones geográficas, a razones que puede tener el equipo o a la metodología que se utiliza. Esto lleva a una situación en la que muchos equipos pueden estar trabajando con metodologías ágiles pero no pueden trabajar de forma colaborativa, ya que cada una tiene un método de trabajo diferente o una tecnología de desarrollo diferente. Entonces consideramos que si queremos trabajar de forma más transparente y uniforme en las organizaciones es necesario romper esos silos.

Esto actualmente se está gestionando en algunas organizaciones a través de las Oficinas Open Source, gracias a la cual la empresa se asegura de que el software que va a utilizar cumple con todos los requisitos necesarios a nivel de calidad o seguridad, por ejemplo. Además, algunas empresas están empezando a trabajar con el concepto Innersource que se basa en la idea de aplicar internamente las metodologías, procedimientos y métodos de trabajo que se utilizan en el mundo del software abierto. Así se trabaja de manera colaborativa y comprometida en una comunidad dentro de la misma empresa, de modo que los desarrolladores pueden trabajar en lo que ellos deciden dentro de las necesidades de desarrollo que tiene la compañía. Es decir, que la empresa tiene varios proyectos abiertos y los desarrolladores van colaborando en ellos según sus intereses.

Los principios en los que se basa Innersource son la cultura de colaboración y la transparencia, donde la comunicación es clave, y toda la información de los proyectos debe ser archivable, reproducible y pública. De esta forma a través de la transparencia se logra que la gente quiera colaborar en los proyectos y se formen comunidades que funcionan a través de un sistema de meritocracia, lo cual hace que las cosas sucedan.

Aplicar al desarrollo de software una metodología como Innersource tiene otros beneficios para la compañía, como puede ser la mejora de la calidad del código, la reducción del tiempo necesario para salir al mercado, el fomento de la innovación, reducción de los costes de desarrollo, además de aumentar el grado de compromiso de las personas con los proyectos en los que participan.

También para las personas ofrece beneficios interesantes como la mejora de las habilidades profesionales, el desarrollo de la maestría, tanto a nivel técnico como a nivel personal, en lo que a habilidades blandas se refiere; el fomento de la innovación a nivel personal; la mejora en la capacidad para resolver problemas y la posibilidad de poder llevar a cabo proyectos que parten de la motivación personal y el propósito.

En todo este contexto es donde trabaja la empresa Bitergia que está dedicada a ayudar a las empresas a entender y mejorar el trabajo en los proyectos de software. Para ello les ofrece cuadros de mando que aportan métricas y estadísticas con información sobre cómo se está desarrollando el software. Aunque la información que se ofrece no está relacionada con cómo es el software que se está desarrollando, sino con cómo se está desarrollando, cómo se está gestionando el proceso de desarrollo, cómo se está revisando el código y cómo se comunican las personas que participan en el ciclo del desarrollo de software.

La relación entre Innersource y los OKR

Y en este contexto es donde se relaciona el trabajo que realiza la empresa Bitergia con los OKR, ya que sus fundadores estuvieron 15 años estudiando e investigando los procesos de desarrollo de software y se dieron cuenta de que lo importante no era tener información sobre cómo era este proceso, sino cómo sacarle provecho a esa información, para lo cual han estado utilizando un sistema llamado GQR, por las siglas de Goals-Questions-Metrics, que tiene muchas similitudes con OKR.

La idea es que se comienza por definir unos objetivos, tanto de empresa como a nivel personal de los miembros del equipo de desarrollo. Y para saber si se están logrando esos objetivos se realiza un análisis de dónde pueden obtenerse los datos y además  se hacen preguntas que se pueden responder a través de números. También resulta complementario para este proceso trabajar con el denominado Ciclo de Deming, o ciclo PDCA (del inglés Plan-Do-Check-Act) o PHVA (Planificar-Hacer-Verificar-Actuar)​ o espiral de mejora continua, que consiste en aplicar una estrategia basada en la mejora continua de la calidad, siguiendo esos cuatro pasos mencionados.

Por lo tanto para nosotros el desarrollo de software es un proceso comunitario, y por tanto los OKR que se pueden aplicar tienen que tener en cuenta no sólo el código fuente producido y su funcionamiento en producción, sino los procesos y personas involucradas en construirlo. El análisis de los procesos tiene que llevarnos a entender mejor cómo se desarrolla software en nuestra empresa, o en nuestros proyectos, cómo colaboran nuestros equipos, o incluso identificar ineficiencias en los mismos. Existen herramientas y plataformas que permiten realizar estos análisis. Pero sin una estrategia asociada a los objetivos que queremos conseguir, puede que acabemos midiendo o valorando aspectos sin relevancia para dichos objetivos. Y aquí es donde una metodología como OKR proporciona el marco para que estos análisis y métricas estén asociadas a los objetivos que tenemos.

Desde nuestro punto de vista, los OKR para el desarrollo de software son un caso particular de la aplicación de la metodología GQM (Goals – Questions – Metrics). Cuando hablamos de cómo analizar el desarrollo de software, siempre recomendamos empezar por entender cuales son los objetivos que queremos conseguir, y trasladarlos a preguntas que se puedan responder con métricas. En función de dichos objetivos, analizamos qué fuentes de datos o recursos tenemos para extraer la información y parametrizamos las herramientas existentes para extraer los datos y producir las dichas métricas. A partir de este momento, las herramientas automatizan el proceso de reporte, y permiten evaluar periódicamente si vamos hacia los objetivos planteados, o hay que volver a realizar el ciclo.

La experiencia de los desarrolladores utilizando OKR

Compartimos a continuación una serie de testimonios de desarrolladores que están aplicando OKR en su trabajo, para de esta forma tener una visión más amplia de la oportunidad que supone utilizar OKR para mejorar el desarrollo de software.

David Bonilla, CEO at Manfred

Los OKRs son una herramienta poderosa para mejorar cualquier aspecto de una organización, incluido el desarrollo de software. Por ejemplo, se podría establecer como objetivo la mejora de la robustez del código y establecer como resultados clave métricas como el % de cobertura de tests o el número de builds rotos.

Uno de los aspectos más positivos a la hora de aplicar OKRs al desarrollo software es que -al contrario que en otras actividades- suele ser sencillo recoger las métricas más importantes. Sin embargo, el mayor reto no es técnico sino operacional, porque muchas empresas suelen separar en silos la gestión del negocio y la gestión de su base de su tecnología, cuando deberían funcionar de forma integrada. Los desarrolladores tienden a minusvalorar los OKRs porque no se suele explicarles el impacto del objetivo buscado en la estrategia global de la empresa. Negocio suele ignorar los OKRs de tecnología exactamente por lo mismo.

Personalmente he usado los OKRs para promover ciertas buenas prácticas de programación y dotar a los equipos de herramientas que les permitan medir su aprendizaje y crecimiento en el tiempo.

Alvaro Salazar, VP of Engineering at Lookiero

En nuestro caso el motivo por el cual usamos OKRs es mejorar el alineamiento de los departamentos y equipos con la estrategia de empresa. Mejorando con valor añadido la visibilidad y transparencia. Además esto tiene como efecto colateral una mejora en el foco de los equipos, impactando en la efectividad del SDLC (Systems Development Life Cycle).

La necesidad nació del crecimiento que estábamos teniendo junto con el modelo basado en generación de hipótesis y experimentación que usamos a la hora de desarrollar el producto que estamos construyendo. Con este contexto necesitábamos tener a todos lo niveles muy claro dónde poner el foco y mejorar el alineamiento de cara a poder empujar todos en la misma dirección.

Los OKRs están ayudando a mejorar ese alineamiento entre el plan estratégico y la implementación por medio de iniciativas que tiene su reflejo en los OKRs. En este contexto está  siendo de mucha ayuda que toda la empresa tenga claro hacia dónde tenemos que empujar. Los OKRs nos ayudan a hacer el tracking de donde estamos y en la toma de decisiones, si necesitamos cambio de rumbo.

Diego Gargallo Mobile Developer at Sngular

OKR se puede utilizar para mejorar cualquier faceta que se pueda medir. En el desarrollo de software tenemos varios puntos del proceso donde poder medir mejoras, donde automatizar esas mediciones y sacarles el máximo partido.

Además, utilizar este tipo de métricas no nos viene de nuevas. Es práctica habitual, por ejemplo, para evaluar la calidad del código (de forma integrada con los sistemas de automatización de despliegue, como Jenkins). También es muy común utilizar procesos de mejora continua, sobre todo en el marco de las metodologías ágiles. Es cuestión de sacarles el máximo partido usándolas también con OKR.

Por lo tanto podríamos, sin mucho esfuerzo adicional, enfocar el uso de OKR para mejorar el desarrollo de software de muchas formas distintas:

  • Mejorar el desempeño de los desarrolladores.
  • Mejorar la calidad del código que se entrega.
  • Mejorar el trabajo en equipo.
  • Mejorar la resolución de problemas.

Además, el uso de OKR puede venir muy bien para focalizar los esfuerzos en lo que de verdad es importante para cada proyecto en concreto. Aunque puedan perseguirse todas estas mejoras, la propia definición de los OKR nos indicará qué métricas recoger y hacia dónde hay que remar.

Ramón Medrano, Site Reliability Engineer at Google

Empecé a usar OKR cuando comencé a trabajar en Google, donde se usaban por defecto desde hace años. El valor lo encontré en dos puntos:

  1. Como junior IC en 2013/14: ves el valor de tener una dirección sólida (O) pero una clara libertad dentro tu scope para dirigir tu trabajo (KR).
  2. Como TL y manager puedo establecer una dirección muy clara sin tener que hacer micromanagement (O) y definir fácilmente a mis stakeholders en que estamos trabajando. Además puedo hacer planificación por buckets de staffing en lugar de orden total o ítems muy detallados.

Desde que soy manager y TL (2016-) me centro en las Os y dejo que mi equipo tenga la libertad de marcar las KRs, además es muy fluido para adaptarse a los cambios, para priorizar y lo mejor que tiene es que resulta compatible con agile para la ejecución.

Para priorizar, definimos cuanto staffing por O (bucket planning). Y ya está. Los publicamos en una herramienta para dar visibilidad y hacemos revisiones mensuales para ver si están en riesgo.

Fernando Hidalgo, project manager at Sngular

¿Se puede usar OKR para mejorar el desarrollo de software? Sí, se puede y se debe utilizar un sistema como OKR para mejorar el desarrollo de software. OKR, además, es un framework que permite ajustarse muy bien y complementar otras herramientas utilizadas habitualmente en el desarrollo de software, como son Scrum.

Trabajando OKR desde una visión a alto nivel y con periodos de tiempo más largos que Scrum (en OKR es habitual trabajar por trimestres y en Scrum con Sprints de 1 ó 2 semanas), es una buena estrategia hacer primero un análisis donde OKR establezca las prioridades (Resultados clave) para el próximo trimestre y después de eso se pueda implementar con Scrum los Sprints de desarrollo que permitan esos objetivos.

En definitiva, OKR nos permite tener una visión global constante y medible, de los objetivos que queremos conseguir con nuestro desarrollo, y así poder mantener el foco en el largo plazo y no perder de vista dichos objetivos desde un puntos de vista técnico y de negocio.

Y para terminar os recomendamos más artículos sobre cómo aplicar OKR en el desarrollo de software

Etiquetas: , , ,