fbpx
Get In Touch
1201 3rd Avenue Seattle, WA 98101, US
(HQ) Av. Punto Sur 31, Tlajomulco de Zúñiga, Jal 45050, MX
Carrera 11B # 99 - 25, Btá, 110221, CO
Let's talk
hello@inmediatum.com
Ph: +1 (650) 603 0883
Sales attention M - F 9am - 5pm (CT)
Get support
Careers
Endless inspiration and meaningful work
See open positions
Back

¿Cuáles son los KPIs para Equipos de Desarrollo?

Una forma común de medir la productividad de equipos de desarrollo de software es mediante el uso de indicadores clave o KPI (key perfomanse indicator), tener una forma de medir la productividad actual nos permite darnos cuenta cuando ésta mejora o empeora en base a los parámetros que sean definidos. Por lo que en este artículo veremos cuales son los KPIs para equipo de desarrollo.

En este ejercicio veremos como automatizar la obtención de datos analiticos sobre los repositorios de código, que nos sirvan luego para fijar objetivos y calcular sus indicadores clave.

Usaremos Node.js como lenguaje de programación para backend y la integración de webhooks disponible en todos los repositorios de Bitbucket , aunque la misma logica puede aplicarse para otros lenguajes de programación y/o para otros servicios de alojamiento de repositorios.

Inicializar proyecto

$ npm init

Instalar Dependencias

$ npm i –save body-parser express mongodb

Crear Webhook

En el archivo principal (index.js por defecto)

Agregamos módulos e inicializamos la aplicación express:

const bodyParser = require(‘body-parser’)
const express = require(“express”)
const MongoClient = require(“mongodb”).MongoClient
const app = express()

Definimos constantes para la aplicación y base de datos:

const APPLICATION_PORT = 3000
const MONGO_URI = “mongodb://localhost:27017”
const MONGO_DB_NAME = “kpis”

Agregamos el body parser a express:

app.use(bodyParser.json())

Creamos la conección a la base de datos, creamos el endpoint para el webhook e iniciamos el servicio:

MongoClient.connect(MONGO_URI, { useUnifiedTopology: true }, (error, client) => {
if (error) throw error
console.log(“Connected to database: ” + MONGO_URI)
const mongo = client.db(MONGO_DB_NAME)

app.post(“/webhook”, (req, res) => {
console.info(“incoming webhook data”)
console.debug(req.body)
mongo.collection(‘kpis’).insertOne(req.body)
.catch((error) => { console.error(“error while saving:”, error) })
.finally(() => { res.end() })
})

app.listen(APPLICATION_PORT, () => {
console.log(`Listening at http://localhost:${APPLICATION_PORT}`)
})
})

Guardar y ejecutar la aplicación

$ node index.js

Al ejecutar el comando deberiamos ver en la consola algo similar a:

$ Connected to database: mongodb://localhost:27017
$ Listening at http://localhost:3000

Podemos probar que la aplicación funciona abriendo otra terminal y ejecutando:

$ curl -d ‘{“foo”:”bar”}’ -H “content-type: application/json” -X POST http://localhost:3000/webhook

Si todo esta correcto se guardara en la base de datos kpis un nuevo registro con el campo foo y el valor bar en la coleccion kpis.

Publicar Webhook

Ahora que sabemos que el webhook funciona correctamente podemos publicarlo en nuestro servidor y cambiar los valores coneccion de la base de datos de ser necesarios. Supondremos que ya esta publicado en la url: https://mi-app-kpis.net

Configurar el repositorio

Para configurar el repositorio en bitbucket:

Entramos en nuestra cuenta de bitbucket
Seleccionamos el repositorio a configurar
Repository Settings > Workflow > Webhooks
Add Webhook
En Title podemos poner KPIS y en URL ponemos https://mi-app-kpis.net/webhook

Hay una larga lista de eventos que pueden guardarse y la seleccion de estos dependera de que objetivos se quieran definir:

Por ejemplo, si uno de nuestros indicadores sera “cuanto tiempo se tarda un pull request en ser aceptado”, necesitaremos los triggers de Pull Request Created y Approved para luego comparar el tiempo entre uno y otro. Asi mismo podriamos agregar los eventos Pull Request Created, Approved y Declined para calcular el porcentaje de pull requests que se aprueban contra los que se declinan. Esto se debe realizar por cada repositorio al que queramos darle seguimiento.

Una vez que habilitemos el webhook en el repositorio obtendremos un payload con todos los datos del autor, la accion, los datos del repositorio, los datos del pull request o comentario en nuestra base de datos, de donde podremos comenzar a crear las consultas que creamos necesarias para definir nuestros reportes.

Te invito a leer sobre los Beneficios de automatizar reportes  y te invito a preguntar cualquier duda o dejar tus comentarios.

Definir cuales son los mejores KPIs para equipos de desarrollo nos ayuda a medir la productividad para poder mejorar tiempos y poder atender mas proyectos con el mismo numero de manos.

Carla Serrato
Carla Serrato
Especialista en ciencias sociales y de comportamiento. Carla no solo asesora a nuestro departamento de UX en INMEDIATUM sino que su investigación permite optimizar nuestros algoritmos de inteligencia artificial como para la prevención de riesgo crediticio, genera mejor adherencia a tratamientos médicos, reconocimiento facial para identificar rasgos de la personalidad entre otros.

We use cookies to give you the best experience. Cookie Policy