¿El Coronavirus acelerará la transformación digital de las empresas?

La transformación digital ha potenciado las estrategias de negocio de pequeñas, medianas y grandes empresas mediante el uso de plataformas digitales para cumplir con las expectativas de sus clientes.

Las plataformas digitales se encuentran disponibles desde hace varios años pero muchas compañías no las han implementado para transformar sus negocios y encontrar mayores oportunidades para crecer, ser más eficientes y diferenciarse de la competencia.

La llegada del coronavirus ha puesto a prueba a miles de compañías en el mundo que no estaban preparadas para afrontar una pandemia económica y menos para operar en tiempos de confinamiento preventivo decretado por muchos países en el mundo, poniendo en jaque la economía mundial y por ende a muchas compañías que no han empezado a implementar la transformación digital.

Ahora los negocios están obligadas a transformarse y estas son 4 razones por las que el Coronavirus acelerará la transformación digital en las empresas

1. El teletrabajo se volverá parte de la cultura empresarial.

Según Forbes el 29% de los trabajadores remotos dicen que son más felices que los trabajadores que deben estar en un lugar fijo.

El teletrabajo puede ser mucho más productivo que el trabajo presencial si se lo realiza con las herramientas y el liderazgo adecuado. En teletrabajo pierde sentido la evaluación por tiempo de trabajo y gana prioridad la evaluación por objetivos y resultados. Es verdad que no todas las funciones se pueden adecuar al trabajo remoto de la misma forma, pero aquellas que funciones que se pueden cumplir de forma remota sin impacto al cliente deberán seguir siendo impulsadas por las empresas aún cuando se levanten las medidas de confinamiento.

2. Las empresas adoptarán las tecnologías en la nube como estrategia para adaptarse a los cambios.

Migrar los procesos a servicios en la nube como AWS o Microsoft Azure permite a las empresas usar herramientas tecnológicas más actualizadas, seguras y flexibles a los cambios, sin embargo los líderes de las compañías deben asegurarse que esta transición sea de manera gradual y bien estratégica donde puedan garantizar que los empleados y el equipo de la compañía en general tenga todos los conocimientos para empezar a operar de una manera más digital.

Los servicios en la nube también ayudan a que las empresas adopten el teletrabajo de forma más rápida. Empresas como Google, Microsoft y Zoom están ofreciendo funciones gratuitas para sus herramientas de comunicación y colaboración, lo que permite crear una política de trabajo remoto para llevar los registros diarios, trabajos basados en tareas y diferentes planes individuales para que las personas se adapten a esta forma de hacer teletrabajo.

3. El e-commerce está cambiando el paradigma de la interacción entre el cliente y la empresa.

Según Marc Benioff, CEO de Salesforce, “cada transformación digital comenzará y terminará con el cliente”, es así como muchas nuevas empresas están adoptando modelos similares, encontrando en el e-commerce y las plataformas digitales una nueva forma de hacer negocios de manera más remota, eficaz, reduce los costos y mejora la experiencia de los clientes.

El e-commerce también trae el reto a las empresas de conocer más a sus clientes para brindarle servicios y experiencias personalizadas, utilizar modelos de machine learning para recomendaciones y digitalizar todos los puntos de interacción con el cliente tanto en la preventa como en postventa.

4. El agilismo será la principal forma de trabajo para desarrollar productos.

Muchos expertos coinciden en que luego de la pandemia enfrentaremos una “nueva normalidad” pero todavía el panorama es muy incierto. Las empresas deben estar mejor preparadas para adaptarse a los cambios de forma rápida y responder a las nuevas necesidades de los clientes. Los marcos de trabajo ágiles como Scrum deberán ser adoptados por todas las áreas de la empresa, ya no será una característica solo de las áreas de tecnología. La colaboración y el trabajo en equipos multidisciplinarios harán la diferencia entre las empresas que puedan adaptarse a diferentes modelos de negocio y desarrollar productos adecuados a la “nueva normalidad”

Artículo relacionado: Scrum explicado con Masterchef

Data Storytelling | La importancia de saber contar historias

En estos días de confinamiento debido al Coronavirus Covid19 vemos tantos números a diario de casos en todo el mundo, Las noticias en la mañana actualizan los datos, la cadena de televisión de la tarde repite los datos, y todas las cuentan en RRSS repiten y repiten los mismos datos. ¿De qué nos ha servido repetir y actualizar tanto los números de contagios en el país y el mundo? ¿Qué historia nos está contando esos datos?

Cuando trabajamos con datos debemos recordar siempre una cosa: dato que no cuenta algo no sirve de nada, absolutamente de nada. Por eso desde hace un tiempo se viene hablando de esta tendencia del Data Storytelling que busca cambiar la forma de presentar los datos para que tengan sentido dentro de una historia, que muestre las métricas clave, las comparaciones entre fechas o diagramas de dispersión, es decir, en mensajes persuasivos y efectivos que sean difíciles de olvidar.

¿Qué es Storytelling?

Aunque el concepto de Data Storytelling parezca novedoso, en realidad el Storytelling no es más que el arte de contar historias. Este concepto se ha usado en el mundo de la comunicación y el marketing desde hace mucho tiempo para mejorar la narración de historias en libros, comunicaciones y campañas comerciales.

Lo interesante del Data Storytelling es que combina el mundo del análisis de datos -donde no somos expertos en contar historias- y el mundo de la comunicación -donde no somos expertos en analizar datos. Por suerte para ustedes en este post veremos un poco de los dos mundos.

¿Por qué es importante?

El storytelling en marketing se usa como una técnica en la que cuentas una historia a tu comunidad con el objetivo de lograr una mejor conexión con ellos a través de las emociones.

Según Forbes, en un minuto se ven más de 4 millones de videos de Youtube en el mundo, se postean más de 46 mil fotos en Instagram y se hacen más de 500 mil comentarios en Facebook. En este mundo plagado de datos e información solo las historias son capaces de destacar por encima del resto de mensajes y generan un vínculo profundo con su audiencia.

Veamos un ejemplo claro

En este ejemplo de Johnie Walker, que nos muestra la historia de éxito del caminante que se convirtió en el ícono de la marca, podemos resaltar algunas características claves de una buena historia y que nos servirán para aplicarlo al Data Storytelling.

Características del Storytelling

#1 Personaje: La historia debe ser narrada con un personaje central, puede ser real o ficticio, el tener un personaje hace que la historia sea más humana y genera empatía con la audiencia. En el caso de Johnie Walker todos los valores de la empresa son un reflejo de los valores de su personaje principal. Su historia cuenta el éxito pero también las dificultades que tuvo que superar, esto genera la empatía y la conexión con la audiencia.

#2 Objetivo: Se debe plantear claramente qué queremos comunicar con nuestra historia, qué queremos vender, qué necesidad vamos a solucionar. Las personas van a escuchar nuestra historia porque lo que vamos a contar les interesa para solucionar algún problema o les deja una enseñanza que les va a ser útil.

#3 Experiencia: Las experiencias personales generan una conexión emocional muy fuerte y poderosa con la audiencia. En el caso de Johnie Walker esto está narrado como una aventura que nos enseña cómo superar retos con valores que se mantienen en el tiempo, al final nos están vendiendo eso, los valores de su marca.

Vista esta introducción al Storytelling, ahora debemos plantearnos ¿Cómo empato estos conceptos con el Data Storytelling? Para esto debemos recordar las características que tiene la teoría del Data Storytelling

Características del Data Storytelling

#1 Narrativa y datos: la combinación de ambos sirve para ofrecer a la audiencia una explicación sobre los mismos.

#2 Visualización y datos: como ves en la imagen, la palabra enlighten (que significa iluminar) es el resultado de la combinación de ambos. Añadir una visualización a los datos ayuda informar de forma entretenida e inteligible.

#3 Narrativa y visualización: esta combinación tiene como resultado la captación de clientes.

El problema al momento de estudiar Data Storytelling es que su teoría se centra mucho en la parte de datos y de visualización, pero la clave está en saber hacer una buena narrativa, y aquí es donde podemos aplicar todos los conceptos que vimos del Storytelling.

Recordemos lo mencionado al inicio del post: dato que no cuenta algo no sirve de nada, absolutamente de nada.

Ejemplos en casos de Coronavirus

Volvamos al ejemplo coyuntural del Coronavirus, ¿De qué nos sirve repetir estos datos todos los días?

Datos Coronavirus Ecuador

Las gráficas de arriba no contestan ni las preguntas más básicas ¿Cómo avanza la curva de contagios? ¿Los contagios nuevos son mayores o menores a los del día anterior? ¿Cuándo se verán resultados de las medidas de aislamiento tomadas?

Comparemos con las siguientes gráficas.

Gráficos avance coronavirus

El gráfico de arriba parece simple, pero revelaba lo que a muchos sorprendió en los últimos días cuando los casos en Italia comenzaron a desacelerar. Para quienes seguíamos estas gráficas sabíamos que lo más probable era que el crecimiento exponencial dure 31 días, tal cual sucedió en China.

Claro, esto está lejos de contar una historia todavía, veamos otros ejemplos

La gráfica de arriba ya se parece más a una historia, vemos la relación de las medidas de aislamiento tomadas en China con el crecimiento de casos diarios.

Para ver un ejemplo mejor elaborado podemos citar el caso del Financial Times que ha publicado un sitio con muchos gráficos que muestran tendencias y desagrega los datos de contagios a nivel mundial.

Grafico Coronavirus Financial Times

¿Qué importancia tiene el análisis de datos? En este reportaje de la BBC sobre el caso de Singapore demuestra que su clave para contener los contagios no fueron los hashtags, ni la compra de papel higiénico o las críticas al gobierno, la clave fueron los DATOS, Singapore aprendió de la crisis del SARS en 2003 y sabía que la clave para contener los contagios era recopilar todos los datos de los visitantes al país para poder reconstruir su historia de contactos desde su ingreso al país.

Pero no todas las historias tienen que ser con datos super elaborados y luego de grandes análisis matemáticos. Para concluir este post les dejo un ejemplo excelente de cómo contar una historia corta pero muy interesante en estos tiempos de confinamiento.

Artículo relacionado: Introducing the Timeline Storyteller custom visual for Microsoft Power BI

QnA Chatbot con las preguntas más frecuentes sobre Coronavirus COVID19

Durante la pandemia que está viviendo el mundo, hasta la fecha de publicación de este post, la OMS ha recibido más de 5000 preguntas relacionadas con el Coronavirus. En una época donde las noticias falsas o fake news se propagan más rápido que el mismo virus COVID19, es importante informarse por medios confiables y no dar nada por hecho sin antes contrastarlo o confirmar la fuente.

En mi afán de contribuir a frenar la desinformación -y entretenerme mientras pasan estos días de incertidumbre- tomé las preguntas más frecuentes publicadas en el sitio de la OMS y desarrollé un Chatbot para que pueda contestar estas preguntas de la gente.

Para crear un chatbot desde cero y publicarlo en un sitio web usaremos tres componentes.

  • El servicio cognitivo de Microsoft QnA Maker para crear la base de conocimientos.
  • Un Bot Service de Azure para el chatbot como tal.
  • Un App service en Azure para publicar el chatbot en un sitio web.

Primero debemos crear un recurso QnA Maker en el portal de Azure.

Crear QnA Maker Service

Luego de creado el recurso lo utilizaremos en el portal del servicio cognitivo QnA Maker. Debemos entrar al portal, iniciar sesión con la misma cuenta con la que creamos el recurso en el portal de Azure, y crear una nueva base de conocimientos.

El sitio nos guiará por cinco pasos.

El paso 1 lo vamos a omitir ya que el QnA service lo acabamos de crear en el portal de Azure previamente.

En el paso 2 vamos a seleccionar justamente el QnA service creado y el idioma en el que vamos a crear la base de conocimientos.

En el paso 3 le damos un nombre a la base y en el paso 4 vamos a ingresar los documentos con los que se creará la base de conocimientos y se entrenará nuestro chatbot. En este caso usaremos dos páginas de la OMS como documentos fuentes para crear la base de conocimientos y entrenar nuestro chatbot. No es necesario que la página o el documento tenga un formato específico, siempre y cuando la información contenida en él esté clara y bien redactada el servicio lo entenderá.

Azure QnA Maker

En el paso 5 finalmente terminamos de crear la base de conocimientos.

A continuación veremos todas las respuestas que el servicio logró detectar. En este paso podemos ver qué partes del texto el servicio lo entendió y qué partes no. También lo podemos mejorar ingresando nuevas frases similares para las preguntas y enlazar la respuesta de una pregunta con otra.

Una vez preparadas las preguntas y respuestas podemos grabar y entrenar la base de conocimiento, también podemos probar los resultados en el mismo portal.

Una vez tengamos lista la base publicamos el servicio y creamos un bot conectado al mismo.

Chatbot Coronavirus
Chatbot Coronavirus

En este punto nuestro chatbot sobre el Coronavirus ya está creado y listo para usarse un cualquier canal. Si queremos personalizarlo o agregarle más funcionalidad podemos descargar el código y modificarlo usando el Bot Framework de Microsoft

En este caso publicaré el chatbot en un sitio web y lo publicaré en un App service de Azure.

Existen dos formas para publicar el chatbot en un sitio web. La primera es agregar el Web Chat en un iFrame y la segunda es agregar una linea directa para poder llamarla desde el sitio con más opciones de personalización.

El código en JavaScript para invocar al chatbot por linea siguiente es el siguiente:

<!DOCTYPE html>
<html>
   <head>
      <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
      <style>
         html,
         body {
            height: 100%;
         }
         body {
            margin: 0;
         }

         #webchat {
            height: 100%;
            width: 100%;
         }
      </style>
   </head>
   <body>
      <div id="webchat" role="main"></div>
      <script>
         window.WebChat.renderWebChat(
            {
               directLine: window.WebChat.createDirectLine({
                  token: 'YOUR_DIRECT_LINE_TOKEN'
               }),
               userID: 'YOUR_USER_ID',
               username: 'Web Chat User',
               locale: 'en-US',
               botAvatarInitials: 'WC',
               userAvatarInitials: 'WW'
            },
            document.getElementById('webchat')
         );
      </script>
   </body>
</html>

Al código debemos especificarle el código secreto de la linea directa que se puede consultar en el portal.

El paso final es crear un App service en Azure y publicar un sitio web simple con el chatbot implementado con Web Chat o Direct Line.

Nuestro chatbot luce de la siguiente manera y está publicado en esta url.

Chatbot preguntas frecuentes sobre el Coronavirus COVID19

Machine Learning | Clasificación de imágenes con ML.NET y Visual Studio for Mac

ML.NET y .Net Core funcionan muy bien en Mac OS y Visual Studio for Mac, pero a veces requiere la corrección de ciertas excepciones. En este post explico cómo ejecutar un proyecto de clasificación de imágenes con ML.NET 1.4 y .Net Core 3.0 en Visual Studio for Mac.

El proyecto no es necesario desarrollarlo desde cero, para este ejercicio podemos descargar el ejemplo de clasificación de imágenes publicado en el GitHub de Machine Learning Samples. Y desde mi cuenta de GitHub se puede descargar el proyecto actualizado para Visual Studio for Mac.

El proyecto se descarga completo incluyendo el modelo Inception de TensorFlow. TensorFlow es una plataforma con recursos para proyectos de Machine Learning, en este caso usamos un modelo que nos ayuda a obtener las características de una imagen para luego poder clasificarla.

Como en casi toda solución de Machine Learning encontraremos dos proyectos, uno para realizar el entrenamiento del modelo (ImageClassification.Train) y otro para realizar la predicción con nuevas imágenes (ImageClassification.Predict), ambos son proyectos de consola.

La explicación completa del código está en la misma página de GitHub del proyecto.

Machine Learning Visual Studio

La parte más compleja de comprender, y que vale la pena explicarlo, es la construcción del Pipeline. A diferencia de cuando usamos el AutoML para la selección del algoritmo de clasificación, en este proyecto se especifica de forma manual el algoritmo de clasificación a utilizar.

var dataProcessPipeline = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: LabelAsKey, inputColumnName: "Label")
                .Append(mlContext.Transforms.LoadImages(outputColumnName: "image_object", imageFolder: imagesFolder, inputColumnName: nameof(DataModels.ImageData.ImagePath)))
                .Append(mlContext.Transforms.ResizeImages(outputColumnName: "image_object_resized", 
                                                         imageWidth: ImageSettingsForTFModel.imageWidth, imageHeight: ImageSettingsForTFModel.imageHeight, 
                                                          inputColumnName: "image_object"))
                .Append(mlContext.Transforms.ExtractPixels(outputColumnName:"input", inputColumnName:"image_object_resized", 
                                                           interleavePixelColors:ImageSettingsForTFModel.channelsLast, 
                                                           offsetImage:ImageSettingsForTFModel.mean, 
                                                           scaleImage:ImageSettingsForTFModel.scale))  //for Inception v3 needs scaleImage: set to 1/255f. Not needed for InceptionV1. 
                .Append(mlContext.Model.LoadTensorFlowModel(inputTensorFlowModelFilePath).
                     ScoreTensorFlowModel(outputColumnNames: new[] { "InceptionV3/Predictions/Reshape" }, 
                                          inputColumnNames: new[] { "input" }, 
                                          addBatchDimensionInput: false));  // (For Inception v1 --> addBatchDimensionInput: true)  (For Inception v3 --> addBatchDimensionInput: false)

// 3. Set the training algorithm and convert back the key to the categorical values                            
var trainer = mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy(labelColumnName: LabelAsKey, featureColumnName: "InceptionV3/Predictions/Reshape");  //"softmax2_pre_activation" for Inception v1
var trainingPipeline = dataProcessPipeline.Append(trainer)
                                          .Append(mlContext.Transforms.Conversion.MapKeyToValue(PredictedLabelValue, "PredictedLabel"));

Al revisar el código lo primero que vemos es que los datos necesitan una transformación previa con el método MapValueToKey que sirve para transformar los valores en storing de las categorías a valores numéricos, esto mejora el entrenamiento del algoritmo que vamos a usar para la clasificación.

Los pasos para cargar el modelo de TensorFlow son necesarios para que este “caracterice los datos”, es decir, agregue las características que puede detectar en las imágenes en los datos de entrenamiento.

La tarea a utilizar es la de clasificación multiclase (MulticlassClassification) y el algoritmo seleccionado es LbfgsMaximumEntropy, se puede probar el entrenamiento con otros algoritmos pero siempre que sean de la tarea MulticlassClassification.

Una vez que tengamos nuestro proyecto listo y compilado tendremos problemas al ejecutar el proyecto ImageClassification.Train ya que Mac OS requiere de ciertos paquetes para poder usar el modelo de TensorFlow. El error que arroja es el siguiente:

The type initializer for ‘System.Drawing.GDIPlus’ threw an exception. — -> System.DllNotFoundException: Unable to load DLL ‘gdiplus’: The specified module or one of its dependencies could not be found.

Para que el Mac OS reconozca la libreria faltante primero se debe instalar el gestor de paquetes Homebrew con el siguiente commando:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Una vez instalado el gestor de paquetes instalamos la libreria faltante con el siguiente commando.

brew install mono-libgdiplus

Luego de actualizar el proyecto a .Net Core 3.0 y ML.NET 1.4 podemos ejecutar el proyecto ImageClassification.Predict para consumir el modelo creado y realizar las predicciones pero al momento de cargar una imagen arroja la siguiente excepción:

"DllNotFoundException: Unable to load DLL 'tensorflow': The specified module could not be found"

Esto se debe a un bug en las referencias que guarda ML.NET luego de actualizar la versión a la 1.4.0. Para solventar este error de referencias debemos agregar el siguiente paquete Nuget al proyecto ImageClassification.Predict

dotnet add package SciSharp.TensorFlow.Redist

Con estos ajustes se puede ejecutar el proyecto y probar las predicciones con el proyecto de consola.

Artículo relacionado: Segmentación de clientes usando ML.NET

Innovación | 5 tendencias de analítica de datos que toda empresa debe conocer

La analítica de datos, la Big Data y tecnologías relacionadas, se ha convertido en una de las estrategias más importantes para las empresas que buscan digitalizarse y convertirse en empresas centradas en el valor del dato, es decir, su activo más importante será su información. Para esto necesitan desarrollar capacidades para almacenar, procesar y analizar sus datos, las empresas que mejor desarrollen estas capacidades tendrán una ventaja analítica sobre su competencia.

El desarrollo de estas tecnologías estará guiada durante los próximos años por una serie de tendencias relacionadas con la inteligencia artificial y las nuevas capacidades de infraestructuras digitales.

Analítica aumentada

La analítica aumentada hace que la información de la empresa esté disponible para todas las áreas de la empresa, además todos los perfiles deben contribuir a construir la Big Data de la compañía y a analizarla con la ayuda de algoritmos de inteligencia artificial. Las empresas deben invertir en la formación de estos perfiles para no depender de un grupo especialista en análisis de datos, y que son escasos en el mercado.

Para la formación de estos perfiles es importante el trabajo colaborativo y el manejo de herramientas para este propósito, saber de Excel solamente ya no es necesario, la información se debe compartir entre equipos y debe ser visible de forma clara y estandarizada. Herramientas como Teams y Power BI pueden cumplir este propósito y ayudan a democratizar la ciencia de datos.

Gestión de datos aumentada

Para que las empresas puedan construir su Big Data deben automatizar las tareas de administración y gestión de los datos. Aquí entra en juego la inteligencia artificial y el Machine Learning, la implementación de esta tecnología permitirá a las personas a enfocarse en la información que más relevancia tiene para su negocio.

La calidad de los datos automática es un ejemplo de gestión de datos aumentada, cuando queremos depurar grandes cantidades de datos no es necesario hacerlo todo de forma manual, se puede depurar una cantidad representativa de los datos y dejar que un proceso de Machine Learning depure el resto de la base con lo aprendido en la depuración manual, además el mismo proceso puede ser aplicado para cuidar la calidad de nuevos datos que ingresen a la base.

Almacenamiento y procesamiento de datos en la nube

A medida que las empresas van generando su Big Data necesitarán aumentar sus capacidades de almacenamiento y procesamiento de datos, realizarlo en un data center propio puede ser muy costoso y de mucho esfuerzo de administración. Las soluciones en nube proporcionan todas estas capacidades a un bajo costo y además proveen de diversas herramientas para analizar los datos, crear flujos de trabajo, visualizar los datos y seguridades.

Las herramientas de analítica de datos de Azure son un claro ejemplo de cómo la nube puede solucionar el principal reto que tienen las empresas para implementar analítica de datos.

Retos de la analítica de datos.
Tomado de estudio de Gratner
Hiper foco en el cliente

La segmentación por datos demográficos ya debe ser cosa del pasado. Los datos que genera un cliente en cada interacción con la empresa debe servir para generar experiencias únicas. Los cliente cada vez exigen más autoservicio y automatización, quieren más inmediatez y más personalización.

Según Gartner los clientes cada vez más prefieren la atención de bots o por canales menos invasivos como WhatsApp. Los datos nos deben ayudar a dirigir la atención al cliente por el canal y el lenguaje que él prefiera.

Empresas Data Driven

Las tendencias que hemos visto hasta aquí nos ayudarán a que las empresas se conviertan en empresas data driven, donde la cultura del dato esté presente en todos los perfiles y las personas, además de generar datos, sepan cómo contar historias con esos datos. Los datos que no cuentan algo no sirven para nada, esta tendencia es conocida como el data storytelling.

Las empresas digitales van a nacer, crecer y desarrollarse basadas en datos. Por eso muchos expertos hablan de que los datos serán el nuevo petróleo o que la nueva moneda será el conocimiento.

Artículo relacionado: Videos de Machine Learning explicados en español.

Innovación | 5 ideas de automatización para mejorar la productividad en las Pymes.

Cuando iniciamos nuestra jornada de trabajo, en cualquier tipo de empresa en la que trabajes, al final del día siempre nos falta tiempo para cumplir con todas las tareas que teníamos planificadas realizar. Clientes que no atendimos, correos que no respondimos, presentaciones que no terminamos, son casos comunes que ha todos nos ha pasado. Entonces, ¿Cómo podemos ser más productivos en nuestro trabajo sin tener que alargar las jornadas de trabajo?

La automatización de procesos, hoy en día, es fundamental en la productividad de las empresas, incluyendo las Pymes. Automatizar procesos como la atención al cliente o los procesos de ventas será la gran diferencia entre trabajar duro y trabajar inteligente.

A continuación te dejo 5 ideas de automatización de fácil implementación y bajo costo.

1. Implementar respuestas automáticas.

Las respuestas automáticas por correo electrónico o mensajes de WhatsApp pueden parecer un poco impersonales, pero lo cierto es que reflejan una imagen de que la atención rápida al cliente es una prioridad en tu empresa.

Puedes crear una plantilla para tus respuestas utilizando el mismo lenguaje con el que lo haría un ejecutivo de tu empresa. A continuación un ejemplo de una plantilla tomada del blog de Trello.

"Hola, [Nombre],

¡Gracias por contactarnos! Estamos emocionados de que se haya contactado con nosotros. Un asesor de nuestro equipo se contactará con usted a la brevedad.

Sin embargo, dejanos saber si tienes alguna pregunta que podamos responder mientras tanto.

Trata de mantener la plantilla actualizada para el cliente sepa que el correo está siendo atendido y hay personas detrás del mismo. Si en tus redes sociales usas emojis también los puedes usar en las respuestas automáticas.

2. Comienza con un CRM en linea.

Al inicio de un emprendimiento descuidamos el embudo de ventas de los clientes, es cierto, al inicio no son muchos los clientes a los que debes hacerle seguimiento, pero con el tiempo necesitarás organizar tus contactos y potenciales clientes para no perderlos, y nuestro querido Excel con sus tablas y colores no nos será suficiente.

Si no estás listo para comprar un CRM como el de las grandes empresas, puedes comenzar con un CRM en linea que cumpla tus necesidades básicas que normalmente son:

  • Organizar tus contactos
  • Seguimiento de atención y oportunidades
  • Reportes de clientes potenciales y ventas cerradas
  • Asignar clientes a los ejecutivos de ventas

Algo muy útil para comenzar con tu CRM en linea es utilizar herramientas de integración de tu correo electrónico con tu CRM en linea para crear casos de atención cada vez que llegue un correo a una cuenta de soporte. Aquí te dejo un ejemplo de una herramienta de integración de Gmail.

3. Agenda reuniones de forma automatica.

¿Cuánto tiempo pierdes coordinando las agendas de los invitados a tu reunión? Esto lo puedes evitar usando una herramienta de agendamiento de citas. Estas Herramientas permiten enviar tu disponibilidad de tiempo a tus invitados y la herramienta agendará la reunión de forma automática en el mejor horario disponible.

También puedes usar tu CRM en linea para dejar registrado todas las reuniones que tuviste con en cliente y las reuniones pendientes.

4. Utiliza un ChatBot para atender preguntas.

La atención al cliente con un ChatBot no solo aumentará tu productividad, además te dará una imagen de una empresa automatizada e innovadora. Además son de fácil implementación y no se requiere escribir código de programación para iniciar con un ChatBot que atienda los requerimientos más comunes de tus clientes.

Landbot.io Una herramienta de mis favoritas para crear ChatBots ya que todo se puede hacer de forma gráfica y cuenta con muchas herramientas de integración, incluso para WhatsApp.

5. Digitaliza tus documentos.

Si en tu empresa manejas todavía contratos físicos, roles de pagos, formularios de registro, etc. Necesitas urgente dejar esa mala imagen de empresa tradicional y digitalizar todos los documentos que puedas. Solo necesitas una solución de firma electrónica como DocuSign y una cuenta de almacenamiento en la nube como Azure para guardar todos los documentos como PDFs.

La firma electrónica y documentos electrónicos tienen cada vez tiene más validez en todas las instituciones y siempre tendrás la posibilidad de imprimirlos solo en caso que sea necesario.

Nuevamente, no es necesario grandes inversiones en capacidades técnicas, dependiendo del volumen de documentas que requieras firmar y almacenar de forma electrónica encontrarás un plan que se ajuste a tu medida.

Artículo relacionado: ¿Puede una Pyme invertir en transformación digital?

Machine Learning | Segmentación de clientes usando ML.NET

Uno de los casos más comunes con los que se puede ejemplificar una aplicación de Machine Learning es la segmentación de clientes. Algo que todas las empresas desean hacer es identificar grupos de clientes que tengan un perfil similar para poder aplicar acciones sobre ellos, por ejemplo aplicar diferentes campañas de marketing según el perfil de cada grupo. Aquí veremos un ejemplo de cómo realizar una segmentación de clientes usando ML.NET.

El siguiente ejemplo es tomado del proyecto machinelearning-samples y personalizado para incluir la predicción del perfil de un cliente. El código fuente del proyecto personalizado se puede descargar aquí. NOTA: Leer el archivo readme del proyecto luego de leer este post te ayudará a entender mejor el código fuente.

El proyecto plantea el siguiente problema: Cómo identificar diferentes grupos de clientes con un perfil similar pero sin tenerlos clasificados o marcados previamente. Este es un problema muy común en las empresas que desean iniciar una segmentación de clientes pero todavía no saben qué variables utilizar o con qué lista de categorías agruparlos.

Dataset (datos de entrada)

El dataset para generar el modelo de machine learning es un ejemplo de una serie de campañas de marketing y el historial de los clientes que compraron alguna de esas campañas. En el archivo readme del proyecto se explica más sobre este conjunto de datos, aquí no lo detallo mucho ya que la mayoría de estas variables serán descartadas y más adelante se creará una abstracción de estos datos para representarlos en una tabla simple de clientes y ordenes de compra.

Customer segmentation data
Técnica de Clustering

La técnica más recomendada para resolver este tipo de clasificaciones es la técnica de clustering. Una de las ventajas de usar ML.NET para el desarrollo de estos proyectos es que no se requiere ser experto en técnicas y algoritmos de Machine Learning. Por lo tanto, solo es necesario saber que la técnica de clustering es la técnica recomendada para identificar grupos o ‘clusters’ con características relacionadas o similares donde no tenemos una lista de categorías previamente elaborada.

Para determinar el número de clusters en el cual agruparemos nuestros datos utilizaremos un algoritmo llamado k-means. Este algoritmo asigna ejemplos tomados del dataset a un número ‘k’ de clusters. Entender este algoritmo no es complejo pero toma un poco de tiempo, para propósitos de este ejemplo es necesario entender solo tres aspectos.

  • El número ‘k’ de clusters a agrupar es un parámetro que será dado al algoritmo.
  • El algoritmo minimiza la distancia entre un punto de los datos y un punto céntrico llamado centroid o midpoint del cluster.
  • Los clusters se formaran con los puntos que tengan características similares.

Esto se entenderá mejor de forma gráfica más adelante. Para eso usaremos otra técnica de Machine Learning llamada PCA. Esta técnica nos ayuda a tomar un dataset con una serie de variables y encontrar las variables más representativas para trabajar solo con ellas. Está técnica también es conocida como reducción de dimensiones ya que permite tomar un dataset con ‘n’ variables y reducirlas a 2 o 3 variables (x,y,z) para poder representar los datos de forma gráfica.

En resumen: para construir nuestro modelo de segmentación de clientes seguiremos los siguientes pasos.

  • Preparación de la data para armar una tabla simple de clientes y sus ordenes de compra realizadas.
  • Creación de un modelo usando la técnica de Clustering para agrupar los datos según sus características en un número ‘k’ de clusters.
  • Entrenamiento del modelo con nuestros datos.
  • Evaluación de la exactitud del modelo.
  • Consumir el modelo para agrupar clientes en clusters
  • Agregar método de predicción para determinar el cluster al que pertenece un solo cliente.
Preparación de la data.

Una vez descargado el código fuente, encontrarán dos proyectos de consola.

  • CustomerSegmentation.Train En este proyecto se entrena y se crea el modelo de ML.NET
  • CustomerSegmentation.Predict En este proyecto se realizará la clasificación en clusters y la predicción del cluster de un cliente

Para procesar los datos se requiere crear una tabla que una los clientes y las ordenes que compró en un solo registro para que puedan ser analizadas como las características de un cliente. Esto se realiza al inicio del programa con la siguiente linea.

//STEP 0: Special data pre-process in this sample creating the PivotTable csv file
DataHelpers.PreProcessAndSave(offersCsv, transactionsCsv, pivotCsv);

El resultado de esta función es una tabla con la siguiente forma:

En esta tabla las filas representan a cada cliente y las columnas son las campañas realizadas, el valor de las celdas representa si el cliente realizó la compra de esa campaña.

Construcción del modelo

Para construir el modelo en ML.NET se debe definir un Pipeline. En este objeto no se ejecuta ningún proceso, solo se define cómo se va a construir el modelo. La creación del Pipeline se realiza usando el objeto ‘MLContext’ que es el análogo al DBContext en EntityFramework. En este objeto se pueden ir agregando objetos de tipo ‘Transform’ y ‘Trainer’ que son como pasos a seguir para obtener el modelo de ML.NET deseado.

//Create the MLContext to share across components for deterministic results
MLContext mlContext = new MLContext(seed: 1);  //Seed set to any number so you have a deterministic environment

// STEP 1: Common data loading configuration
var pivotDataView = mlContext.Data.LoadFromTextFile(path: pivotCsv,
                                            columns: new[]
                                                        {
                                                        new TextLoader.Column("Features", DataKind.Single, new[] {new TextLoader.Range(0, 31) }),
                                                        new TextLoader.Column(nameof(PivotData.LastName), DataKind.String, 32)
                                                        },
                                            hasHeader: true,
                                            separatorChar: ',');

// STEP 2: Configure data transformations in pipeline
var dataProcessPipeline = mlContext.Transforms.ProjectToPrincipalComponents(outputColumnName: "PCAFeatures", inputColumnName: "Features", rank: 2)
        .Append(mlContext.Transforms.Categorical.OneHotEncoding(outputColumnName: "LastNameKey", inputColumnName: nameof(PivotData.LastName), OneHotEncodingEstimator.OutputKind.Indicator));
                

// STEP 3: Create the training pipeline                
var trainer = mlContext.Clustering.Trainers.KMeans(featureColumnName: "Features", numberOfClusters: 3);
var trainingPipeline = dataProcessPipeline.Append(trainer);

Los pasos definidos en este Pipeline son:

  • Cargar los datos desde el archivo .csv generado anteriormente, se define una columna de tipo vector con el nombre ‘Features’ para cargar los valores de las campañas compradas por el cliente (las columnas 0-31 del archivo .csv), se define además una columna “LastName” para cargar el nombre del cliente (la columna 32 del archivo .csv).
  • Luego de cargados los datos se los debe procesar. Agregando la transformación (‘Transform’) ‘ProjectToPrincipalComponents’ se está aplicando la técnica PCA para tomar solo las 2 columnas más relevantes (parámetro ‘rank’) para la construcción del modelo y los clusters.
  • El tercer paso es definir el algoritmo de entrenamiento a utilizar. En este caso se utiliza el algoritmo ‘Kmeans’ al cual se le pasan dos parámetros: ‘featureColumnName’ es el nombre de la columna con las características a evaluar, en este caso “Features”, y ‘numberOfClusters’ es el número de clusters en el que se desea agrupar los clientes durante el entrenamiento.
Entrenamiento del modelo

Luego de definir el Pipeline para la creación del modelo podemos pasar al entrenamiento del modelo. Esto se realiza utilizando los datos cargados anteriormente en el objeto ‘pivotDataView’ y ejecutando la siguiente instrucción.

//STEP 4: Train the model fitting to the pivotDataView
Console.WriteLine("=============== Training the model ===============");
ITransformer trainedModel = trainingPipeline.Fit(pivotDataView);
Evaluar el modelo

La evaluación de la precisión de un modelo suele ser un capítulo entero en un curso de Machine Learning. Para nuestra fortuna ML.NET tiene ya implementadas las funciones de evaluación como la matriz de confusión y UAC para solo utilizarlas y saber si nuestro modelo es confiable o no. Esto lo realizamos con las siguientes instrucciones.

//STEP 5: Evaluate the model and show accuracy stats
Console.WriteLine("===== Evaluating Model's accuracy with Test data =====");
var predictions = trainedModel.Transform(pivotDataView);
var metrics = mlContext.Clustering.Evaluate(predictions, scoreColumnName: "Score", featureColumnName: "Features");

ConsoleHelper.PrintClusteringMetrics(trainer.ToString(), metrics);

En el objeto ‘metrics’ se cargarán los valores de la calificación del modelo, mientras más cercanos sean a 1 los valores de la calificación más confiable será el modelo construido.

En este punto ya tenemos un modelo entrenado y evaluado, lo único que resta es grabar en modelo en un archivo .zip con las siguientes instrucciones.

//STEP 6: Save/persist the trained model to a .ZIP file
using (var fs = new FileStream(modelZip, FileMode.Create, FileAccess.Write, FileShare.Write))
    mlContext.Model.Save(trainedModel, pivotDataView.Schema, fs);

Si ejecutamos todos los pasos vistos hasta ahora y contenidos en el proyecto ‘CustomerSegmentation.Train‘ se verá una aplicación de consola que imprimirá los resultados de la siguiente forma.

Customer segmentation train
Consumir el modelo.

Para consumir el modelo que acabamos de crear vamos a usar el proyecto ‘CustomerSegmentation.Predict‘. Para consumir el modelo vamos a seguir tres pasos.

  • Cargar el modelo de ML.NET
  • Cargar los datos nuevos a predecir.
  • Ejecutar la predicción del modelo con el método ‘Transform’

Para este propósito se ha creado la clase ‘ClusteringModelScorer’ con los métodos necesarios para ejecutar les tres pasos indicados.

La carga del modelo se lo realiza con el siguiente método.

public ITransformer LoadModel(string modelPath)
{
    _trainedModel = _mlContext.Model.Load(modelPath, out var modelInputSchema);
    return _trainedModel;
 }

La carga de los datos a predecir es muy similar a la carga de datos que se realizó para el entrenamiento del modelo, se utiliza la misma estructura del archivo pivot.csv y la misma se define en el método ‘LoadFromTextFile’.

var data = _mlContext.Data.LoadFromTextFile(path:_pivotDataLocation,
                            columns: new[]
                                        {
                                          new TextLoader.Column("Features", DataKind.Single, new[] {new TextLoader.Range(0, 31) }),
                                          new TextLoader.Column(nameof(PivotData.LastName), DataKind.String, 32)
                                        },
                            hasHeader: true,
                            separatorChar: ',');
            
//Apply data transformation to create predictions/clustering
var tranfomedDataView = _trainedModel.Transform(data);
var predictions = _mlContext.Data.CreateEnumerable <ClusteringPrediction>(tranfomedDataView, false)
      .ToArray();

//Generate data files with customer data grouped by clusters
SaveCustomerSegmentationCSV(predictions, _csvlocation);

El resultado de la ejecución de este código será la clasificación de los datos ingresados en los respectivos clusters a los que cada cliente corresponda según sus características.

Si ejecutamos el proyecto el resultado en consola se verá de esta forma.

Customer Segmentation Console

Adicionalmente el método ‘SaveCustomerSegmentationPlotChart()’ grabará un gráfico XY con la representación gráfica de los clientes y sus clusters diferenciados por colores, de la siguiente forma.

Customer Segmentation

En el gráfico anterior se puede ver tres diferentes clusters, o grupos de clientes. En este caso dos de ellos están bien diferenciados (cluster 1 en azul y cluster 2 en verde). Sin embargo, algunos clientes del cluster 3 estás sobrepuestos con algunos clientes del cluster 2, lo cual también puede pasar con grupos de clientes.

Predicción

Hasta aquí el proyecto solo realiza la clasificación de un grupo de clientes y su resultado se graba en un archivo de texto. Pero en casos más reales seguramente vamos a necesitar realizar la predicción de un cliente nuevo para saber en qué grupo o cluster encaja. Para esto, en proyecto personalizado, he agregado el método ‘PredictCustomerClusters’ que realiza la predicción de un cliente.

El primer paso es definir un objeto ‘ModelInput’ con la misma estructura que el archivo de texto pivot.csv. Solo por efectos de este ejemplo, la clase está definida en el mismo archivo ‘ClusteringModelScorer’.

private class ModelInput
{
    [LoadColumn(0), VectorType(32), ColumnName("Features")]
    public float[] Features = new float[31];

    [LoadColumn(1), ColumnName("LastName")]
    public string LastName;
}

El siguiente paso es crear un objeto ‘CreatePredictionEngine’, el cual contiene un objeto de entrada (ModelInput) y uno de salida (ClusteringPrediction). Luego instanciamos un objeto ‘ModelInput’ simulando ser el cliente nuevo que queremos predecir su clasificación.

Finalmente, invocamos el método ‘Predict’ de nuestro objeto ‘CreatePredictionEngine’ y le pasamos como parámetro la data de nuestro objeto ‘ModelInput’. El método completo quedará de esta forma:

public void PredictCustomerClusters()
{
    var predEngine = _mlContext.Model.CreatePredictionEngine<ModelInput, ClusteringPrediction>(_trainedModel);

    //Load sample data for prediction
    var data = new ModelInput
    {
        Features = new float[] { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
        LastName = "Mera"
    };

    // Try model on sample data
    ClusteringPrediction result = predEngine.Predict(data);
    List<ClusteringPrediction> enumResult = new List<ClusteringPrediction>
    {
        result
    };

    Console.WriteLine($"\nCustomer: {data.LastName} | Prediction: {result.SelectedClusterId} cluster");
    Console.WriteLine($"Location X: {result.Location[0].ToString()} | Location Y: {result.Location[1].ToString()} ");

    SaveCustomerSegmentationPlotChartSingle(enumResult.ToArray(), "customerSegmentation2.svg");
    OpenChartInDefaultWindow("customerSegmentation2.svg");
}

Para ejecutar la predicción debemos reemplazar en el archivo ‘Program.cs’ el método original ‘CreateCustomerClusters’ por nuestro nuevo método ‘PredictCustomerClusters’. El resultado de la ejecución se verá en la consola de la siguiente forma.

Diviértanse descargando el proyecto y aplicando todas las mejoras que se les ocurra!

Artículo Relacionado: Videos de ML.NET – Machine Learning explicados en español.

Scrum explicado con Masterchef

Este quizá sea el post más bizarro que he escrito hasta ahora, pero me servirá para probar un concepto y será de una forma más divertida que con un post tradicional de un blog de tecnología y transformación digital.

Masterchef se ha convertido en uno de los programas de televisión favoritos en Ecuador, Colombia, Argentina y otros países de Latinoamérica, y no solo entre los aficionados a la cocina, y yo soy uno de esos aficionados.

Hace poco comencé a utilizar a Masterchef como analogía para explicar los roles y los elementos de la metodología Scrum (marco de trabajo para los puristas) y esto me ayudaba a probar dos puntos. Lo fácil que es comprender la metodología, y demostrar que Scrum sirve para cualquier tipo de proyecto o trabajo en equipo, y no solamente para proyectos tecnológicos.

Mis capítulos preferidos de Masterchef siempre han sido los retos de campo, donde tienen que trabajar en equipo y con recursos limitados para prepara la comida de exigentes comensales. Pero para los concursantes estos retos siempre son los más complicados y siempre se escucha al final las mismas frases: “nos faltó organización”, “nos faltó trabajo en equipo”, “un líder tiene que saber delegar”, “no se tenían claras las tareas”, “hay que correr al inicio para no correr al final¨” y por supuesto la clásica “nos faltó tiempo”. Aquí es dónde el fracaso de los capitanes me sirve para explicar los elementos de Scrum

Scrum es un marco de trabajo diseñado para desarrollar proyectos complejos que se caracterizan por ser dinámicos y cambiantes y que requieren trabajo en equipo. Scrum se basa en iteraciones, es decir, el proyecto se divide en entregas parciales e iterativas que agreguen valor al cliente hasta obtener el producto final.

Los principales roles de Scrum.

El producto owner es el encargado de definir los objetivos del proyecto, reglas, entregables y sobre todo sus prioridades, este perfil es quien conoce del negocio y por eso puede dar las definiciones claves del proyecto, además representa la voz del cliente y del resto de interesados no implicados directamente en el proyecto. En nuestra analogía con Masterchef, el producto owner son los tres chefs que además son los jueces de la competencia, ellos definen los menús a preparar, las reglas del juego y además los plazos de entrega, pero ellos no preparan la comida.

El Scrum Master es quien domina la metodología Scrum y es además un líder técnico y servicial, tiene mucho conocimiento técnico para ejecutar el desarrollo o creación del producto, y se define como un líder servicial ya que debe resolver los conflictos que se presenten dentro del equipo de trabajo. Este es el rol que cumplen (o al menos intentan) los capitanes de los retos de campo. Son nombrados capitanes porque destacaron en algún reto anterior, son los que designan tareas al equipo para cumplir con el objetivo pedido por el product owner (los chefs) y además son los encargados de resolver los problemas que se van presentando en la cocina.

El Scrum Team lo conforman todos los miembros del equipo dedicado al desarrollo o creación del producto, son por lo general personas técnicas pero pueden ser también multidisiplinaro. Una característica importante del Scrum Team es que es un equipo auto organizado y debe requerir poco seguimiento y dirección, por este motivo en Scrum no hay roles de jefes o directores. Siguiendo con la analogía de Masterchef, el Scrum Team lo conforman los cocineros de los equipos, ellos reciben las tareas por parte del capitán pero tratan de realizar sus preparaciones sin intervención del capitán hasta que la preparación esté lista (al menos lo intentan) en ocaciones un miembro del Scrum Team puede recibir lineamientos directamente del product owner (los chef).

Artefactos y funcionamiento de Scrum.

Una vez identificados los roles de Scrum, veamos cómo funciona la metodología (marco de trabajo) y sus artefactos.

La metodología Scrum inicia cuando todo el equipo se reúne para elaborar el llamado Product Backlog. Este es un documento (no tiene un formato específico solo se requiere que sea claro y entendible) que contiene las historias de usuario (requerimientos) y las tareas que definen y se requieren para desarrollar el proyecto o producto. El dueño de este documento es el product owner y solo él puede modificar prioridades o alcances. En Masterchef vemos este evento al inicio de los retos cuando los chefs explican el menú que requieren se elabore, las reglas o ingredientes a utilizar y el tiempo para entregar el producto.

El siguiente elemento importante de la metodología es la definición del Sprint Backlog. Aquí es donde el proyecto grande se comienza a dividir en entregables más pequeños. El sprint backlog contiene las historias y tareas a ejecutarse durante un período corto de tiempo llamado Sprint. Estos entregables más pequeños son definidos según su prioridad y valor para el cliente y la duración del Sprint debe ser de una semana o cuatro semanas como máximo. Aquí es donde la organización de los equipos en Masterchef comienzan a fallar, el definir objetivos cortos les puede ayudar a ¨”correr al inicio para no correr al final”. Por ejemplo, la elaboración de un menú puede ser dividido en cuatro entregables y sprints:

  • Sprint 1: 30 minutos de duración; entregable: proteína cocinada.
  • Sprint 2: 15 minutos de duración; entregable: guarnición elaborada.
  • Sprint 3: 15 minutos de duración; entregable: salsa elaborada.
  • Sprint 4: 15 minutos de duración; entregable: emplatado.

Para cumplir los objetivos de cada sprint es importante enfocar el trabajo de todo el equipo al sprint que se está ejecutando y evitar los trabajos en paralelo que no agregan valor.

Eventos de Scrum.

En Scrum el control y revisión de los objetivos se realiza mediante eventos o reuniones que buscan ser lo más productivas posibles. Para planificar el trabajo de un sprint se debe realizar una Sprint Planning Meeting donde participa todo el equipo pero el Product Owner es quien prioriza las tareas del product backlog a realizar.

Para revisar el avance del trabajo del sprint se realiza una reunión diaria, de 15 minutos máximo, llamada Daily Scrum. Esta revisión es equivalente a la revisión que cada cierto tiempo realizan los chefs para revisar que se esté cumpliendo el objetivo y corregir ciertos errores si es necesario. Esta revisión también deberían hacerla los capitanes como Scrum Masters.

Una vez terminado el tiempo del sprint se debe revisar el trabajo realizado en una reunión llamada Sprint Retrospective. Esta tiene como objetivo revisar si el objetivo se cumplió y qué se puede mejorar para trabajar con más velocidad. Esta es otra falla en la organización de los equipos en Masterchef, la revisión de resultados se realiza solo al finalizar el reto cuando los chefs descargan su enojo sobre los cocineros, cuando esta revisión la deberían hacer los capitanes durante el tiempo del reto para ir mejorando el trabajo en equipo y su velocidad.

Beneficios de Scrum.

Scrum es ideal para mejorar el trabajo en equipo, logrando que estos puedan desarrollar productos de forma más rápida y con mejor calidad. Fomenta el enfoque en el trabajo que agrega valor al cliente. Reduce el esfuerzo de supervisión ya que promueve la auto organización y el compromiso de todo el equipo de trabajo para lograr el objetivo común.

La adopción de esta metodología en las organizaciones permite reducir el tiempo de desarrollo de productos, y transforma a las organizaciones en organizaciones más flexibles y adaptables al cambio en un entorno altamente competitivo.

Artículos relacionados

10 increíbles trucos de productividad que comparten la gente altamente productiva y las metodologías ágiles

Mucha gente comparte sus recomendaciones para ser más productivos en el trabajo, pero es un error asumir que lo que me funciona a mi funcionará con las demás personas.

Por ejemplo, una persona podrá ser altamente productiva haciendo ‘multi-tasking’ pero en realidad la mayoría de personas necesitamos enfocarnos en una sola tarea sin distracciones para poder completarla eficientemente.

Las metodologías ágiles como Lean, Lean Startup o Scrum, proporcionan herramientas y hábitos de productividad realmente probados y que han funcionado desde hace mucho tiempo en el mundo del desarrollo de software y proyectos tecnológicos.

Ahora las metodologías ágiles como Scrum se están extendiendo a todo tipo de negocio por el gran impacto que genera su adopción y sus principios son compartidos con las personas altamente competitivas.

El Centro de Investigación de Ventas del Grupo RAIN estudió a más de 2.300 personas altamente productivas para determinar qué hábitos laborables son los que comparten entre si y se pueden aplicar a diferentes ámbitos.

Cuando vi los resultados me llamó la atención la similitud que tienen con los hábitos que nos enseñan las metodologías ágiles como Scrum, por lo que aquí resumo los 10 trucos más importantes y su forma de aplicarlos.

1. Planean sus actividades de manera semanal

El cincuenta por ciento de las personas estudiadas planean sus tareas de forma semanal. Tal cual como Scrum nos recomienda trabajar en sprints cortos de 2 semanas con un entrañable objetivo al final del sprint.

2. Invierten mejor su tiempo

Casi la mitad del grupo estudiado dedican la mayoría de su tiempo a tareas que le den mejores resultados. Al igual que las metodologías ágiles que nos enfocan a trabajar por objetivos.

3. Se concentran

Las personas altamente productivas logran entrar en una “zona” de productividad y concentración. Para lograr una alta concentración es necesario no tener impedimentos que nos impida culminar una tarea, ese es trabajo de un Scrum Master dentro del equipo.

4. Fraccionan las grandes tareas un unas más pequeñas

Un tablero Kanban puede ser una gran herramienta para dividir tareas que cumplan un objetivo más grande y mantener el estado de las tareas terminadas y las que quedan pendientes.

5. Empiezan con la actividad de mayor impacto

Scrum nos enseña que las tareas siempre deben tener una prioridad, cuando todo es importante nada es importante .

6. Monitorean su progreso de forma semanal

Casi la mitad de las personas altamente productivas revisas semanalmente el cumplimiento de sus objetivos. Este tipo de reuniones se llaman Scrum Retrospective, donde se evalúa el resultado y cumplimiento del objetivo del sprint realizado durante la semana,

7. Tienen sus objetivos por escrito

La visibilidad de un tablero Kanban y el objetivo del sprint que se está ejecutando es fundamental para que las personas no desvíen su atención o trabajo que no les lleva a cumplir los objetivos planteados

8. Dedican tiempo a lo que aman

El 38 por ciento de las personas estudiadas manifiestan que disfrutan del tiempo que le dedican a las cosas que aman. Al igual que la motivación y la auto-organización que tiene los equipos Scrum que hace que requieran poca supervisión para que cumplan con sus tareas.

9. No reaccionan a la agenda de los demás

El 35 por ciento de las personas estudiadas reconocen que manejan su propia agenda y no reaccionan a las agendas de los demás. Esto lo podemos comparar con la función que cumple el Product Owner en un equipo Scrum, donde las tareas que son priorizadas no se pueden cambiar por nadie, al menos que el Producto Owner lo autorice.

10. Dicen que no

Las personas altamente productivas dicen que no un 3.7 veces más que el resto de personas. Esto es lo más complicado de lograr para alcanzar la disciplina que exige una metodología ágil, pero es clave decir que no a todas las personas y actividades que nos puedan distraer de cumplir los objetivos semanales y del proyecto.

Adoptar todos estos hábitos en una sola persona y en el corto plazo es muy complicado, por eso los equipos ágiles deben complementarse con personas que cumplan con la mayor cantidad de habilidades posibles y las contagien permanentemente dentro del equipo.