Tuesday, December 5, 2017

ABC de la comunicación efectiva - imprescindible en el mundo profesional


¿Cómo presentar o escribir un informe? ¿Cómo entirse seguro sobre lo que expresas o mantener la atención de la audiencia o lectores? Esas son las preguntas que el libro El ABC de la comunicación de Sonia González está resolviendo.

Necesidad de saber comunicarse


No importa qué tan bueno seas técnicamente o la posición que tienes dentro de tu empresa. Si no entienden lo que quieres decir o te entregas a lo que ellos dicen con una escucha activa, entonces te encuentras en serias dificultades comunicacionales.

¿Cuántos documentos se pierden en el basurero? ¿Cuántas presentaciones han sido una pérdida de tiempo para ti y los asistentes? Un buen profesional desarrolla las habilidades de comunicación para hacerse entender hacia su público, teniendo conciencia del qué y cómo lo dice. Sin usar palabras innecesarias y mejor todavía, usando palabras contundentes para atraerlo y tenerlo en sus manos.

Dejando una huella


Los lectores del libro de Sonia González se encontrarán con numerosos consejos para preparar y realizar una presentación, incluso para enfrentar una conversación difícil o amigable con tus amigos.

El objetivo de la presentación es ser recordado, impresionar a los asistentes, que los lectores hayan retenido la información durante la lectura y que no desistan antes del final. Hagamos que nuestro tiempo y el de ellos sea provechoso. Al llegar al final querrán más información.

Claridad, sencillez, contundencia


El libro usa mucha claridad para explicar paso a paso las acciones para llegar a nuestro objetivo en la comunicación. Durante la lectura podemos darnos cuenta cómo la estructura y el estilo del libro es el mejor ejemplo aplicado de los consejos expuestos.

La autora se enfoca en tres aspectos esenciales para tener una comunicación efectiva: la hablada, que aconseja sobre cómo hacer una exposición para un gran número de personas o a un conocido, con el objetivo de ser efectiva.

La parte escrita concientiza sobre las palabras que utilizamos, cómo las combinamos y sus efectos. Contiene una gran cantidad de puntos para lograr una buena sintonía en medio del mar de información llamada Internet.

La tercera parte del libro se enfoca en la escucha activa. ¿Cómo podemos esperar una buena atención de lo que decimos, si ni siquiera sabemos escuchar?

No es una bala de plata


El contenido del libro es bastante aterrizado, dejando abierto al criterio del lector sobre la forma de asimilar y entender las acciones a tomar.

Aunque no se puede garantizar el éxito de tus siguientes presentaciones, es una ayuda para tomar consciencia de lo que estamos haciendo y cuál es el impacto que podemos generar. El lector genera seguridad reconociendo las emociones de las personas y tendrá una serie de consejos para lograr tus objetivos comunicacionales.



Friday, November 24, 2017

The Leftovers - serie intrigante y confusa

¿Cómo sería el mundo si ocurre una catástrofe de tal magnitud que nos afecte a todos directamente? ¿Cómo serían nuestras vidas después? ¿Estaremos bien? O quizás antes ya estábamos peor.

Contexto simple, consecuencia ilógica racional


The Leftovers es una serie donde el 2% de la población ha desaparecido en todo el mundo. Así de simple, fugaz, inexplicable y confuso es ese acontecimiento para todos. Muchos de los personajes se preguntan por qué se han llevado a sus seres queridos mientras que otros creen que no merecieron ser ascendidos y viven sus vidas acongojados con esas preguntas y su tristeza. Ascendidos, es el nombre asignado a los desaparecidos.

El sentido común nunca ha existido


El televidente se encontrará con situaciones incómodas, irrisorias, inexplicables y ridículas, pero los personajes hacen muy bien su trabajo ambientandonos en un escenario donde ya todo parece racional. El joven que después de la ascensión de sus padres ya no le haya sentido a su vida, en verdad quizás nunca le había encontrado alguno. El enfermo que escucha voces no parece estar tan loco después de todo y los personajes pasan por mutaciones en su personalidad por qué nadie comprende lo que ha ocurrido, o tal vez desde hace mucho tiempo tenían desórdenes.

Música espectacular


Las emociones son algo difícil de explicar y describir. En Leftovers la emoción se complementa con una banda sonora espectacular de Max Richter que potencia significativamente a cada una. La tristeza y preocupación por los ascendidos se hace grave, las decisiones y locuras de los protagonistas también son interpretadas mejor gracias a la música.


El espectador se sumergirá en un mar de emociones expresadas con imágenes y música que se complementan de forma espectacular. Un viaje por un escenario inexplicable donde todo parece posible. En fin, una obra maestra.

Tuesday, November 14, 2017

Crunch - uniendo operaciones Map y Reduce

Hacer programas con funciones tipo map y reduce pueden requerir esfuerzo, muchos de estos programas involucran más de un map o reduce y esas operaciones puede convertirse en una tarea ardua para el desarrollador, más si tambien tienen que optimizar y configurar las acciones para que los mappers y combiners aceleren el procesamiento.

Con el objetivo de facilitar el desarrollo de aplicaciones en el ambiente de Hadoop utilizando el paralelismo y las operaciones para distribuir el procesamiento, ha nacido el proyecto Apache Crunch basado en Apache Flume.


¿Qué hace Apache Crunch?


Apache Crunch es un framework hecho Java donde los desarrolladores se abstraen de la creación de clases para Map y Reduce y utilizan funciones Java para distribuir el trabajo. Aunque se usen funciones y los detalles para unir el trabajo entre las operaciones se deja a Crunch, es importante considerar cómo Crunch interpreta y decide utilizarlas.

Las funciones dentro del framework consisten usualmente en la lectura de los datos a procesar, luego pasar por filtros y transformaciones usando operaciones map y reduce, además de volver a hacer más operaciones con los resultados para terminar escribiendo los datos. Cada una de esas operaciones se distribuye a través de distintas máquinas según la configuración del cluster.


crunch-process.png


PCollection


PCollection es como la interfaz Collection proveída por Java, pero los datos son procesados por varias máquinas. Una PCollection contiene  objetos serializables y provee una serie de operaciones sobre los datos para el procesamiento y filtrado de cada elemento, retornando así una nueva PCollection.

PType es una especialización de PCollection donde se tiene una key y un valor, permitiendo que la key se repita. Junto con la operacion groupByKey de un PType  se realiza un Shuffle que agrupa a todos los elementos con la misma key generando una colección de valores para una key.



Pipeline


Un pipeline se compone de una serie de operaciones map, combine y reduce sobre un PCollection. Sin embargo no se ejecuta inmediatamente porque el pipeline funciona en modo Lazy. Al momento de llamar a una operación que ejecute el pipeline cómo escribir una PCollection o el método run(), el pipeline crea un plan de ejecución para cada operación, optimizando y evitando métodos innecesarios.

Ejemplo de un programa que junta a todas las líneas de texto que tienen el mismo largo y las escribe en un directorio:
Pipeline pipeline = new MRPipeline(getClass());
PCollection lines = pipeline.readTextFile(inputPath);
// Map function
// Cada elemento de la PCollection pasa por una
//   operación process() de la clase MapFnTest
PTable chars = lines.parallelDo(MapFnTest, ints())
// Reduce function
// groupByKey retorna objetos donde la key es única y el
//   value es una PCollection de String
PGroupedTable grouped = chars.groupByKey();
grouped.write(outputPath);


Conclusion


Apache Crunch permite a los desarrolladores crear programas sin preocuparse de unir e implementar sus propias clases map y reduce, dejando esa tarea al Pipeline que además busca formas de optimizar las operaciones. por ejemplo, hacer varios map se ejecuten en una misma máquina. Juntar muchos map y reduce en un mismo programa nunca fue tán fácil.




Friday, September 8, 2017

Sqoop - agilizando ingesta de datos entre una Base de Datos Relacional y Hadoop

Cuando se necesita pasar datos desde una base de datos relacional hacia otra, basta con hacer consultas sin preocuparse mucho de la persistencia. Cuando tenemos que operar una gigantesta base de datos relacional, pasando una copia a otra base de datos con el objetivo de analizar rápidamente lo recolectado, tenemos que considerar que esa operación puede tomar horas ¿Qué sucede si la ingesta se realiza diariamente?

Apache Sqoop


Apache Sqoop se creó para realizar transferencias de datos en forma masiva entre base de datos relacionales o un mainframe y Apache Hadoop. Durante el año 2009 nació como un módulo para Hadoop, se desacoplo de Hadoop y ya en el año 2010 se convirtió en un proyecto de Apache. En marzo de 2012 se convirtió en un proyecto de prioridad  para Apache Software Foundation (AFS).

¿Qué hace?


La forma en que Sqoop replica la data puede parecer muy simple. Sqoop importa los datos en paralelo usando múltiples mappers donde cada uno colecta una parte de la tabla. Luego esos datos son almacenados en el HDFS y los disponibiliza para ser procesados. La opción de enviar los datos procesados a una base de datos relacional también es soportada.

Ventajas


  • Integración con el ecosistema Hadoop
  • Las estructuras que forma Sqoop al importar la data se integra fácilmente con sistemas Hadoop como Hive y HBase. Los datos importados quedan en diferentes archivos dentro de Hadoop, facilitando el uso de los datos.
  • Los comandos son simples, además de configurables. En caso se necesite hacer algo especial, por ejemplo, un nuevo driver para una base de datos o aplicar un nuevo criterio para separar las consultas sql, entonces se pueden utilizar clases Java.
  • Sqoop permite obtener solamente una parte de la data como lo que ha sido agregado después de la última ingesta.

Desventajas


  • Es importante considerar que bases de datos muy grandes requieren de una gran cantidad de consultas. Muchos mappers en paralelo pueden sobrecargar a la base de datos.
  • Cuando se trabaja con múltiples mappers, es necesario asegurar que tienen la misma carga de trabajo. Es común que la consulta sql que usa un mapper colecte más datos que los otros. Eso se puede solucionar usando una key representativa y que se encuentre bien distribuida dentro de la tabla. Por ejemplo, no es lo mismo trabajar con una base de datos que tiene id’s incrementales que con otra que usa un String como key.
  • No es capaz de actualizar los datos existentes. Sin embargo, ese tipo de trabajo se encuentra afuera de la esencia de Hadoop, escribir una vez y leer muchas veces la data.
  • Si el proceso de exportar datos hacia una base de datos relacional falla durante su ejecución, no hay posibilidades de rollback. Sqoop hace commit después de una cierta cantidad de datos insertados.


Sqoop es una herramienta open source que permite a los usuarios extraer datos desde una fuente estructurada hacia Hadoop, agilizando esas tareas y soportando a las bases de datos relacionales más utilizadas.

Friday, September 1, 2017

Poder y conocimiento

¿Cómo sería el mundo si los doctores y enfermeros no tuvieran la preparación para sanarnos? ¿Qué pasaría si los autos comienzan a fallar y nadie supiera cómo arreglarlos? ¿O si la luz y agua tuvieran problemas en su distribución y no existiera alguna persona o equipo con el conocimiento para llegar a una solución?

El poder del conocimiento


En el trabajo dependemos de esas personas que conocen los detalles de cómo funcionan los productos, también de quienes conocen cómo utilizar una tecnología y los efectos de implementarlas en diferentes contextos. Esas personas son imprescindibles y mantenerlas se convierte en prioridad, es normal que hagan el trabajo de todo un equipo.


Las decisiones son tomadas por los más experimentados, ellos tienen un mayor contexto y las organizaciones dependen de este tipo de personas, nosotros también.


Los gobiernos y empresas tienen poder porque tienen las herramientas para producir e influenciar a la comunidad en general. Pueden movilizar trabajadores y empresas para que provean servicios que busquen beneficiar a todos, o al menos ese debería ser el motivo.


La sociedad del conocimiento


Las sociedades, entendiéndose como a un país, dependen del conocimiento para funcionar. Los ciudadanos son los que lo poseen y lo usan para generar riqueza y servicios de calidad para todos.

Para que los servicios sean accesibles se tiene que tener algo más de conocimiento, el sentido de comunidad también es algo que se debe desarrollar y lamentablemente, eso es algo que falta también en las sociedades con mayores conocimientos. Los resultados son limitados cuando sólo una pequeña parte de la población tiene acceso.


Estudia, aprende y no pares de compartir conocimiento


¿Qué pasa cuando nos quedamos con un conocimiento y no lo disponibilizamos? La riqueza se distribuye mal, hay falta de satisfacción laboral y nuestra salud empeora.


Comparte todo el conocimiento que puedas, nivela hacia arriba a tus pares. Más allá de beneficiar a los demás, también lo haces tú trabajando con personas más capacitadas que facilitan incluso tu trabajo. Como resultado tendrás más horas para hacer lo que te guste, los servicios que tú utilizas serán de mejor calidad y también podrás optar a ese puesto de trabajo que siempre has querido porque en el actual ya eres reemplazable.

Thursday, August 24, 2017

Nunca pares de innovar

¿Qué podemos hacer cuando el trabajo se vuelve monótono y vemos que nuestras capacidades van más allá de lo que nos piden? ¿Cómo llegar a ese producto nuevo que puede salvar a nuestra compañía? ¿Cómo mantener a un equipo motivado? ¿Cómo impulsar tu carrera proponiendo y desarrollando tus propias ideas?

Cada uno de nosotros tiene aspiraciones y ganas de ser valorados, especialmente en las organizaciones donde trabajamos. Una manera de ser un referente es dando a conocer tu sello innovador.

¿Dónde está la innovación?


La innovación en el trabajo se desarrolla buscando cómo entregar más de lo que nos están pidiendo. Puede ser un software de muy buena calidad para facilitar su evolución, o proponiendo y evaluando nuevas prácticas en tus equipos de trabajo, la invención de un nuevo producto o componente que resuelve un problema o que sale de los estándares también son ejemplos de innovación.

Desafíos al hacer innovación


Para llevar a cabo un proyecto de innovación se tiene que convencer a los dueños de los productos que algunas veces sólo ven los riesgos que deben asumir. En muchos otros casos, las innovaciones vienen desde los mismos trabajadores que buscan hacer mejores productos o que visualizan herramientas útiles para su trabajo diario, en esos casos son ellos mismos los que tienen que asumir los costes de tiempo.

El tiempo es una de las mayores barreras para desarrollar y llevar a cabo una idea propia donde la planificación y priorización de las tareas son la clave. Cuando se trabaja en equipo, todos tienen que creer en el proyecto, estar convencidos de que la idea es buena o esa es la forma en que deben distribuir su tiempo. Establecer metas en tiempo, tener momentos dedicados a la innovación y la distribución del trabajo son imprescindibles en un equipo.

Los beneficios de la innovación


Es verdad que cuando hacemos un trabajo de innovación, la empresa se lleva los créditos, ésta puede vender más o ahorrar dinero y tiempo con el sudor de tu trabajo. Sin embargo, siempre considera que la persona que lleva a cabo uno de estos proyectos y los mismos equipos afectados son los verdaderos beneficiados.

  • El innovador

El innovador ya está aprendiendo solamente por pensar fuera de la caja, se enfrenta a los problemas con otra mirada y busca soluciones que por diferentes motivos no se han podido resolver o ni siquiera pensar. Se puede enfrentar a una nueva tecnología que implica aprender y aplicar nuevos conocimientos, generan nuevos procesos e incluso formas de automatizar las tareas.

Además estas personas salen de su rutina, mantienen la motivación en su trabajo y pueden contagiar a sus compañeros.

  • El equipo innovador

El equipo se beneficia utilizando los resultados de los nuevos proyectos que pueden agilizar la velocidad del desarrollo, mejorar la calidad y también facilitar su trabajo diario. Incluso pueden hacer que el trabajo sea más divertido.

Cuando se trabaja en equipo, los proyectos novedosos se fortalecen aumentando las probabilidades de éxito, se llega más lejos en equipo.

No pares de proponer


Aunque los proyectos de innovación vengan desde iniciativas propias y consumen tu tiempo libre, no dudes en los beneficios que conllevan. En el peor de los casos aprendes y profundizas sobre alguna tecnología, conoces mejor a tu equipo y obtienes nuevas ideas para los trabajos futuros que te asignarán, dentro de la misma o en tu siguiente empresa.

Una de las mayores satisfacciones que podemos tener en un trabajo, es que una idea propia se implemente y vaya tomando valor dentro de la organización.

Monday, August 21, 2017

Mentoring y la nivelación de conocimientos

Es común ver en las empresas la fuga de conocimiento, la rotación de personal ha sido la regla en estos tiempo y seguramente tú no quieres permanecer haciendo lo mismo durante toda tu vida porque no tienes a nadie más que te reemplace. También es posible ver cómo dos personas hacen el mismo trabajo con diferente calidad, tardando mucho más la que lo hace más lento.

Minimizando las diferencias


Los niños tienen a sus padres que les sirven como ejemplos a seguir, los estudiantes tienen a su profesor que se dedica a enseñarles, los deportistas tienen a su entrenador. En casi todas las áreas donde nos desenvolvemos tenemos a una persona que nos puede guiar, aconsejar y ayudar, el mundo laboral no se encuentra ajeno a ésta dinámica y estas personas, los mentores, tienen un rol fundamental no sólo para las siguientes generaciones porque todos tenemos que ser mentor y tutelado a la vez.

¿Por qué ser un mentor?

Más allá de nombrar las características que deben tener los mentores, mi objetivo es dejar claro que los mentores son imprescindibles para el desarrollo de una empresa, una carrera profesional, familiar, etc. Un país puede mejorar teniendo una población educada, con sentido de justicia, con memoria, y otras características que pueden ser motivadas, guiadas e impulsadas por un mentor para mejorar a la sociedad.

Por otro lado, durante un proceso de Mentoring, tanto el mentor (o guía) como el mentee (o tutelado) aprenden de la experiencia. Siempre hay cosas que aprender del otro y eso es fundamental durante un Mentoring. No se trata de tener a un maestro que lo sabe todo y a un aprendiz que escucha atento y sólo hace lo que le dicen.

Mentor en el mundo laboral
Durante mi experiencia como mentor, he tenido que ayudar a formar profesionales desde que eran estudiantes. Particularmente, mis mentees tenían que desarrollar habilidades de autoconocimiento que los ayude a enfrentar una entrevista laboral y además fortalecerlos para que tengan un buen desempeño laboral.

La red de contactos también se amplia durante el proceso de mentoring. Ambos, el mentor y el tutelado, conocen a nuevas personas que pueden jugar un rol en el futuro laboral para cualquiera de los dos.

El mentor entrega feedback en base a su experiencia. Esta persona ya ha pasado por varios problemas y cometido muchos errores, los mentores pueden hacer suyo todo eso aprendiendo de ellos mediante ejercicios, lecturas o cualquier otro medio que el mentor estime conveniente..

¿Por qué implementarlo en una organización?

Cualquiera sea el lugar donde se reúna un grupo de personas con un objetivo común, siempre hay cabida para un mentoring. El proceso puede darse formalmente mediante una decisión de la organización o informalmente pidiendo ayuda a un mentor para que dedique tiempo y comparta su experiencia.

Una empresa puede beneficiarse nivelando el conocimiento. El mentor que sabe mucho del negocio puede guiar a alguien más para dejar de ser imprescindible, y a la vez tener la posibilidad de tomar nuevos roles. El mentor se motiva y quiere permanecer en una compañía dónde puede aprender y desarrollarse junto a sus pares.

La calidad y velocidad con que se hace un trabajo va a mejorar, desde trabajos manuales hasta decisiones estratégicas que son realizadas por personas que tuvieron mentores dedicados a transmitir su conocimiento sobre errores que tuvieron en el pasado.

Compromiso

El compromiso para la relación mentoring es clave para su éxito, entendiéndolo como la adquisición de habilidades tanto técnicas y blandas que necesite el mentee. No hay formas establecidas para hacerlo ni balas de plata, las recomendaciones siempre son bienvenidas en estos casos.

Si te toca ser mentee, cumple con tu rol y saca provecho de esa persona con experiencia en esa área que es tan importante para ti, también no dudes en cuestionar a tu mentor con respeto. Si eres un mentor, considera que tendrás que dedicar tiempo para proveer herramientas útiles y efectivas al mentee y recuerda siempre, “Si te vas  a comprometer en una relación de mentoring, hazlo bien”.

Corre ya, y decídete por un plan de mentoring

Mediante un proceso de mentoring, una organización puede disminuir la fuga de conocimiento, los índices de rotación tienden a la baja y siempre se podrá contar con un sucesor que tome tu lugar para poder dejar tu empresa tranquilamente o moverte a un nuevo equipo obteniendo ese rol que tanto buscabas.

Wednesday, August 16, 2017

Errores en el trabajo: supercoders solitarios

Entre los errores que he cometido laboralmente, hay uno en particular que veo muy seguido en mis compañeros y yo también lo he cometido groseramente. Generalmente ocurre cuando estamos trabajando en productos nuevos donde las posibilidad de implementaciones son muy variadas y la solución está muy abierta.

Superman o supercoder

Y es así como de a poco me fui emocionando con las formas en las que podía realizar mi implementación, aplicando patrones de diseño, buenas prácticas de codificación, entregando una solución a tiempo, y además preparando el proyecto para las futuras mejoras que posiblemente teníamos que agregar en el mediano plazo.

Todo parecía muy tranquilo, mis compañeros de equipo estaban preocupados en otras partes del proyecto y por fin podía trabajar en algo desde el comienzo. Resolver defectos y agregar pequeñas funcionalidades parecían cosas del pasado. Uno se siente poderoso dibujando cajitas y sus interacciones, mi cerebro parecía trabajar a niveles inexplorados y ya no necesita ayuda de mis compañeros.

¿Quién vigila a los super programadores?

Me encontraba listo para entregar una solución que cumpliera con todos los criterios de calidad, velocidad, tiempo de desarrollo y más.¿Qué podría salir mal? ¿Que cosas estaba dejando de lado? ¿Cuales fueron los errores que cometí en esa solución a la que le dedique muchas horas de mi vida?

Primero dejar en claro que el código y los proyectos no son de una sóla persona, todo lo entregado es del equipo y del cliente. Primero del equipo porque éste tendrá que mantener y hacer nuevas implementaciones sobre el código. Qué tan difícil o fácil sea modificar un proyecto tiene directa relación en cómo el equipo se distribuyó y de las decisiones que tomó. El cliente, por otro lado, es quién utiliza el sistema y conoce cómo producir el dinero, también es quién paga para que los desarrolladores hagan su trabajo. Todos ellos son los vigilantes, interesados y tienen el deber de corregir lo que se está haciendo, en otros casos pedir retroalimentación del producto y entregarla según las responsabilidades que tengan.

A continuación describo algunas observaciones durante este tipo de situaciones:

No revisar ni consultar sobre la implementación


El desarrollador estrella no puede encaminarse sin preguntar a sus compañeros para resolver un problema difícil. Una persona no puede, a menos que sea muy experimentado y le sea muy común entenderse con ese tipo de problemas, diseñar e implementar la solución de forma solitaria. Si lo hiciera asì ¿Para qué existe un equipo?

Nadie más puede entender o quiere entender lo implementado

En muchos casos, y lo menciono porque confío mucho en esas mentes, el desarrollador puede llegar a una muy buena solución para un problema difícil por sí sólo. Sin embargo, las otras mentes también tienen su orgullo y quieren participar de este tipo de soluciones. Si ellos no pueden obtener el contexto de la solución ni ayudar, entonces se hace cada vez más complicado explicarles una solución porque saben poco de la problemática y todo les parece muy enredado, tampoco fueron parte de èsta.

Lo peor, el código será modificado en el futuro y se produce una desmotivación en el equipo


Naturalmente, el equipo se va a ir alejando de esas piezas de código que desconocen. Sienten que es algo que no les pertenece, no entienden y sòlo el super programador que lo creó puede modificarlo.
El resto del equipo no tiene ganas de trabajar en esa parte del proyecto y en casos más extremos, tampoco trabajar con ese superman en la programación.

Confiar y cuidarnos de nosotros mísmos


El futuro no es prometedor en casos como éstos, las mejoras en esos proyectos no son bien recibidas y en muchos casos se termina refactorizando gran parte del código traduciéndose en horas perdidas. Atentos en identificar cuándo nos estamos comportando de esa forma tanto en la programación como en otros tipos de trabajos.

Tuesday, July 18, 2017

Cine a la casa

Cuando el cine llegó a nuestras vidas, nos dimos cuenta que para vivir una experiencia completa, debíamos dirigirnos a las salas y ver películas en pantallas de gran tamaño y cada vez con mayor definición.

No pretendo ser un visionario, pero siempre me ha llamado la atención la realidad virtual y cómo se podría integrar con otros servicios como el cine.

Participación

Podríamos ser parte de la película tomando decisiones y dirigiendo nuestra vista donde más nos interese. Podríamos vernos tomando un arma mientras apoyamos al protagonista a avanzar en una pelicula de guerra, también podríamos observar lo que hacen otros personajes mientras hay una conversación importante de otros actores.

La experiencia sería mucho más amplia y tendríamos que ver la película varias veces para encontrar los detalles.

¿Hasta donde llegar?

Algunas  preguntas a responder son: ¿En qué se diferenciaría a un videojuego? ¿Los personajes pueden reaccionar a acciones tomadas por los espectadores? ¿Los actores serán personas reales? ¿Cuánta tecnología nos falta para llegar a algo concreto?

Los límites de ese tipo de experiencias están siendo explorados y ya tenemos algunas peliculas donde el espectador puede explorar el escenario como en la película chilena llamada Constitución. No está demás mencionar que ésto no se limita al cine, videojuegos, conferencias e incluso recitales.

Obviamente todo eso tiene que estar conectado con el factor más importante para llevar a cabo proyectos ambiciosos con más características y es un camino que está en progreso.

Cine en la casa

Es posible que ya no sea necesario asistir a una sala de cine para vivir ese tipo de experiencias y el transcurso de la película dependa de algunas decisiones tomadas, incluyendo su final. Nos bastaría con poseer un lente de realidad virtual, acomodarnos en nuestros sillones y disfrutar.





Monday, June 26, 2017

Big Data - Necesidades y roles para su uso


Cuando analizamos un conjunto de datos que representa, por ejemplo al número de niños que se mueren de neumonitis, es posible tener una idea básica de las características que cumplían esos pequeños sólo mirando los datos. Cuando analizamos una cantidad más grande de información, podemos usar Mainframes u otras computadoras para analizar esa data y obtener las características más relevantes. Sin embargo, nuestros datos no suelen ser grandes y no podemos realizar predicciones con la precisión necesaria como para poder tomar una decisión fiable.

¿Qué ocurre si analizamos a los niños que viven y a los que se mueren de neumonitis sobre los datos obtenidos para todo un país? No queda más que resignarse y entender que el procesamiento de consultas sencillas de ese tipo pueden tardar horas y hasta un par de días, y el descubrimiento de sus características relevantes puede tardar fácilmente meses o años. ¿La tecnología actual puede soportar enormes volúmenes de datos?

Big Data


Big Data se puede definir como el almacenamiento de una gran cantidad de datos y tener la capacidad de procesarlos rápidamente. El procesamiento sobre los datos puede usar técnicas de Machine Learning y así obtener las mejores características según el propósito de las búsquedas. Es importante notar que no hay límites sobre las formas que hay para encontrar la información relevante, pero el tiempo de procesamiento no ha sido el esperado. Cuando hablamos de Big Data, la cantidad  de datos a analizar es brutalmente enorme y el tiempo del análisis disminuye a minutos usando principalmente técnicas de distribución de procesamiento.

El analista


Al momento de tocar los datos, el analista es quién hace la magia. Ellos tienen un conjunto de métodos estadísticos para obtener lo que necesitan, pero el descubrimiento toma tiempo y a medida que aumenta la cantidad de datos a usar, ese tiempo crece exponencialmente. Las técnicas a aplicar dependen de la calidad de la información obtenida, de su tipo y de su propósito. Muchas veces se trata de realizar pruebas y cometer muchos errores antes de llegar a buenos resultados.

En muchos casos, los analistas deben estar familiarizados con algún lenguaje de programación y saber realizar consultas a la base de datos, por ejemplo SQL. Así que nos encontramos con una gran limitación sobre quién puede acceder y analizar los datos debido a los requisitos que deben cumplir.

¿Qué podemos hacer cuando cada análisis de prueba toma horas y no hay límites sobre la cantidad de errores a cometer antes de llegar a un resultado aceptable? Sin duda, los analistas pueden volverse viejos antes de llegar a resultados satisfactorios, necesitan de la ayuda de alguien más.

El desarrollador


El analista se apoya de desarrolladores con conocimientos Big Data. Éstos solucionan un gran problema de los analistas o usuarios de grandes volúmenes de  datos, disminuyendo tareas computarizadas que tomaban horas o días, llegando a sólo unos cuantos minutos usando la magia de la distribución de los procesamientos en muchas computadoras.

Entre las características de un desarrollador de Big Data, nos podemos encontrar con personas que deben ser unos apasionados con las tecnologías porque ese mundo se encuentra en constante evolución, usar las mejores tecnologías y técnicas son fundamentales para estar en la cima de la industria.

Por otro lado, la comunidad de desarrolladores está constantemente entregando nuevas actualizaciones o productos (Apache Hadoop, Hive, Spark, etc.) que van a resolver problemas actuales y es frecuente que se enfrenten a problemas donde no hay una solución lista para usar, ellos están recorriendo un camino que no tiene tantos años y tienen mucho por descubrir y desarrollar todavía.

Beneficios


Entre los beneficios que nos trajo el uso de tecnologías Big Data, nos encontramos con las siguientes:
  • Los procesos que antes tomaban horas o días, ahora pueden llegar a unos cuantos minutos. Por ende, los usuarios, analistas, o cualquier persona que necesite resultados sobre una gran base de datos, harán mejor uso de su tiempo.
  • Los resultados sobre una gran cantidad de datos es más precisa y se puede llegar a mejores conclusiones. Incluso, es más fácil saber su comportamiento futuro.
  • Las empresas privadas y estatales pueden tomar mejores decisiones sobre la industria en las que se encuentran o pueden enfocarse en las personas que realmente necesitan y quieren un producto. Cualquier organización que necesite encontrarse en la vanguardia debe aplicar este tipo de técnicas para encontrarse pasos adelantada.
  • Los gobiernos pueden distribuir mejor sus ingresos, impactando y mejorando la calidad de vida de su población.

Lo que viene


Mas allá de hablar del futuro del Big Data, ya vemos que las más grandes compañías hacen uso de sus capacidades y rápidamente se están uniendo otras que encuentran imprescindible utilizar esos conocimientos.

Rápidamente han ido apareciendo nuevas tecnologías para diversos tipo de datos, arquitecturas que hacen el procesamiento más rápido o que sea más fácil de utilizar. Papers con técnicas de minería de datos y actualizaciones que hacen más fácil las implementaciones de esas técnicas.

La velocidad del procesamiento depende mucho de la infraestructura y la cantidad de computadores donde se distribuyen los procesamiento de datos, pero todavía nos hace falta encontrar nuevas técnicas de análisis con algoritmos que exploten el potencial que tiene el Big Data.

Friday, January 6, 2017

GO Continuous Delivery, tu producto estará a la moda

En tiempos donde las exigencias de los mercados cambian y se transforman a una velocidad tan veloz que las empresas que se percatan de un cambio no pueden esperar a que alguien más realize algo mejor. En un mundo donde no hay plazos para entregar una nueva funcionalidad y no existen los clientes, que sin saber bien lo que quieren, que se encuentren pacientes mientras hay otra compañía que los desplaza y los puede dejar fuera de competencia. En escenarios donde los servicios proveídos se apoyan con Software a medida, no hay tiempo, lo requerido debe ser entregado en cualquier momento.

Prácticas Continuous Delivery


Entonces nos encontramos con herramientas y prácticas de entrega continua o Continuous Delivery por sus siglas en inglés, donde su enfoque es entregar en cualquier momento las funcionalidades nuevas o esos productos tan esperados.

A diferencia de las herramientas de integración continua como Jenkins encargado de facilitar y automatizar la unión del trabajo de diferentes desarrolladores, detectando errores e integrando rápidamente, por otro lado se encuentran las soluciónes de entrega continua que buscan asegurar que el producto sea liberado rápidamente y de forma segura en ambientes de producción en cualquier momento. Más que herramientas que faciliten hacer este trabajo, lo importante es familiarizarse también con las prácticas conocidas como "Continuous Delivery".

Es necesario mencionar que las prácticas de entrega continua no pueden funcionar aisladamente sin las de integración continua para lo cual es imprescindible contar con herramientas que automatizen estas tareas. Este post se dedica a hablar sobre la entrega continua utilizando GO Continuous Delivery (GO CD).

GO Continuous Delivery


GO CD es una herramienta Open Source que utiliza el concepto de Pipelines permitiendo dividir el proceso de deploy de un producto Software en varias etapas. Así busca facilitar la detección de problemas, además de la colaboración entre varios equipos encargados de entregar un producto Software de tal forma que hay visibilidad en el flujo de deploy.

Con respecto a la forma de ejecutar los jobs, éstos pueden ejecutar comandos maven, de python, linux o cualquier otra herramienta proveída por la máquina asignada donde que ejecuta las tareas.

Los Agentes


Despues de que el servidor encuentra que hay cambios en algún material, ya sea un repositorio de código fuente o un pipeline que ha finalizado su ejecución, el servidor desencadena uno o varios pipelines. Desde ahí, los pipelines son ejecutados por los agentes, que usualmente son otras máquinas que poseen los recursos para realizar tareas. Por ejemplo, maven, python, o cualquier otra instrucción proveída en un sistema operativo Linux.

Con ayuda de scripts, se le puede indicar al job los comandos que debe realizar para completar su objetivo, haciendo muy manipulable el trabajo asignado, además de facilitar el arreglo de errores. Los scripts poseen la secuencia de comandos para realizar alguna acción, por ejemplo: compilar un código fuente, obtener un artefacto compilado desde algún repositorio, colocarlo en algún lugar de la máquina e inicializarlo, etc.

La forma de desencadenar los pipelines en GO es proveyendo materiales a cada uno. Así, un pipeline se ejecuta al encontrar un cambio en un repositorio de código o incluso, al finalizar uno o varios pipelines.



Abstracción


A continuación se puede ver la subdivión de los pipelines:
- Multiples Pipelines corren en paralelo
- Multiples Stages dentro de un Pipeline corren secuencialmente
- Multiples Jobs dentro de un Stage corren en paralelo
- Multiples Tasks dentro de un Job corren secuencialmente

El diseño de los pipelines necesitan de una estructura consistente tomando ventaja de la abstracción proveída al momento de crear alguno de estos pasos, considerando también que los nombres de los pipeles, stages, etc. correspondan con lo que realmente están haciendo.

Conclusión


Sin duda es una herramienta a considerar si quieres acelerar el tiempo que toma la aplicación para subir a los ambientes de producción u otros. Su abstracción, flexibilidad para correr los pipelines y hacerles un seguimiento, scripts a ejecutar en los agentes, variables de ambiente, plugins, fácil de deployar y otras características más, lo convierten en una aplicación digna para que la consideres cuando quieras acelerar el tiempo que toma tu aplicación para subir a los ambientes de producción o cercanos a éste.