Sustituir un motor de comisiones de 20 años
Un motor de comisiones MLM crítico para el dinero, sustituido en un corte en frío sin ejecución en paralelo — y los cuatro meses de conciliación que vinieron después.
El problema. Veinte años de reglas de comisión viviendo en SQL acumulado, con condicionales anidados cuya ruta de ejecución dependía del año en que se había configurado el plan. El código era legible; la intención no. Quien lo diseñó no estaba disponible.
La restricción que no se negociaba. Un corte en frío. El motor viejo se apagó a las 23:59 del día 20 del mes y el nuevo entró esa misma noche, sin ejecución en paralelo — así que los dos primeros periodos quincenales fueron en parte del motor viejo, que ya no se podía consultar, y en parte del nuevo, que todavía no codificaba todas las reglas.
Qué no funcionó. Leer el SQL viejo para recuperar las reglas. Dejamos de escribir código y nos sentamos con el departamento financiero del cliente a definir los términos: qué es una generación, qué hace que un director esté activo, qué pasa cuando alguien cambia de nivel a mitad de mes. El caso más duro fueron las comisiones multinivel que cobran los directores sobre generaciones sucesivas por debajo, sobre una jerarquía que cambia en el tiempo — una dimensión de cambio lento, casi sin histórico limpio contra el que validar.
El resultado, dicho con honestidad. Unos cuatro meses de ciclos con errores, conciliados con finanzas, con cada discrepancia rastreada hasta una regla concreta del plan en lugar de darla por fallo genérico del sistema. Error residual al final: del orden de 100 USD en total, sobre pagos que suman cientos de miles de dólares repartidos entre miles de consultores. Escrito a cuatro manos con Alejandro Cespón.
La cifra que vale citar aquí no es la que suena bien. Cuatro meses con errores es el titular honesto; los ~100 USD residuales son lo que compraron esos cuatro meses.
- Python
- SQL
- Recursive CTEs
- BigCommerce
- Kill Bill