Saturday, June 2, 2018

Cean Arquitecture y la importancia de entender la arquitectura

“Si piensas que una buena arquitectura es cara, intenta una mala arquitectura”
Robert C. Martin


¿A qué programador no le ha pasado que avanza muy rápido en un proyecto nuevo? los que venden el producto quedan impresionados por el progreso logrado en tan poco tiempo y después de un año cuando el equipo crece ¿Todavía perciben lo mismo? ¿En qué fallamos? ¿Podría haberse hecho algo mejor?

La Arquitectura en Software


La arquitectura busca maximizar la productividad. Como desarrolladores, es nuestro deber cuidarla y considerarla en primer lugar. En caso contrario, el sistema se hace cada vez más costoso en tiempo y personas, los cambios y nuevas funcionalidades se van haciendo imposibles.

La hipótesis sobre la arquitectura necesita ser probada, requiriendo cuidado, atención y pensamiento. Esto puede sonar lento al principio, pero los beneficios llegan gracias a decisiones responsables.

En la lectura del libro Clean Architecture de Robert Martin, encontramos conceptos útiles al momento de defender una arquitectura. Los principios de diseño son expuestos, evaluados y aplicables a cualquier sistema en que te encuentres trabajando pasando desde las líneas de código hasta el diseño de la arquitectura.

Comprender arquitectura es comprender el software a otro nivel


Podrás darte cuenta de muchos errores de diseño que has cometido y puedes estar teniendo ahora. El libro explica el costo de esos errores llevando tu desarrollo a otro nivel profesionalizando la carrera para cualquier desarrollador que emprende el viaje hacia la arquitectura.

El libro es muy adecuado también para desarrolladores que están haciendo su camino hacia las decisiones arquitecturales o que están preocupados a que sus sistemas evolucionen con buenos diseños que te ahorrarán a ti  y tus compañeros horas extras de trabajo debido a una decisión costosa.

Tema que todo desarrollador debería comprender


Es vital que los desarrolladores tengan conocimientos sobre arquitectura. Mientras hayan más de ellos con ese conocimiento, nuestra vida será cada vez más fácil. Los conceptos y visión del escritor son muy válidos al momento de defender una arquitectura logrando que más personas adquieran provechosos conocimientos y el libro es un buen punto para lograrlo.


Un libro para tomarse la arquitectura en serio que expone los costos de avanzar rápido al comienzo sin considerar el futuro del software. Las ideas son totalmente aplicables poseen fundamentos sólidos.

Saturday, May 12, 2018

Reflexión sobre libro 20 filósofos visitan su empresa

“La función clave del liderazgo es la construcción de relatos capaces de dar dirección, sentido y capacidad de acción a las personas. Liderar es contar cuentos.” Extracto del libro.

Los filósofos han reflexionado y desarrollado sus métodos, algunos se basan en la lógica, otros en la religión y la fuerza del hombre. Muchos de ellos se preguntaron la misión del ser humano, analizando y proveyendo técnicas que se usan el día de hoy.

Cada uno tiene su visión, se fijaría y recomendarían diferentes opciones. El libro 20 filósofos visitan su empresa de Carlos Sandoval provee situaciones y diferentes recomendaciones para las empresas actuales, aunque se enfoca en los roles de liderazgo, todos podemos beneficiarnos con las reflexiones y ejercicios que presenta el libro.

¿Qué haría el filósofo?


El autor se coloca en la piel del filósofo y describe lo que estaría haciendo en una empresa, entregando consejos aplicables a las organizaciones actuales. Es así como nos encontramos con distintas reflexiones sobre situaciones laborales y la visión del filósofo. ¿Qué preguntas haría? ¿Qué le preocupa? ¿Cómo reaccionaría?

¿Por qué leerlo?


Los filósofos buscan sentido a lo que están haciendo, tienen formas de ver el trabajo que son muy variadas y proveen una reflexión profunda sobre nuestro entorno laboral y el sentido que le damos a nuestro día a día dentro de una organización. Nos podemos encontrar con técnicas perfectamente aplicables a nuestro entorno laboral. Formas de resolver conflictos, cómo darnos cuentas de nuestros errores o hacer descubrir la verdad a nuestros colegas. También integra temas como la capacidad de observar y escuchar lo que sucede en la empresa. Sin duda, herramientas que también son útiles en nuestra vida cotidiana.
La ética y la influencia en el equipo también son tratadas en el libro. ¿Existe la ética en su organización? Y ¿Por qué es importante cumplir con el rol de líder? Son algunas preguntas planteadas. Cada filósofo tiene prácticas y cosas que nunca haría. Es inevitable sentirse más cercano a algunos y comprender que también deberíamos adaptar comportamientos o tener la visión de otros.

Invitación a la reflexionar


Para cada filósofo tenemos una serie de preguntas para contestar nosotros mismos, entregando un trabajo de reflexión que el lector puede comenzar a aplicar inmediatamente. Recomiendo ampliamente contestar las preguntas y hacer los ejercicios que se plantean durante la lectura del libro. Ayudan a encontrar sentido a nuestro rol en la organización, en la búsqueda a que nuestra organización sobreviva y también a reflexionar sobre nuestro entorno laboral. Es un libro corto, con consejos, reflexiones y técnicas que puedes aplicar para comprender y mejorar la situación de tu empresa actual. Libro totalmente recomendable si tienes un rol de liderazgo o estás cercano a tenerlo.

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.