Planificación de la capacidad operativa- 'Es pan comido’ - Workforce Management en Español

Breaking

jueves, 1 de agosto de 2019

Planificación de la capacidad operativa- 'Es pan comido’





Descubrir cómo capturamos y modelamos todos los datos que tenemos disponibles para pronosticar nuestros niveles de servicio y determinar con la mayor exactitud posible nuestro requerimiento de personal (también denominado planificación de capacidad operativa o ‘CP’ por ‘capacity planning’) es un fanatismo de todos los que trabajamos en este blog. Viéndolo de arriba, parece bastante fácil lo que hay que hacer: hay cuatro datos básicos en nuestros modelos (volumen, tiempo de manejo, ocupación y utilización). Incluya esos números en algunas fórmulas, y ya está: necesitamos 150 FTE para cumplir con el próximo mes de SL. 
No tan rapido! En palabras de Blair McGavin: "he estado en esto por cerca de 25 años, y nunca he visto a dos analistas o compañías hacer lo mismo". Entonces, si todos estamos usando diferentes suposiciones, definiciones diferentes y fórmulas ligeramente diferentes, y claramente damos respuestas diferentes: ¿Alguno de nosotros está en lo cierto o estamos todos en lo correcto? ¿hay alguna manera de demostrarnos que estamos haciendo nuestro CP correctamente? En la Universidad, si en un examen usábamos una fórmula incorrecta, un coeficiente incorrecto u olvidábamos un paso, sabíamos que perdíamos 10 puntos y podía perjudicarnos. En esta materia que es el Workforce pasa algo similar: ¿son correctos todos nuestros 'variados' métodos CP? No ¿Hay alguna manera de demostrarnos que nuestros métodos son sólidos? ¡Sí! Más sobre eso al final.


Repasemos el ABC-D de la capacidad operativa.

Hay una fórmula básica en la raíz de nuestro plan de capacidad, que nos indica cuáles serán nuestros requisitos de personal. La parte difícil es averiguar cuál es el valor correcto para cada una de estas variables:



Es una fórmula fácil que todos podemos recordar a medida que desarrollamos los modelos que nos ayudan a entender el valor de cada uno. Esto es lo que representa cada variable:

1.    A = Volumen
2.    B = Productividad
3.    C = Ocupación
4.    D =  Utilización

Entonces, expandiendo esto un poco, obtenemos lo siguiente:



Para transformar esta fórmula en personas, debiéramos dividir el resultado en la cantidad de horas de trabajo de un agente en el periodo pronosticado. Por ejemplo, si estamos hablando de volumen mensual, debiéramos dividir por 126 horas (suponiendo que los agentes trabajan 30 hs semanales por 4,2 semanas al mes).  Si utilizamos el volumen semanal, tendríamos un factor de 30 horas en el denominador (porque trabajan 30 hs semanales).
Nota: Es posible derivar sus requisitos de personal utilizando varios pasos en su laberinto de hojas de cálculo, siempre y cuando la integridad de esta fórmula no se vea comprometida.

Ahora, profundicemos en algunos de los desafíos que enfrentamos para determinar los valores correctos para cada una de estas variables.


Ocupado - El hotel está lleno

¿Por qué la Ocupación es incluso una parte de esta ecuación? La matemática simple nos dice que si tengo 1,000 llamadas telefónicas para contestar, y nuestro AHT es de 6 minutos (10 llamadas por hora), podemos hacer los cálculos y descubrir que necesitamos 100 horas de trabajo para responder esas llamadas [1000 llamadas / (10 llamadas / hr)] = 100 horas. No tan rápido… todo va bien hasta que descubrimos que las llamadas entran en forma aleatoria, y empezamos a abandonar clientes que no encuentran a un agente libre para que los atienda. ¡Y a esto se suma que no todas las llamadas duran 6 minutos! Algunas duran 10, otras 2…
En primer término, la ocupación nos indica qué porcentaje del tiempo en el que nuestros agentes están conectados y disponibles para recibir contactos, se encuentran efectivamente ocupados hablando con los clientes. Un agente con 90% de ocupación tiene un 10% de tiempo de inactividad entre llamadas.
Nota: es posible que en algunos centros de contacto se utilicen variaciones de esta fórmula, por ejemplo, incluyendo el ringtime dentro de los tiempos “ocupados”. Lo importante es que el numerador y el denominador sólo se diferencien por el tiempo disponible (avail), ya que el objetivo de esta métrica es calcular la participación de este indicador en el tiempo total.

Entonces, ¿por qué tenemos que dar cuenta de la ocupación y agregar tiempo adicional a nuestros modelos de personal para cumplir los objetivos de nivel de servicio?  Es porque estamos gestionando un proceso 'en tiempo real'. Los procesos en tiempo real no se comportan como una actividad de back-office. Existe una variabilidad en el comportamiento de cómo llegan y se procesan los clientes dentro del sistema: cómo llegan las llamadas (de manera uniforme o alguna distribución extravagante como Poisson), cuántas llamadas llegan en relación con nuestro pronóstico y cuánto tiempo la llamada ocupa a un agente: una llamada puede ser de solo 2 minutos y la siguiente llamada puede ser de 9 min (generalmente se supone que estas dos variables siguen una distribución exponencial).

Las fórmulas de Erlang intentan ayudarnos a cuantificar la variabilidad en el proceso y nos indican cuál será nuestra ocupación para cumplir con los niveles de servicio objetivo. Descubrir nuestra "verdadera" ocupación en el nivel de servicio es el "Santo Grial" en todo este proceso. La variabilidad es el enemigo. Cuanta más variabilidad tengamos, menos eficientes seremos y disminuirá nuestra ocupación y aumentará nuestra dotación de personal. Consulte el gráfico modelado 'profesionalmente' a continuación:




En volúmenes bajos, hay MUCHA variabilidad en la cantidad de llamadas que recibirá nuestra dotación. En volúmenes altos, el proceso se comporta de manera mucho más predecible, tanto por la cantidad de llamadas que llegan en relación con el pronóstico, como por el AHT promedio que tendrán nuestros agentes. Esto último significa que el proceso será más predecible, lo que se traducirá en una mayor ocupación y mayor productividad. Esto es similar al concepto de variación de 'agrupación de riesgos'. Este principio de gestión de la variabilidad se utiliza en la gestión de inventario y en los mercados financieros con la compra de un fondo mutuo en lugar de acciones individuales.

Ocupación derivada
Si pudiéramos mostrar nuestra ocupación pronosticada (para el nivel de servicio objetivo), en función de los valores de ocupación según la fórmula de Erlang, se vería algo como el gráfico a continuación:



Y luego, si tomamos un cálculo del promedio ponderado real en todos los intervalos del día y obtenemos un valor de ocupación del 80% (suponiendo que Erlang es exacto, lo cual no es así), ¿es ese el valor que querríamos utilizar en nuestro plan de capacidad?

La respuesta es no. Hay otra cuestión en juego aquí, y es nuestra eficiencia en el armado de la programación. Los horarios mal alineados nos costarán más, resultando en una menor ocupación. Para explicar mejor este punto es conveniente pensar en los horarios de nuestro personal como bloques LEGO: imaginen que tienen que reproducir la curva de tráfico pronosticada a nivel diario, utilizando bloques LEGO para armar la M o doble joroba. Podríamos imaginarnos 2 situaciones comunes en nuestros centros de contacto:
1.     Tenemos bloques de un único tamaño (por ejemplo, 8hs), los cuales programamos en 2 turnos con igual horario de ingreso, de forma tal que tenemos una doble meseta:





2.     Tenemos bloques de diferentes tamaños (8hs, 6hs, 4hs), los cuales programamos en diferentes turnos y horarios con el fin de “copiar” mejor la curva:
   


¿Les parece que ambos esquemas tienen la misma Ocupación? Si no logramos ajustar nuestro requerimiento de personal a la curva de horas necesarias surgida del pronóstico, estaremos incrementando nuestro tiempo disponible (avail) por encima de lo estimado por Erlang.
  

Entonces, ¿cómo podemos explicar todas las fallas en Erlang y TAMBIÉN cuantificar las ineficiencias en nuestros horarios? Hay un truco de modelado bastante fácil que nos dará la respuesta:





Podemos construir un diagrama de dispersión con los datos de nivel de servicio y ocupación, y nos dará la respuesta que estamos buscando. El NS podría ser ASA o %NS en XX segundos. Hay 3 niveles diferentes en los que posiblemente podría modelar sus datos: Intervalo, Diario o Semanal.

Para este ejercicio consideramos que lo más conveniente sería ver sus resultados diarios. Hay algunos trucos para construir estos diagramas de dispersión, pero afortunadamente es bastante sencillo:
  • En lo posible usa 2-3 meses de datos recientes
  • Eliminar manualmente o eliminar puntos de datos que son valores atípicos obvios.
  • Si ciertos días de la semana (como los fines de semana), tienen un volumen considerablemente diferente (lo cual afectaría la variabilidad), será conveniente construir modelos por separado: 1 para los días de semana, más otro para sábado y domingo. Recuerde que la ocupación es sensible al volumen, por lo que tendría dos respuestas diferentes.

En el ejemplo anterior, el punto de equilibrio para el objetivo NS del 90% de las llamadas contestadas en 30 segundos, es el 73% de ocupación: este el valor que usaría en la fórmula de horas necesarias indicada al comienzo. Este método está muy lejos de ser un sustituto preciso para reemplazar a Erlang para el pronóstico a nivel de intervalo, pero hará un buen trabajo para la planificación de capacidad operativa de alto nivel a largo plazo.

Esta es la primera parte del artículo escrito por Blair McGavin sobre Capacity Planning. La Parte 2 incluye el análisis de reductores, los tiempos operativos o de manejo, e incluso una buena referencia a Misión imposible. Esperamos tener traducida la misma para el próximo domingo. Si aún no se ha suscrito por correo electrónico a este blog, asegúrese de hacerlo para no perderse la Parte 2 y los futuros artículos semanales.

Estamos en contacto.
Mariano.

---
Autor: Blair McGavin
Revisado y traducido al español por: Mariano Samamé

2 comentarios:

  1. Uso una metodología alternativa, que resulta bastante bien.
    Para LOB's de mas de 20-30 Agentes: Pronostico a L/P usando una mezcla de series temporales, regresión no lineal con dos variables "x"; media móvil de 12 periodos y media móvil de 2 periodos. Se obtienen los Indices estacionales, los normalizo. Se calcula la regresión y se ajusta con un "Alfa". Una vez que tengo un año proyectado con un r2 >= 0.95, los valores mensuales los llevo a intervalos (previo análisis de curvas patrón) junto con los respectivos TMOs históricos vigentes y extrapolables. Tengo las herramientas para aplicar modelos Erlang B + C por intervalos para un año completo. De ahí obtengo las Horas posibles de atender ACD, luego aplico los reductores por intervalo (ABS, Rotación, atrasos, vacaciones, bajas médicas...) mas los auxiliares y obtengo las Horas requeridas o necesarias, por día, esto lo llevo a totales día, semana y mes. Calculo los RAC's según la siguiente formula =((Hrs.Requeridas semanales * 12 *4.3)/2079/(39/45) donde 2079 son las horas productivas del país y la resultande de (39/45) es el turno promedio. No obstante en paralelo tengo una aplicación construida con Open Solver que resuelve y realiza el mejor ajuste en torno ala curva necesaria (óptima) de una batería de mas de 800 turnos (de Lunes a Domingo y diferentes condiciones contractuales) Tal como lo hace el eWFM de spect Software (ocurre que conversaba mucho con el desarrollador en USA, algo me enseñó). Este ejercicio en condiciones normales muestra una correlación superior a 99%, es decir el ejercicio con lanzamiento de turnos coincide con los Agentes teóricos y también las Horas.E sto es rápido. Auxiliado con Macros y VBA, los que he aprendido bien.

    ResponderBorrar
    Respuestas
    1. Wow! Qué buen primer comentario del blog! Tenemos que ampliar este tema!

      Borrar