¿Se pregunta cómo medir los KPI para la productividad de los desarrolladores?
Has venido al lugar correcto.
En esta publicación de blog, analizaremos algunos temas que se enmarcan en la medición de la productividad a través de KPI (indicadores clave de rendimiento) para desarrolladores.
Tanto si es un CTO, un líder técnico o un desarrollador sénior encargado de velar por la productividad del equipo, estamos seguros de que encontrará algunas métricas valiosas de productividad individual y productividad de la gestión del equipo que le permitirán tener el control total del proceso de desarrollo.
Productividad del desarrollador
Antes de explorar los KPI de desarrollo de software para la productividad de los desarrolladores, es importante obtener una definición clara de la palabra productividad en el contexto del desarrollo de software.
¿Cómo puedes medir algo si no lo defines? En el nivel más fundamental, la productividad tiene que ver con los productos. Entonces se podría decir que un individuo productivo es una persona que envía regularmente productos.
Si tiene una formación técnica, pensará (con razón) que estas dos declaraciones por sí solas simplemente no son suficientes para medir o definir la productividad y puede estar pensando en algunos de los siguientes puntos:
- ¿Qué pasa con el número de defectos?
- ¿Qué pasa con la complejidad de la biblioteca de clases?
- ¿Qué pasa con el número de puntos de integración?
- ¿Qué pasa con las dependencias de sistemas externos u otros equipos de desarrollo de software?
- Acabo de heredar una aplicación brownfield, necesito tiempo para ponerme al día.
El desarrollo de software no es una simple línea de producción en la que el código cae sin fallas desde la computadora portátil de un desarrollador y se copia y pega en el entorno de un cliente. Por lo tanto, requiere que abandones este pensamiento tradicional de la era industrial.
Los equipos que consisten en desarrolladores de software a menudo involucran a personas de otras disciplinas, como análisis de negocios o diseñadores gráficos front-end.
Debido a este conjunto de habilidades multidisciplinarias, los equipos diversos deben liderarse con prácticas modernas, deben estar abiertos al cambio y adaptarse a situaciones en tiempo real.
Debido a esta dinámica, puede ser difícil definir universalmente un KPI de desarrollo de software o una métrica única para desarrolladores que signifique productividad. Lo que podemos decir, sin embargo, es que el cliente, ya sea interno o externo, definirá qué es el éxito.
El éxito en un proyecto de software generalmente gira en torno a la entrega de un producto que finalmente obtiene la aprobación de un cliente o usuario.
Se puede decir, por tanto, que un equipo productivo es aquel que puede:
- Identificar el progreso y comprender dónde se encuentran en un momento dado en un proyecto.
- Ofrece funcionalidad en línea con un resultado esperado para un usuario o un cliente.
Con estos puntos en mente, ahora podemos comenzar a explorar qué significa esto en términos de KPI para la productividad de los desarrolladores, si se puede medir y qué puede afectar esto.
¿Qué actividades puede medir como KPI para desarrolladores?
Ya sea que esté implementando un modelo en cascada o un modelo de desarrollo ágil, el ciclo de vida del desarrollo de software consta de muchas fases. Cada fase consta de tareas o actividades y es importante conocerlas antes de capturar cualquier dato sobre los KPI para desarrolladores asociados con su productividad.
Desde la perspectiva de la productividad del desarrollador de software, puede separar estas actividades en dos componentes para analizar los KPI para los desarrolladores de manera efectiva:
Actividades de valor agregado
Estos se pueden definir como actividades que constituyen el proceso de construcción de la funcionalidad requerida. La finalización exitosa de estas actividades da como resultado la «aprobación» por parte del cliente. La velocidad a la que se completan este tipo de tareas forma parte de la «ecuación de productividad».
Ejemplos de este tipo de tareas incluyen, pero no se limitan a:
- diseño de software
- código de escritura
- integración de código
- probando la funcionalidad
- ponerse de pie todos los días para discutir los impedimentos
Actividades sin valor añadido
Estas actividades se pueden definir como tareas que interfieren en la construcción de la funcionalidad requerida. Todavía deben llevarse a cabo, pero no son realmente parte de la construcción de la funcionalidad requerida. Este tipo de tareas forman la segunda parte de la “ecuación de productividad”.
Algunos ejemplos de este tipo de tareas incluyen:
- prueba y depuración de código para comprender cómo funciona (cuando un desarrollador encuentra un nuevo código en un sistema)
- configurar y configurar un entorno
- implementar una herramienta o un proceso de desarrollo de software que solo entienden unos pocos elegidos
- escribir pruebas unitarias que no son representativas de áreas funcionales
- despotricando en el enfriador de agua sobre un código heredado
Está claro que las actividades que no agregan valor son obstrucciones para el desarrollador y afectan su productividad.
Las actividades que caen en el campo de valor agregado son las que deben medirse como KPI para los desarrolladores, ¡pero solo después de que se haya deducido el tiempo total dedicado a las actividades que no agregan valor! Llevando esto un paso más allá, se podría decir que:
Productividad = (tiempo total dedicado al trabajo – tiempo total dedicado a actividades sin valor agregado)
Con base en este razonamiento, se puede decir que el objetivo es reducir la cantidad de actividades que no agregan valor en el día a día del desarrollador de software.
Menos actividades sin valor agregado dan como resultado un envío de productos más frecuente, lo que genera mayores ingresos y, por lo tanto, ganancias para la empresa, y las ganancias son un fuerte indicador de productividad.
Retos de medir la productividad a través de KPIs para Desarrolladores
No vivimos en un mundo ideal y los proyectos de software frecuentemente enfrentan desafíos que, en última instancia, pueden afectar la productividad del desarrollador.
Exploremos algunos de estos desafíos antes de pasar a analizar las herramientas y los procesos para medir la productividad de los ingenieros de software.
Documentación ambigua
Posiblemente la pesadilla de todo desarrollador. Los programadores reciben una especificación deficiente que genera demasiadas preguntas para permitirles comenzar la fase de diseño y construcción.
Dependiendo del nivel de experiencia que tenga un desarrollador, puede tomar la iniciativa y usar su sombrero de analista de negocios y trabajar para refinar los requisitos.
Si esto sucede, la fase de construcción general del proyecto podría tardar más de lo previsto y, por lo tanto, distorsionar el tiempo total necesario para una tarea determinada en la que está trabajando el desarrollador.
Configuración ambiental
En proyectos en los que el desarrollador tiene la tarea de crear interfaces que intercambien información entre múltiples entornos, a menudo se debe otorgar acceso, configurar firewalls y proporcionar credenciales.
Estas actividades de configuración afectan la productividad del desarrollador, ya que no pueden ponerse en marcha y deben esperar hasta que se hayan configurado los entornos y así sucesivamente. Nuevamente, esto tiene un impacto en la productividad general del desarrollador.
Equipos de desarrollo internacional
No es raro que un equipo de desarrollo de software se extienda por varios continentes, Internet y las herramientas de colaboración en línea han facilitado tener un modelo de negocio que deslocalice o acerque las actividades de desarrollo de software.
Ciertamente, hay beneficios al implementar este modelo de negocio, pero si puede mantener una medida precisa de productividad.
Esta y la gestión general del proyecto se vuelve mucho más difícil cuando tiene un equipo de desarrollo de software repartido por todo el mundo que opera en diferentes zonas horarias, sin mencionar que trabaja en historias de usuarios discretas con una complejidad variable.
Complejidad
Escribir código que muestre «Hello World» es claramente mucho más simple que escribir middleware que realice análisis de sentimientos y ejecute algoritmos de procesamiento de lenguaje natural contra flujos de texto entrantes. No puede aplicar la misma vara de medir a ninguno de los desarrolladores en este tipo de escenario.
Integración
Un desarrollador puede haber implementado la funcionalidad requerida según los requisitos del cliente, puede funcionar en su entorno de desarrollo y haber sido probado con éxito, pero ahora debe integrarse con la funcionalidad o la biblioteca de clases de otro desarrollador.
En una implementación empresarial, esto puede ser doloroso. Especialmente si el desarrollador se encuentra en otra zona horaria, indique llamadas de conferencia, correos electrónicos y sesiones de mensajería instantánea para aclarar cualquier ambigüedad y/o asesoramiento sobre los parámetros que cada desarrollador espera que se pase a la funcionalidad que ha creado.
¿Realmente puede medir la productividad a través de KPI para desarrolladores?
Hasta ahora, hemos cubierto lo siguiente:
- una definición de productividad
- tipos de actividad a monitorear
- desafíos que encontrará al intentar medir la productividad a través de KPI para desarrolladores
Debería ser evidente a partir de algunos de los desafíos que no puede confiar simplemente en una métrica para identificar la productividad del desarrollador.
Los desarrolladores tienen fortalezas y debilidades, algunos pueden trabajar en áreas más complejas de una aplicación de software que otros, algunos pueden tener mejores «habilidades blandas» y otros pueden «usar más de un sombrero».
No es raro que los desarrolladores más experimentados actúen como analistas comerciales o realicen actividades de tipo consultoría en el sitio de un cliente.
En el mundo de los deportes, no existe una sola medida para determinar qué tan bueno es un bateador de fútbol o béisbol. Se consideran el ritmo, la fuerza, el promedio de bateo, los jonrones y otros factores.
Teniendo en cuenta todo esto, ¿qué tipo de KPI para desarrolladores puede y debe capturar al intentar medir la productividad de los desarrolladores?
Debe olvidarse de la idea de tener una sola medida o KPI para un desarrollador que le permita medir con precisión la productividad de cada uno de sus desarrolladores, hay demasiadas variables a considerar.
Los gerentes y líderes del equipo de desarrollo a menudo saben quiénes son sus «jugadores A» y a quién confiar los componentes de alto riesgo de un proyecto de software.
Dicho esto, hay ciertas métricas de desarrollo de software que pueden actuar como un indicador aproximado, así que vamos a explorarlas.
¿Qué tipo de KPI para desarrolladores puede o debe capturar?
Características del producto
En la mayoría de los proyectos de software, los desarrolladores crean características solicitadas por los clientes. Una métrica para registrar es la cantidad de funciones que cada desarrollador completa con éxito.
Es comprensible que algunas funciones sean más sencillas de implementar que otras, y he cubierto algunos de los desafíos que podría esperar, pero sigue en pie que el seguimiento de cuántas funciones envía un desarrollador es una métrica importante para registrar.
Velocidad
Si su proyecto de software adopta prácticas Agile/Scrum, otra medida que puede rastrear es la velocidad. Esta medida le dirá la cantidad de trabajo que su equipo (generalmente medido en líneas de código) puede completar durante una cantidad de tiempo determinada o un solo sprint.
Siempre que cada desarrollador proporcione estimaciones para Historias y Tareas en forma de Puntos para el Backlog del Producto, se puede calcular la velocidad.
Cuando su equipo haya completado varios sprints, también puede usar la velocidad para pronosticar cuánto de su cartera de productos se puede terminar en futuros sprints.
Insectos
Un desarrollador puede enviar rápidamente, pero no es bueno si el código tiene errores. La medición de errores en el código base de una aplicación de software tiene dos aspectos:
1) La gravedad del error (baja, media, alta)
2) El número de errores introducidos en la aplicación.
Puede establecer un umbral en términos de la cantidad de errores «aceptables» en su aplicación y medir la cantidad de errores que se envían con cada iteración es una métrica que puede registrar por equipo de ingeniería de software o desarrollador.
Naturalmente, preferiría que su producto se envíe sin defectos, pero en el mundo real, a menudo no es así. La preferencia es tener pocos o ningún error que haya sido etiquetado con una Gravedad Media o Alta.
Al establecer un umbral, puede ejecutar informes en su software de seguimiento de defectos y, junto con su software de control de código fuente, puede identificar quién introdujo el error.
Análisis de Código y Calidad
La calidad del código es una métrica más difícil de medir. Deben existir estándares y prácticas de codificación antes de intentar medir la calidad del código. El gerente de ingeniería debe hacer cumplir estos estándares y todos los miembros del equipo deben cumplirlos.
Visual Studio se envía con herramientas de análisis de código listas para usar. Con su equipo, puede decidir sobre un conjunto común de estándares y prácticas y crearlos como Reglas.
Como gerente de desarrollo o desarrollador senior, puede ejecutar estas reglas sobre el código fuente de su aplicación y registrar áreas del código que no cumplen con los estándares de codificación de su equipo.
Rendimiento
La mayoría de las aplicaciones de software que se construyen hoy viven en Internet. Las aplicaciones en Internet deben construirse teniendo en cuenta el rendimiento y, como tal, el rendimiento es una métrica importante para medir.
Con la llegada de las aplicaciones web enriquecidas del lado del cliente, la métrica tradicional de «carga de la página» (cuánto tarda en cargarse una página), si bien sigue siendo importante, ya no es tan relevante como solía serlo.
Un mejor enfoque es medir cuánto tiempo tardan los casos de uso específicos clave en ejecutarse en el front-end para los usuarios.
Desde la perspectiva de la API, Visual Studio contiene una ventana de herramientas de diagnóstico que permite a cada desarrollador identificar cuánto tarda en ejecutarse una biblioteca de clases o un método. Estos tiempos se pueden registrar y medir.
Luego puede medir cómo se comparan los tiempos con los acuerdos de nivel de servicio (SLA) que forman parte del contrato entre usted y su cliente.
Herramientas que pueden ayudar a medir los KPI para desarrolladores
Ahora que tiene una idea de las métricas de software clave que puede rastrear, lo que sigue son algunos productos y herramientas que pueden ayudarlo a medirlas.
Dinámica de la aplicación
Dinámica de aplicaciones es un producto que se puede conectar a su aplicación que le brinda monitoreo de rendimiento en tiempo real.
Con AppDynamics, puede monitorear cada clic, deslizar y tocar en su aplicación. Le permite comprender el viaje de su cliente a través de su ecosistema digital, que se puede ver a través de mapas de flujo visual enriquecidos.
Código Clima
Cada registro en su repositorio de código fuente de Github tiene el potencial de reducir o mejorar la calidad de su código fuente. Code Climate te ayuda a protegerte contra esto. Esta herramienta automatiza numerosos procesos para permitirle medir la cobertura de pruebas, la calidad y la mantenibilidad del código fuente de su producto.
En mucho menos tiempo que un desarrollador humano, verificará la duplicación de código y la complejidad del código, lo que le permitirá identificar áreas problemáticas dentro de la fuente del código de su producto para ayudar a garantizar que sea de alta calidad.
Servicios de equipo de Visual Studio
Visual Studio Team Services (VSTS) es un conjunto de herramientas integrado que acelera el desarrollo y la entrega de sus proyectos de software. VSTS le permite realizar un seguimiento de todo lo que necesita, todo en su lugar.
Es rápido y fácil configurar una cuenta y si su equipo es lo suficientemente pequeño, puede comenzar gratis registrándose aquí.
Una vez que haya iniciado sesión, puede agregar cuentas y administradores de equipos que luego pueden comenzar a agregar el código fuente de su aplicación, que se almacena de forma segura en la nube de Microsoft. Alternativamente, si sus datos deben permanecer dentro de su propia red, puede optar por una implementación de TFS local.
VSTS presenta herramientas y marcos ágiles que le permiten rastrear, mantener y medir:
- Trabajos atrasados
- Insectos
- Sprints
- Productividad
- Historias de usuarios
- Velocidad
Con visualizaciones enriquecidas en forma de Kanban y paneles configurables, VSTS es difícil de superar y se integra fácilmente con la mayoría de los repositorios de control de código fuente y los IDE de desarrollo de su elección.
¿Las herramientas brindan una imagen justa y precisa de los KPI para los desarrolladores?
Si bien las herramientas no son una «bala de plata» de ninguna manera, al menos le brindan un punto de partida en términos de captura y administración de datos relacionados con la productividad del desarrollador.
Debe tener en cuenta las diversas limitaciones y escenarios en los que los desarrolladores se encuentran a menudo; sin embargo, a menudo trabajan en equipos que dependen de analistas comerciales, gerentes de proyectos, clientes y organizaciones de terceros.
Los desarrolladores pueden retrasarse en la entrega de las características del producto o en la corrección de defectos debido a especificaciones funcionales deficientes o requisitos faltantes o desconocidos. Estos factores deben tenerse en cuenta al generar métricas relacionadas con la productividad del desarrollador.
Cómo medir la productividad del desarrollador
Para medir la productividad del desarrollador, debe saber que va más allá de asignar umbrales aceptables para la cantidad de errores encontrados o funciones entregadas en cada sprint. Por supuesto, estas son métricas importantes para medir, pero no brindan una imagen completa.
Ciertos atributos de desarrollador no se pueden medir y no se les puede asignar un número. Considera lo siguiente:
- ¿El desarrollador está comprometido con su oficio o es apasionado?
- ¿Están comprometidos a entregar el software a tiempo?
- ¿El desarrollador está dedicado a la visión de la empresa?
- ¿El desarrollador está constantemente aprendiendo o mejorando sus habilidades?
- ¿El desarrollador se enorgullece de su código?
Los menciono porque no solo son importantes, sino que son completamente subjetivos y simplemente no se pueden rastrear usando productos o herramientas.
Independientemente de esto, el primer paso para determinar las métricas de rendimiento o la productividad del desarrollador de software es tener algunos métodos de medición.
Lo que sigue son algunos puntos para pensar y enfoques que puede aplicar para ayudarlo a medir la productividad del desarrollador. Si bien no deben usarse como un conjunto de reglas de oro, al menos le permitirán iniciar discusiones sobre la productividad.
¿En qué etapa se encuentra su empresa?
Características del producto
Quemado de Sprint
Insectos
Rendimiento/calidad del código
La captura de estas métricas lo ayudará a identificar áreas problemáticas de un proyecto de software y, con suficientes datos históricos, podrá realizar pronósticos más precisos para futuros sprints.
Sin embargo, es importante mirar más allá de los números por las razones que hemos discutido en secciones anteriores de esta publicación de blog.
Reflexiones finales sobre la medición de KPI para desarrolladores
En esta publicación, analizamos la productividad de los desarrolladores y discutimos si es posible medir esto con precisión a través de KPI para el desarrollo de software.
Hemos visto que hay demasiadas variables a considerar al intentar llegar a esto y que cada medida dependerá completamente de la etapa en la que se encuentre su empresa u organización.
Hemos diferenciado entre actividades de valor agregado y actividades sin valor e identificado métricas clave que puede comenzar a registrar en un intento de medir la productividad del desarrollador. También hemos explorado algunas herramientas y marcos que puede emplear para hacer que este trabajo sea más fácil de administrar.
Por último, pero no menos importante, si se encuentra sin la experiencia o los recursos humanos para crear su próxima solución de software, ¿por qué no se toma un momento para ponerse en contacto con DevTeam.Space para ver cómo nuestros desarrolladores y DevOps experimentados pueden ayudarlo?
Tenemos años de experiencia en la creación de las mejores aplicaciones de software y utilizamos un enfoque único de desarrollo de software ágil para garantizar que todos nuestros desarrolladores mantengan una productividad óptima.
Puede ponerse en contacto con nosotros rellenando nuestro formulario de especificación de proyecto.
Otras lecturas
Cómo crear una aplicación de software de escritorio remoto 10 tendencias de desarrollo de software en 2022
Preguntas frecuentes sobre la medición de KPI para desarrolladores
Asegurarse de que cada miembro de su equipo esté haciendo su parte es esencial si desea mantener su proyecto a tiempo y dentro del presupuesto. Para hacer esto, necesita monitorear la productividad.
Los principales puntos de enfoque para medir los KPI para los desarrolladores son:
• Boletos completados;
• Revisiones de código completadas;
• Plazos cumplidos;
• Problemas;
• Calidad del código;
• Tiempos de respuesta.
Cada desarrollador tiene sus propias fortalezas y debilidades. Al trabajar con las fortalezas de un desarrollador y tratar de asegurarse de que evite cosas como distracciones y exceso de trabajo, y que use las mejores herramientas para el trabajo, un desarrollador puede aumentar considerablemente su producción.