Cuando una empresa de proyectos quiere saber si sus rendimientos son buenos, el reflejo es mirar hacia afuera: comprar un manual de rendimientos estándar, contratar un estudio de benchmarking, preguntar en la asociación gremial cuánto rinde “el mercado”.
Y esos datos externos tienen un problema estructural que nadie menciona al vendértelos: promedian empresas que no se parecen a la tuya, en obras que no se parecen a las tuyas, con sistemas de medición que no sabes cómo funcionan. El “rendimiento estándar de tabiquería” de un manual mezcla edificación en altura con vivienda industrializada, cuadrillas propias con subcontrato, Antofagasta con Puerto Montt. Es el problema del promedio elevado al cubo: un número que no describe a nadie, usado como vara para todos.
Mientras tanto, en tus propios servidores, duerme un dataset infinitamente superior: tus últimas 10, 20 o 50 obras. Mismas reglas de medición, mismo tipo de cliente, mismo mercado laboral, misma empresa. La comparación más informativa disponible no es “nosotros contra el mercado”: es tu obra A contra tu obra B, y casi nadie la hace.
Por qué el dato interno vale más
Tres propiedades que ningún benchmark externo puede ofrecer:
- Comparabilidad real. Tus obras comparten sistema de costeo, criterios de imputación y definiciones de partida. Cuando la obra A rinde 30% mejor que la B en moldajes, esa diferencia es señal, no ruido metodológico.
- Accionabilidad. Si el benchmark externo dice que estás bajo el mercado, ¿qué haces con eso? Nada concreto. Si tu obra A rinde 30% más que la B, puedes ir, mirar y preguntar: ¿qué hace distinto el capataz de A? ¿Qué maestro, qué secuencia, qué subcontratista? La mejor práctica ya existe dentro de tu empresa, tiene nombre y apellido, y está disponible para copiar.
- La distribución completa. Con datos propios no estás limitado al promedio: ves la dispersión, los extremos y las tendencias. Y en gestión, la dispersión es donde vive la información.
Intuición (El consultor que ya pagaste)
Cada obra terminada es un experimento completo de gestión que tu empresa ya financió: con sus decisiones de subcontratación, su clima, su cliente difícil y sus rendimientos reales. No aprender de ella es pagar el experimento y tirar el resultado. El benchmarking interno es, literalmente, cobrar un activo que ya compraste.
El análisis mínimo viable
No necesitas un data warehouse. Necesitas una tabla con cuatro columnas que probablemente ya puedes exportar de tu sistema de costos (obra, partida, cantidad ejecutada, horas-hombre consumidas) y una quinta que agregas a mano en diez minutos: el tipo de obra. Con eso:
import pandas as pd
# Export de control de costos: una fila por obra y partidadf = pd.read_csv('rendimientos_historicos.csv')# columnas: obra, tipo_obra, partida, unidad, cantidad, hh_consumidas
df = df.query('cantidad > 0 and hh_consumidas > 0')df['rendimiento'] = df['cantidad'] / df['hh_consumidas'] # ej: m2/HH
grupo = ['tipo_obra', 'partida', 'unidad'] # solo se compara dentro del mismo tipo de obrabench = ( df.groupby(grupo)['rendimiento'] .describe(percentiles=[0.25, 0.5, 0.75]) .query('count >= 4') # sin masa crítica no hay benchmark .assign(brecha=lambda x: x['75%'] / x['25%']) .sort_values('brecha', ascending=False))
print(bench[['count', '25%', '50%', '75%', 'brecha']].head(10).round(2).to_string())La columna final, brecha, es la estrella del análisis: cuánto más rinde una obra buena típica que una obra mala típica en la misma partida. Está calculada entre los percentiles 25 y 75 a propósito, y no entre la mejor y la peor obra. El máximo y el mínimo son justo las dos filas con más probabilidad de ser un error de imputación, y con seis obras cualquier dato mal cargado te fabrica una brecha espectacular. En mi experiencia, ver por primera vez ese número es incómodo igual: aun descartando los extremos, las brechas grandes en partidas masivas son comunes, y cada una es una pregunta de gestión concreta que nadie había formulado porque nadie había juntado las filas.
La brecha dice dónde mirar. Para decidir por dónde empezar falta el otro número, el que se lleva a un comité: cuánto vale cerrarla.
COSTO_HH = 12_000 # costo empresa de una HH, en pesos: usa el tuyoPERIODO = 5 # años que cubre el export
mediana = bench['50%'].rename('rend_mediana').reset_index()df = df.merge(mediana, on=grupo)
# HH que se habrían ahorrado si cada obra bajo la mediana hubiera rendido como la medianadf['hh_sobre_mediana'] = (df['hh_consumidas'] - df['cantidad'] / df['rend_mediana']).clip(lower=0)
en_juego = df.groupby('partida')['hh_sobre_mediana'].sum() * COSTO_HH / PERIODOprint(en_juego.sort_values(ascending=False).head(5).round(-6))Fíjate en la meta que usa: no es igualar a la obra campeona, es que las obras bajo la mediana lleguen a la mediana. Es un objetivo que tu propia empresa ya demostró que puede cumplir la mitad de las veces, y por eso nadie en el comité puede decir que es teórico.
Las tres preguntas que el cruce responde
1. ¿Dónde está nuestra mejor práctica?
Toma las tres partidas con más dinero en juego e identifica la obra campeona de cada una. Luego haz el trabajo que ningún dashboard hace: ir a preguntar por qué. A veces es el capataz, a veces la secuencia constructiva, a veces un subcontratista específico, a veces simplemente que la obra campeona midió distinto (hallazgo igual de valioso: acabas de encontrar un problema de datos). El análisis apunta el foco; la respuesta está en terreno.
2. ¿Con qué números presupuestamos la próxima obra?
Aquí el benchmarking interno se traduce directo en margen. Si presupuestas con el rendimiento de un manual, estás usando un número que no es el tuyo, y no sabes para qué lado se equivoca. Si presupuestas con tu peor histórico, pierdes licitaciones. Tu distribución histórica te da algo mejor que un número: un rango con probabilidades, que es exactamente el insumo que pide la simulación de Montecarlo del plazo:
r = df.query("tipo_obra == 'altura' and partida == 'moldaje losa'")['rendimiento']cantidad = 4_200 # m2 de moldaje de la obra que estás presupuestandohh_dia = 6 * 9 # personas de la cuadrilla × horas de la jornada
# Rendimiento alto = duración corta: el P90 de rendimiento es tu optimistaoptimista, probable, pesimista = cantidad / (r.quantile([0.9, 0.5, 0.1]) * hh_dia)Esas tres duraciones ya no salen de la memoria del jefe de terreno: salen de cómo rindió de verdad tu empresa. Y con ellas eliges cuánto riesgo cargar al precio de cada licitación según cuánto quieras ganarla.
3. ¿Estamos mejorando o solo estamos ocupados?
Agrega la dimensión tiempo: el mismo análisis con las obras ordenadas cronológicamente, siempre dentro del mismo tipo de obra y siempre en HH. Si la comparación la haces en pesos, cinco años de reajustes te fabrican una caída de productividad que no existe, a menos que lleves todo a UF antes de comparar. Si tu rendimiento mediano en moldajes es igual al de hace cinco años, tu empresa no está aprendiendo: está repitiendo. Esa curva de aprendizaje (o su ausencia) es probablemente el indicador estratégico más honesto de una empresa de proyectos, y no aparece en ningún estado financiero.
Las trampas del método (léelas antes de presentar)
El benchmarking interno tiene modos de fallo conocidos, y conviene desactivarlos antes de que la primera reunión se convierta en un tribunal:
- Suponer que las partidas se llaman igual. Es la trampa que aparece primero y la que más tiempo come. Cada obra nace con su propio itemizado: lo que en una es “moldaje losa” en otra es “moldajes estructura nivel 2”, y en una tercera viene mezclado con el hormigonado. El groupby no se entera y compara peras con manzanas en silencio. Antes de correr nada, arma una tabla de equivalencias a mano, solo para las 15 partidas que vas a analizar. Es trabajo aburrido, de una tarde, y es el que hace que todo lo demás signifique algo.
- Comparar sin normalizar. La obra en altura no es comparable con la extensión en todas las partidas; el invierno de Temuco no es el verano de La Serena. Por eso el script agrupa por tipo de obra, y si tienes masa crítica, puedes controlar por otras variables gruesas. Con 10 obras no hagas econometría: haz grupos honestos y compara dentro de cada grupo.
- El numerador y el denominador mienten distinto. Un “rendimiento” alto puede ser eficiencia real o avance sobredeclarado partido por horas mal imputadas. El benchmarking hereda toda la calidad (y toda la basura) de tus datos de origen: parte por las partidas donde confías en la medición.
- Convertirlo en ranking punitivo. El día que el benchmarking se usa para castigar al último de la tabla, se acabaron los datos honestos: la organización aprenderá a imputar creativamente antes que a mejorar. Es la Ley de Goodhart en su forma más pura. El uso correcto es hacia adelante: encontrar y copiar la mejor práctica, no repartir culpas por la peor.
Advertencia (La obra única no existe)
La objeción que escucharás siempre: “es que esa obra era distinta, no se puede comparar”. Y es cierta en lo particular y falsa en lo general: toda obra es distinta, y sin embargo los rendimientos de tu empresa tienen regularidades estadísticas que sobreviven a las particularidades. La respuesta práctica es transparencia metodológica: muestra los grupos de comparación y acepta ajustes razonables. Y si la brecha sobrevive dentro de un grupo de obras parecidas, la carga de la prueba cambia de lado. Ya no es el análisis el que tiene que demostrar que las obras son comparables: es la particularidad la que tiene que explicar la diferencia, con algo concreto y con un tamaño. “Esa obra era distinta” no es una explicación. “Esa obra tuvo tres meses de lluvia durante la obra gruesa” sí lo es, y se puede verificar.
Empezar esta semana
- Exporta obra, partida, cantidad y HH de tus últimas obras cerradas, y agrégale a mano el tipo de obra. Si el export es imposible, o si las HH solo existen por obra y no por partida, acabas de descubrir tu verdadero primer proyecto (y no es de benchmarking).
- Homologa las 15 partidas de mayor monto y corre los dos scripts solo sobre ellas. Ignora el resto: la cola larga del itemizado no paga el análisis.
- Lleva al próximo comité una sola lámina: las 5 partidas con más dinero en juego, en pesos por año (“si las obras bajo la mediana hubieran rendido como la mediana, son $X al año”).
- Elige una partida y haz la visita de campo a la obra campeona. El objetivo del primer ciclo no es el informe: es demostrar que el circuito dato → pregunta → terreno → práctica copiada funciona.
El benchmark externo te dice dónde estás respecto de un promedio que no existe. El interno te dice exactamente qué copiar, de quién, y cuánto vale. Y el consultor que lo sabe todo sobre tu operación lleva años cobrándote sueldo: solo falta sentarlo a conversar con sus propias planillas.
Resumen (TL;DR)
Los benchmarks externos promedian empresas y obras incomparables; tus propias obras comparten metodología y contexto, y la brecha de rendimiento entre tus obras buenas y malas en la misma partida, traducida a pesos por año, es la lista de oportunidades más accionable que existe. Úsala para copiar mejores prácticas internas, presupuestar con rangos históricos reales (los mismos que alimentan una simulación de plazo) y medir si la empresa aprende. Trampas: homologar las partidas antes de cruzar, comparar solo dentro del mismo tipo de obra, desconfiar de datos de origen sucios, y jamás convertirlo en ranking punitivo.