lunes, 14 de mayo de 2018

Mas mujeres en ingenieria... Discurso en USAID año 2016


Buenos días, mi nombre es Juliana Ceballos, soy Colombiana de nacimiento pero enamorada de El Salvador por lo que me nombro salvadoreña de corazón. Tengo 30 años, y trabajo en tecnología desde hace 10 años. Soy ingeniería de sistemas y me dedico a los procesos de construcción de software. En Avianca me desempeño como Directora de Arquitectura y Desarrollo para todo el conjunto de aerolíneas del holding de Avianca y quiero contarles hoy mi experiencia como una mujer en tecnología y sobre todo vengo a mostrarles como las carreras tecnológicas son una alternativa real de empleo, de desarrollo y de búsqueda de real riqueza en nuestro país y como las mujeres somos clave para el desarrollo de estos rubros en nuestra región. Hay una escasez de mujeres que estudian ingeniería, especialmente Ingeniería de software. Pero las mujeres que optan por entrar en la industria tecnológica de una manera u otra están haciendo un trabajo muy importante, vital para el crecimiento de las tecnologías a nivel mundial, mujeres como:
SHERYL SANDBERG – Directora de operaciones de Facebook
MEG WHITMAN – CEO de HP
MARISSA MAYER – Presidenta de Yahoo
Pero no nos vayamos tan lejos, esto no es algo que no sea real en nuestro país, en mi equipo, trabajamos más de 100 personas en la construcción de todos los sistemas que se usan para Avianca a nivel mundial, la mayoría del equipo son hombres, profesionales excelentes, pero también tengo un equipo de mujeres maravillosas, algunas aquí presentes, que aportan un valor fundamental a lo que hacemos día a día en nuestro trabajo, son dedicadas, excelentes programadoras, con iniciativas novedosas que hacen la diferencia en lo que diariamente construimos. Sin embargo los números no mienten, la proporción de mujeres en la industria es menor al 15%, uno de los principales motivos de esta menor presencia femenina en empresas tecnológicas es un problema de base y reside en la educación y en la ausencia real de mujeres profesionales que motiven a las nuevas generaciones a ingresar a estos ámbitos, por eso estamos aquí, por eso este proyecto, y sobre todo por eso mi presencia hoy aquí, para  compartirles mi experiencia como mujer en el mundo de la ingeniería y las carreras tecnológicas, para motivarlos a prepararse en ingenierías y para ser testimonio de que las mujeres en estas carreras podemos ser exitosas.  
Inicie mi vida laboral al tiempo que aun estudiaba en la universidad y ya en la universidad éramos pocas mujeres y menos aun las que finalizábamos la carrera, pero siempre sobresalíamos, estudie con mujeres que hoy en día son muy exitosas, tienen sus empresas o trabajan en empresas de primer nivel, son independientes económicamente y muchas somos esposas y madres, tenemos roles importantes en el hogar pero también en nuestros trabajos. Y es que ser mujer y tener un rol clave en el hogar no nos aleja de ser  capaces de prepararnos como excelentes ingenierías, culturalmente debemos entender que los roles del hogar no deben alejarnos de la preparación profesional y que una ingeniera puede ser también esposa y madre, no son roles en contraposición, muy al contrario son roles complementarios que nos forman como personas integrales, que podemos aportar aún más a nuestras familias y a nuestra sociedad que tanto lo necesita.
Esto es también un llamado a los hombres que nos acompañan hoy, para los que son padres, apoyen a sus hijas en sus aspiraciones de prepararse en carreras de tecnología, y preparen a sus hijos para que al formar una familia trabajen en conjunto con sus parejas, y sean ese apoyo que las mujeres profesionales necesitamos, porque cuando logramos ser exitosas y llegar lejos, es un logro de los dos, es un equipo que alcanza el éxito en el ambiente profesional, necesitamos también más hombres orgullosos de ver a las mujeres de su familia siendo ingenieras.
Durante mis distintas experiencias de trabajo he tenido la oportunidad de aprender de muchos profesionales competentes, y he podido también darme cuenta de la importancia que tenemos las mujeres en el mundo de la ingeniería. Nuestra visión es clave, somos organizadas, logramos solventar problemas realmente complejos porque tenemos un pensamiento analítico extraordinario, somos determinadas y tenemos una fuerza de voluntad irrompible, somos persistentes en lo que nos proponemos, y tenemos las mismas capacidades que cualquier otra persona para distinguirnos en nuestras funciones diarias.
Quiero además desmitificar que hace un ingeniero de sistemas, a que nos dedicamos,  y decirles que nuestra profesión es un proceso de hacer realidad ideas, de crear productos nuevos, de innovar, ver a una maquina ejecutar actividades que tu programas es emocionante, es una profesión apasionante y un constante reto, las tecnologías cambian todos los días,  tenemos que mantenernos preparados, actualizados en todos los nuevos temas, lo que aprendemos va cambiando y evolucionando con mucha rapidez, es una profesión exigente, pero también es una profesión que esta cambiando al mundo, lo que hacemos es disruptivo para la sociedad, el celular, las impresoras 3D o los drones, la sociedad actual está definida por la tecnología, así que nosotras, las que trabajamos en tecnología estamos cambiando al mundo.  Esto también asegura que tenemos muchas oportunidades de conseguir empleo, o de hacernos emprendedores, en Colombia, un país de aproximadamente 48 millones de habitantes el déficit de ingenieros en sistemas es de más de 15.000 profesionales, y estamos dejando fuera a la mitad de la población del mundo, a las mujeres.
 Gracias señores USAID, universidad Don Bosco y todos a quienes aportan para este proyecto, hoy les dejo, más allá de estas palabras, mi compromiso de apoyar esta iniciativa en todo lo que me sea posible, y a ustedes señoritas espero poder verlas pronto como ingenierías, caminando ojala en los pasillos de Avianca

Gracias,

miércoles, 9 de mayo de 2018

Continuación implementando machine learning

Dando continuidad a mi entrada pasada, quiero hablar de los siguientes pasos aplicados en proyectos reales para la implementación de machine learning. Ya aborde en la entrada anterior lo referente a identificar fuentes, dolores, entregas rápidas. En esta ocasión quiero hacer un detalle un poco más técnico arquitectónico. Como parte del ejercicio buscaré a un especialista en el tema de modelos que quiera compartir una entrada sobre ese tema en específico, pues no es mi especialidad, se las debo.
Pero puedo profundizar en todo el detalle sobre la arquitectura técnica de la solución. 
La primera pregunta que deberíamos hacernos a nivel técnico es cual es nuestra arquitectura de datos actual? Ya la tenemos levantada según mi entrada pasada en la fase I, pero y que tan lista está esa arquitectura para montar el modelo de machine learning? Bueno pues depende del modelo, el consumo, el valor del mismo entre otros. Y es que muchas consultorías te abordan desde la implementación de un lago de información y un montón de prácticas y tecnologías necesarias, pero no indispensables, al menos para empezar. 
Como siempre digo, empezar pequeño, para poder dar valor rápido, comprar adeptos y seguir avanzando, es natural, tengo una mente agile, y me cuesta pensar de otra forma. 
Regresando a la arquitectura necesaria, no existe una única receta y depende, en mi experiencia, he trabajado de dos formas porque tuve dos necesidades diferentes, una de consumo masivo, en línea, combinando mucha información procesada, con información cruda y una pobre definición inicial del modelo, se conocía bastante lo que se quería, pero no existía un madurez que permitiera identificar fácilmente variables necesarias, cálculos, entre otros. 
En este primer caso mi recomendación es si o si asegurarnos de contar con un eSpacio propicio y dimensionado (costo\espacio\disponibilidad) para hacerlo. Esto definitivamente puede ser un lago, que nos permita no deteriorar el modelo transaccional por la cantidad de uso de los datos, además por la cantidad de datos necesaria pero sobre todo por las características exploratorias del modelo.  No necesariamente debes iniciar con el lago pero tenerlo en el plan es clave y en la arquitectura. Lo único peor a que el modelo no funcione es que además arruine la transaccionalidad que está funcionando. 

Otro tipo de proyecto al que me he enfrentado en este tema, es donde el alcance del modelo es claro pero limitado, con data ya existente y modelos que no son realmente nuevos, solo su despliegue con características adicionales de machine learning es el alcance. Se entiende la implementación de este proyecto como un modo de consumir los modelos a travez de api, esto es cierto pero no es el alcance de un proyecto de estos. Estos proyectos normalmente buscan comparar estas nuevas tecnologías con algoritmos existentes y suelen existir en empresas más cautelosas y que además tienen prácticas de análisis de datos más maduras. En este caso, la clave es arrancar con lo que tenemos, seguramente el consumo no será tan en línea y masivo y si lo es, seguramente no es una carga adicional pues ya existe con modelos existentes en las bases de datos, no arruinarás nada.
En este caso el lago puede esperar un par de iteraciones mas, pero debe de suceder, pues de lo contrario el modelo de machine learning no podrá agregar valor, no será más de lo que ya existe, se percibirá como una tecnología para consumir análisis de datos ya existentes, es como tener un ferrari para manejarlo a 10km por hora.


Sea cual sea el caso, alguno de estos dos o diferentes, siempre es clave recordar la entrega rápida de valor, aprovechar lo que ya se tiene, dibujar desde temprano la arquitectura objetivo, considerar un modelo de almacenamiento propicio para estos modelos que puede o no ser un lago, y validar que no siempre es un must y no siempre tienes que tenerlo todo desde el inicio. Si me permiten dar una opinión personal, este tema tan recurrente en mis entradas, es en mi análisis una de las razones por las que en Latinoamérica nos cuesta tanto innovar, hacer proyectos, implementar, hacer y dejar de decir, y es que queremos tenerlo todo listo, todo fácil, buscamos siempre todo lo que nos falta y no miramos todo lo que ya tenemos. Siempre recuerdo un libro que leí hace unos años sobre la ventaja competitiva, algo que nos diferencia de los jAponeses es que allá nacen acostumbrados a no tener recursos, ni espacio, ni agricultura, ni nada. Nosotros nacemos acostumbrados a tenerlo todo fácil, cerca y sin obstáculos, por lo que frente a una sábana blanca de oportunidades nos enfocamos siempre en el pequeño punto negro que lo decora.

jueves, 3 de mayo de 2018

Haciendo un proyecto de machine learning

Muchos productos en el mercado tecnológico actual esta enfocados en soluciones de machine learning, y algunos equipos de consultoría aún más atrevidos abordan el concepto desde Big Data, uno de esos conceptos que son usados por muchas empresas, consultorías y gurús tecnológicos sin conocer en realidad su significado. En esta entrada quiero enfatizar en un proceso aplicado y que ha funcionado en mi experiencia para implementar este tipo de proyectos en el orden correcto, con las expectativas adecuadas, con tiempos competitivos y presupuestos que no pongan en aprieto demostrar el ROI de este tipo de iniciativas. Lo dividiré en distintas entradas, y en esta me enfocare en la base de todo, la data de origen procesada por el modelo.
Primero quiero detenerme a hablar un poco de Big Data, y aclarar que en mi percepción practica (no teórica), el big data no es más que el aprovechamiento de datos que antiguamente no eran almacenados ni aprovechados de una forma ordenada por las organizaciones, y esto incluye datos de todos los tipos, o como la teoría los llama, estructurados y no estructurados. Y si claro, es una cantidad inmensa de datos, solamente evaluemos cuantos datos residen en las cabezas de nuestros colaboradores, y que actualmente no se encuentran en un sistema de almacenamiento tecnológico, estamos hablando de millones de datos. Este enfoque nos hace confirmar que la data de nuestra empresa es una mina de oro, pero lastimosamente a veces nos enfocamos tanto en esto, que olvidamos la pequeña data, aquella que ya reside en un sistema de almacenamiento y que no estamos aprovechando, no digo que el big data no debe hacerse, pero no es más que una administración efectiva y en masa de data de todo tipo estructurada y no.
Ahora, enfocándome más en el tema de modelos de “machine learning”, pues estos están directamente relacionados con el big data, evidentemente entre más data tengamos, nuestros modelos pueden ser mucho más exactos, esto no es algo nuevo, los modelos de probabilidad y muestreo nos lo enseñan de manera teórica desde hace muchos años. Sin embargo, yo debo decir que difiero en mencionar que la cantidad de datos está directamente proporcionada con la calidad de los análisis de machine learning, pues no solo la cantidad, sino la calidad (completitud, correctitud e idoneidad) son fundamentales para que los resultados de estos modelos se acerquen a lo esperado, o a lo inesperado, pero realmente predictivo que las industrias están esperando.
Nuevamente, la tecnología de implementación, si hacemos un lago o no, y que herramienta de ML implementamos, o inclusive, si es necesario implementarla o no, son de las decisiones menos trascendentales de este tipo de proyectos. Sin más explicación, quiero compartir con ustedes las claves que en mi experiencia me han llevado a abordar y ejecutar este tipo de proyectos con éxito en el pasado: (FASE I, fuentes de los modelos)
1.       Todo inicia en la arquitectura: Se que esto es común en mis publicaciones y en el tema de datos no es la excepción. La arquitectura es la base y en este tipo de proyectos identificar el AS IS es importante, yendo más de los típicos activos de datos transaccionales. Pero como puede ser un trabajo sin fin, en la primera iteración es importante dejarlo tan general como sea posible, nombres de fuentes como máximo. Si tratamos de hondar más es posible que no salgamos nunca de este primer paso.
2.       Priorizar valor: Aunque toda la data es importante, no toda genera el mismo valor, y no es la misma en todas las organizaciones, depende mucho de la realidad de cada una, la industria, sus mayores dolores entre otros. No puedo decirles cual será el mayor valor, depende de la organización donde estén realizando el ejercicio, lo que si les puedo decir es que deben identificarlo para dar un alcance real a la iniciativa.
3.       Modelar entradas y corregir lo necesario desde el origen: Una vez se identifique el punto 2, debemos analizar las fuentes del primer punto que son necesarias para alcanzar ese valor. Y de esas fuentes debemos identificar la calidad de los datos que tenemos, para asegurar el nivel de acierto que tendrá el modelo, así como considerar el costo vs beneficio y reconstruir la data que consideremos necesaria. Lo que decidamos corregir, debemos asegurar que sea desde la raíz y como siempre defino, las tres variables, el proceso que genera el input de los datos, las personas pues deben capacitarse y finalmente el sistema o tecnología en la que se captura el input. Debe de corregirse de raíz para que esta iteración sea cada vez más corta.
4.       Pequeños alcances y grandes resultados: La data en una organización moderan es BIG desde su origen, porque esta alimentada por fuentes terceras que tienen un altísimo flujo de datos de interés. Redes sociales, centros comerciales, tarjetas de puntos, bancos, etc. Entonces, pensar en cubrir todo el universo de los datos a la primera es imposible. Es importante definir un alcance orientado a los pain points más grandes. Empezar en este punto y dejar lo demás de lado, además de no permitir que los demás participantes del grupo, quieran moverse a la perfección de la totalidad del universo de los datos, de lo contrario, no acabaras nunca.
Finalmente, es importante mapear el alcance y las iniciativas a tomar a los objetivos de negocio, y entender que no toda la data genera el mismo valor para todas las organizaciones y que por lo tanto en algunas ocasiones es más eficiente renunciar a algunos de estos datos por lo menos en ese momento. Para esto trato de usar el esquema de almacenar todo lo existente, tal vez no todo podre usarlo el día 0, pero reducir la perdida al mínimo, pensando en un futuro que puede ser en estos temas muy incierto.
En esta primera entrada describo el primer paso, trabajar con la data de origen. Esto es fundamental, pues no solo podemos considerar el volumen de datos sino la calidad, y trabajar para de raíz asegurarnos que los problemas de calidad queden sanados en la data a usar en le modelo, de lo contrario, si lo que entra no es de calidad, lo que saldrá, tampoco lo será. Como siempre la agilidad, el alcance corto y el valor rápido son fundamentales. Empecemos con la data relevante para el primer modelo y luego desde ese punto seguimos avanzando. Definamos iteraciones cortas de limpieza, no olvidemos incluir siempre la raíz.
En la próxima entrada continuare hablando sobre este tema, y profundizando en los pasos de construcción del modelo, la arquitectura técnica, incluyendo el concepto de “data lake” y su necesidad para estas iniciativas. Finalmente incluiré un tema de canales de consumo y validación de idoneidad de modelos de aprendizaje con “machine learning” y acotare especialmente el alcance de las herramientas que los proveedores nos venden para este fin, pues, muchas empresas ya tienen modelos de machine learning en un primer nivel desarrollados, y NO es necesario tener herramientas especializadas para poder dar los primeros de pasos de madurez en este tipo de tecnologías. La herramienta es lo de menos, como siempre.

miércoles, 2 de mayo de 2018

Desarrollo móvil - mas allá de los lenguajes

Después de casi cuatro meses probando distintas plataformas para desarrollo móvil he podido validar la madurez del modelo de construcción sin codificación, y he podido confirmar que aún falta mucho camino por recorrer. Las soluciones de construcción de aplicaciones móviles siguen siendo muy básicas, y siguen obligando a las personas (gracias a Dios para nosotros los programadores) a seguir necesitando de un programador para llegar al nivel de customizacion que se desea.
Dentro de las plataformas que evalué, estuve fuertemente tentada por soluciones como Ploblal, Appery, iBuildAPP, MobAppCreator, GoodBarber entre otros. Mas allá de hacer una evaluación de aplicación por aplicación, hoy quiero compartir un poco mi impresión del modelo de desarrollo de aplicaciones móviles, pros y contras, y como este esquema se está volviendo una necesidad básica de cualquier desarrollador (por esto me encuentro aprendiendo activamente ionic).
Quiero además mencionar un poco en la preparación de ingenieros en sistemas, y como es importante el modelo conceptual por encima del modelo de aprendizaje de lenguajes y como después de estos meses aprendiendo ionic, puedo asegurarles que es más de lo mismo, siempre y cuando los conceptos importantes estén en lugar, es por eso que nunca un buen ingeniero se podrá desarrollar solo aprendiendo a programar un lenguaje, los conceptos son la base que guía todo y que permite que podamos evolucionar a la par de nuestra carrera.
Sobre las soluciones web para construcción de aplicación debo decir que el avance es sorprendente en los últimos años:
1.      Motores WEB: En algunas de las plataformas, con un simple click o una suscripción puedes iniciar el diseño de tu aplicación. Tienes emuladores para distintas tecnologías y muchas te permiten probar directamente tu app en tu dispositivo móvil. Es realmente sencillo, no requiere ningún conocimiento técnico avanzado, por lo que el programador deja de ser indispensable. Con seguir unos tutoriales sencillos y sin instalar nada en tu computadora puedes empezar a materializar tu idea.
2.      Templates: Existe una cantidad limitada de templates, pero están diseñados para las necesidades más comunes de una persona con deseos de entrar al mundo de las apps. Restaurantes, pedir taxis o transportes, e-commerce, veterinarias son algunos de los templates existentes. Esto te ahorra muchísimo tiempo no solo en necesitar un programador sino un diseñador gráfico, pues son diseños aceptables y editables. Es de considerar que al usar un template la posibilidad de hacer una app única empieza a limitarse, pues, aunque pueden cambiarse ciertos aspectos, no es su totalidad.
3.      Integraciones básicas: Para soluciones avanzadas como ecommerce existen conexiones pre establecidas a tiendas como shopify, lo que permite tener una tienda completa en segundos, incluyendo manejo de inventario, pedidos, pagos, etc. Es realmente asombroso lo poco que debe hacerse para lograr este tipo de integraciones y llevar tu tienda, por ejemplo, directo a los móviles.


Algunas funcionalidades aun inexistentes:
Sin embargo, debo ser honesta y seguramente con mi background de programadora, después de un mes decidí que era momento de construir una app completa pues estas herramientas, aunque útiles, aun se quedan cortas. La capacidad de manejo de persistencia no es el que uno esperaría, el performance no es el mejor, y para muchos cambios particulares me termine metiendo a modificar los templates y las formas básicas, al final me di cuenta de que estaba construyendo mi propio monstruo, y termine cayendo en lo mismo. Esto puede ser debido a mi background, insisto.
La funcionalidad de integraciones avanzadas o con servicios web no es clara, por lo que no termine de comprender como integrar una aplicación de estas a un backend, es para mí lo más importante y faltante en estas soluciones.

Ahora bien, decidí por lo tanto construir mi app, haciendo lo que mejor se hacer, programar. Y debo confesarles mis queridos lectores que hace ya un tiempo no programaba de tiempo completo y no para móviles. Así que el paso natural fue empezar por la tan famosa y aclamada plataforma de Microsoft XAMARIN, a esta dedique exactamente tres semanas, dos de las cuales me dedique a configurar el entorno. Recuerdan aquel dicho de “menos es más”, bueno pues Microsoft no sabe mucho de esto en esta solución. La configuración es compleja, adición de paquetes, configuración de emuladores, dedique tanto tiempo en configurar que me sentí cansada y desmotivada antes de empezar a construir mi primer aplicación según los tutoriales de los cursos existentes. Si, la respuesta es sí logre hacer mi “Hello World” pero la herramienta no me enamoro, al contrario, me frustro y aunque tengo un fuerte background en programación en visual studio .net, sentí que es tan complejo, y el resultado no es tan especial como para que valga la pena.
Luego decidí moverme a otra herramienta que mi equipo de trabajo me había recomendado. Empecé mis cursos de IONIC y en eso me encuentro actualmente. Mi primera impresión es más positiva, la configuración del ambiente es bastante sencillo, usando la versión desktop pues siempre se puede también en la nube. La solución es rica en la parte de diseño de la solución y es fácilmente asimilable pues el concepto es muy similar a la programación tradicional, además de usar lenguajes ya conocidos, que son igualmente, fáciles de aprender. Tener además una academia y su organización es muy importante, aun me encuentro aprendiendo, pero tengo un muy buen presentimiento de esta herramienta.
Finalmente, concluir que, conforme los años pasan y la tecnología sigue avanzando, mantengo mi posición de la educación de los conceptos tecnológicos. En cada entrevista que me hacen, siempre mantengo que ha sido clave para mi éxito una preparación en tecnología que nació de los conceptos matemáticos de solución de problemas, de la construcción de algoritmos de la lógica matemática. Esto ha hecho toda la diferencia y diariamente la hace, cuando un joven llega a una entrevista conmigo y me dice que es programador de un lenguaje en particular frente a uno que me deja saber, que es solamente alguien, que, como ingeniero, resuelve problemas usando tecnología.