Friday, April 19, 2019

Redis - tus bases de datos favoritas en una

Las aplicaciones Software suelen usar herramientas para persistir datos buscando tiempos de respuesta optimizados de forma distribuida y escalable. En muchos casos, los desarrolladores tendemos a persistir datos temporales para estados u otra información que sólo durará por un tiempo, en otros integramos consultas en memoria o en caché usando otras aplicaciones o librerías.

Redis es un motor de base de datos basado en el almacenamiento en memoria, además de permitir la persistencia. A continuación revisaremos algunas características de Redis.

Redis, todo en uno


Usando Redis podemos tener una base de datos que actúa como caché y persistencia al mismo tiempo, así puedes dejar ese trabajo al mismo motor y no necesitas usar librerías externas u otra base de datos para manejar o diferenciar entre esos dos tipos de datos.

Esta herramienta también provee operaciones sobre los datos almacenados en memoria que son identificados como si fueran una variable hash soportando diversas estructuras bastante flexibles [1]. Para cada tipo de variable, Redis provee diferentes operaciones para su manipulación.

En resumen, Redis es una base de datos distribuida que administra datos en memoria, mejorando el performance de las respuestas y ofreciendo operaciones sobre esos datos. [2]

RediSearch


Si lo que necesitas es hacer búsquedas complejas sobre masivas cantidades de datos, puedes usar RediSearch que posee un engine optimizado y moderno que opera sobre Redis, está escrito en C y es comparable a otras herramientas como ElasticSearch. [3]

Usar en una red interna


A pesar de que usa un sistema para autenticar a las aplicaciones clientes, por su naturaleza distribuida, puede permitir muchos intentos sin bloquearse. Lo cual puede ser vulnerable usando técnicas de fuerza bruta para descubrir contraseñas.

Usos de Redis


Algunos de los usos más populares son los siguientes:
- Sistema cache con políticas de persistencia
- Sistema de colas
- Almacenar sesiones en memoria con tiempos de expiración.
- Cuando se requiera guardar un estado temporal, por ejemplo, en una arquitectura de microservicios
- Almacenar sesiones de usuario
- También puede ser usado para: un carro de compras, un juego online, avisar que un elemento está bloqueado o que hay un proceso en progreso.


Redis es flexible, rápido y escalable, entregando la libertad a las aplicaciones sobre el uso y las políticas con las cuales los datos son almacenados de acuerdos a los criterios de velocidad y tamaños que necesites.

Es recomendable para un extenso rango de tipos de aplicaciones, siempre y cuando resuelva algunos problemas que las otras bases de datos necesitan de más componentes para hacer lo que ya tenemos en uno.

[1] https://redis.io/topics/data-types
[2] https://redis.io/commands
[3] https://redislabs.com/blog/search-benchmarking-redisearch-vs-elasticsearch/

Sunday, April 14, 2019

Hacer una aplicación para una startup o una empresa grande requiere de muchas tareas necesarias antes de desarrollar la aplicación como obtener una infraestructura adecuada, revisar disponibilidad de máquinas, instalaciones, cableado, etc. ¿Cuántas de esas tareas entregan valor a lo que hace esa compañía?

La espera para obtener servidores puede tomar bastante tiempo, además de los dolores de cabeza  cuando dejan de estar disponible

Los desarrolladores a veces trabajan los fines de semana porque no hay infraestructura para escalar ni asegurar disponibilidad. Y ni hablar sobre los costes para obtener y mantener máquinas, transportarlas, hacer cableado, monitoreos, y otras tareas relacionadas.

Externalizar la infraestructura


Hay empresas que se han dedicado a proveer servidores y servicios para que podamos montar aplicaciones, ya no necesitamos todo un equipo para asegurar disponibilidad de las máquinas.

Los proveedores de Cloud, como AWS o Google Cloud, son los que se dedican a hacer ese trabajo por ti, optimizando recursos, electricidad, tiempos y costos. Desde hace un tiempo, tienes la opción de no preocuparte sobre la logística de comprar máquinas y obtener lo necesario para montar los servidores, ahora simplemente tienes que seleccionar lo que usarás con algunos clics y tener consciencia sobre cómo se hará la facturación.

Paga por lo que usas


¿Qué pasa si después de levantar mi infraestructura, todavía no usamos las máquinas?. En la nube,  tendríamos costo cero.

Esa es la filosofía cloud, incluso puedes tener una aplicación disponible y si nadie la usa llamando al servicio o visitando la página web, no hay cobro porque no ha sido utilizado. Obviamente, eso depende de la estrategia que uses al implementar la aplicación.

No es necesario gastar el dinero por algo que no usamos.

Útil para todos los tamaños


Una nueva empresa con recursos limitados puede comenzar con algo pequeño y a medida que va creciendo y obtienen mayores ingresos, pueden solicitar mayor capacidad de cómputo con algunos clics.

Muchas empresas ya se han movido y se están moviendo a cloud [1]. Es una estrategia generalizada debido a los costes y restricciones de infraestructura que se han enfrentado en muchos casos.

Tiempo de los desarrolladores


Los proveedores de cloud ofrecen servicios para que sea más fácil implementar buenas prácticas de programación como el Continous Integration y Delivery. También, los servicios cloud manejan la disponibilidad bajando y subiendo instancias a medida que sean necesarios. Asegurar la alta disponibilidad es posible y no hay excusas para no lograrlo.

Sin duda, hay otras habilidades de los desarrolladores que se están haciendo más necesarias, tenemos que actualizar nuestros conocimientos y modificar nuestros paradigmas.

¿Son necesarios los empleos de infraestructura?


Usando cloud no necesitaremos alguien que revise las conexiones, actualizaciones, estado de las máquinas y otros aspectos. Sin embargo, es vital revisar continuamente esas características de forma automatizada. La forma de trabajar está cambiando ¿No parece ser una más inteligente?

No te quedes atrás


La tendencia es clara, las empresas se están moviendo a este tipo de infraestructuras por diversas razones. Es importante entender los beneficios y los problemas de los servicios Cloud.

Los proyectos e innovaciones están al alcance de todos, ahora podemos tener más tiempo para hacer lo que necesitamos.

Friday, February 1, 2019

Metodologia Spotify

Últimamente se ha estado escuchando sobre una nueva metodología de desarrollo de software llevada a cabo por Spotify. Si, de la misma compañía que provee música con 4 millones de usuario de pago y 15 millones de usuarios en total.

Spotify posee 30 equipos en 3 ciudades distintas, números que obligan a cuestionar otros estándares ampliamente aceptados como los de Scrum y algunos usados por compañías grandes como Safe.

A continuación tenemos un resumen sobre algunos de sus principales puntos.

Squads


Los squads son como los equipos de Scrum. Un squad se encarga del desarrollo, test y entrega en producción. Tienen todas las herramientas para desarrollar su trabajo, contacto directo con Stakeholders y son los dueños de uno o más funcionalidades o productos.

El equipo autoorganizado decide las prácticas a seguir como las stand ups, code review, pair programming, retrospectivas, etc. Así como también tienen un cierto grado de autonomía sobre las tecnologías a utilizar (para desarrollar el producto, integración continua, entrega continua, etc.). La idea es otorgar independencia al squad con el fin de evitar bloqueos o asuntos que puedan demorar una entrega.

No hay team leads, pero si hay un product owner que se encarga de priorizar las tareas. ¿Quién se preocupa del crecimiento del equipo? Puede ser algo que define el propio Squad o los “chapters” que veremos más adelante.

Un agile coach puede estar ayudando a que el equipo use las mejores prácticas según su contexto y apoyar en aspectos claves como la motivación o la adaptación en un equipo.

Actualmente Spotify entrega libertad para que el Squad dedique el 10% de su tiempo para hacer lo que quieran, inventar un producto nuevo, aprender una nueva tecnología, etc.. También realizan una encuesta cada 3 meses para medir la mejora o sus esfuerzos.

Dependencias


Una tribu es un grupo de Squads que trabajan en una área parecida. Los squads de una tribu están en la misma oficina promoviendo la colaboración.

El líder de la tribu se encarga de proveer el mejor hábitat posible para los squad y las relaciones entre éstos. Una de las dependencias más comunes son los equipos de operaciones. Aunque un squad debería poseer el rol de operaciones, es importante tener un equipo encargado exclusivamente a eso y entregar las herramientas a los squads para que puedan lograr su autonomía..

Chapters y Guilds


Spotify propone autonomía con equipos independientes, pero también hay que aprovechar las instancias para compartir conocimiento y desarrollar habilidades comunes en la compañía. Un chapter es un equipo con habilidades similares dentro de una tribu.

Los liderazgos se ven a nivel de chapter porque tienen habilidades parecidas, el líder puede ser la persona con más experiencia o experticia sobre el rango de habilidades del chapter.

Un guild se puede ver como un grupo con intereses similares donde comparten conocimiento, habilidades, herramientas y prácticas. Las personas que integran un guild o chapter, son las mismas que participan en la entrega del producto siendo parte de un squad.

Architectura


Para hacer que las integraciones entre los diferentes squads sean más fáciles y coherentes, se considera el rol “System Owner” que se preocupa de la calidad, documentación, technical debt, escalabilidad y el proceso de release. Esta persona es parte de un squad.

El chief architect es quien se encarga de coordinar el trabajo de architectura en un alto nivel. Promoviendo la visión del producto, lineamientos de tecnologías o problemas futuros a mitigar.


La metodología o prácticas de Spotify están enfocadas en las entregas proporcionando una estructura con independencia y las instancias para coordinar y compartir habilidades que la aseguren. Podemos mirarla como una evolución de las prácticas ágiles con constantes cambios.

Sunday, January 13, 2019

Los desarrolladores de Software son inversionistas

¿Qué tan importante son los detalles para un desarrollador de Software?

¿Qué pasa si dejamos los casos bordes para el final, o hacer los arreglos cuando ocurra el error? ¿O decir que el performance no es importante hasta que parezca lento?

Ahora tú podrías estar trabajando en una aplicación que funciona en el escenario feliz donde el usuario no experimenta o no intenta usar todas las funcionalidades esperadas.

Comienzo rápido, después lento 


Al comienzo, un desarrollador puede entregar funcionalidades rápidamente, todo es nuevo y no hay obstáculos que lo detengan. 

A medida que la aplicación crece, emergen los errores, el performance disminuye, los requerimientos de seguridad se hacen críticos y ya no se puede entregar algo nuevo hasta arreglar todo lo anterior. ¿Fue una buena práctica preocuparse por los detalles al final?

El inversionista


Un programador es como un inversionista convencido de lo que necesita su empresa para progresar. 
Consciente del trabajo que tiene que entregar ahora y donde debe realizar los esfuerzos de inversión como la integración continua, automatizar deploys, pruebas automatizadas, capacitaciones, etc. El programador tiene que detenerse y pensar sobre lo qué está haciendo y cómo. ¿Es mantenible lo que estamos desarrollando? 

La solución temporal es permanente.

Ver el futuro 


¿Cómo puedes tener un diseño mantenible si no ves los cambios que vienen? Cada línea de código tiene implicaciones que pueden favorecer al equipo o no. No podemos avanzar a ciegas sin conocer la visión del producto y las nuevas funcionalidades que vienen. 


Quizás no puedas ver cuantos clientes van a usar tu aplicación y no tener claridad sobre lo que van a usar o querrán cambiar. Tal vez la arquitectura cambie. Pero si puedes ver qué tan estable, rápida, segura y mantenible sea el producto software en qué trabajas. 

Tuesday, November 20, 2018

Sobre el Teletrabajo

Despertar a cualquier hora, no preocuparse del transporte y entregar el estatus del proyecto usando un Chat. Comenzar a trabajar cuando te sientas inspirado después de leer las noticias y cuando te cansas, das un paseo o vas al gimnasio. Vuelves para aprender algo y continuar con el curso que tanto disfrutas. Después pasas tiempo junto a tus hijos, videojuegos, mascotas o amigos para finalizar el día en cama y avanzando en el proyecto cuando esta más fresca la temperatura. Incluso puede ser más cómodo trabajar sábados y domingos para tener libres los lunes y martes.

Así es el Teletrabajo


Un dìa cualquiera de teletrabajo. Planeas el día como te parezca mejor, además de ahorrar dinero y tiempo de transporte, también podrías evitar costosos arriendos. ¿Es un modelo factible? ¿Qué tipo de trabajos pueden implementarlo? ¿Qué sucede con el control?

Una tendencia


El mundo se mueve hacia ese modelo de trabajo. Recomendado para los trabajadores del conocimiento que necesitan un escritorio y conexión a Internet para generar valor. Los beneficios son personales y para las empresas, un desarrollador de Software o ingeniero puede emplear esas horas ahorradas en transporte para comenzar un proyecto de innovación o aprender sobre esa tecnología que puede salvar a la compañía. También dormir una siesta es mejor que pasar un día completo con sueño. La empresa ahorra espacio, infraestructura y obtiene personas motivadas a participar en la visión de la empresa.


Valores


La confianza es fundamental, además de contar con buenos sistemas de comunicación para el equipo de trabajo. Las reuniones principales se minimizan para cuando sean realmente necesarias o por motivos de coordinación.

Hay más tiempo para la educación continua y la curiosidad, características fundamentales de los trabajadores del conocimiento

No hay fórmulas mágicas y cada organización puede buscar las suyas.

Implementación


Cuando ingresa un empleado nuevo, es recomendable que se mantenga las primeras semanas con alguien más experimentado. También hay reuniones para conocer al equipo, o instancias distintas a una oficina para hacerlo.

En mi caso, nuestro equipo está eliminando las reuniones de estado (status) reemplazándolas por un chat para avisar sobre avances y problemas donde necesitemos orientación o ayuda. Las asistencias son obligatorias una vez a la semana y siempre hay una persona del equipo en la oficina. No podemos dar una mala imagen a los otros equipos de la compañía.

El Teletrabajo ya llegó


Nos estamos moviendo hacia esa forma de trabajar con sus ventajas [1] y desventajas [2]. Sin duda, para mi, los beneficios son mayores.

En países como Chile, se ha generalizado que el trabajo es una especie de tortura donde esperamos con ansias el viernes para poder descansar y hacer, por fin, algo por nuestras vidas. ¿Es necesario cumplir con las 8 horas de trabajo? Cuando en 5 horas a tu máxima capacidad, basta para cumplir con las metas, incluso cuando éstas son muy altas.

Un modelo de trabajo donde el ganar y ganar es para ambos.

[1] https://www.elconfidencial.com/alma-corazon-vida/2018-11-14/trabajo-futuro-sociedad-londres_1646490/
[2] https://www.fayerwayer.com/2018/11/teletrabajo-desconexion-chile/


Sunday, September 23, 2018

Spring - configurar usando annotations o XML

Si tuviera que elegir. ¿Qué tipo de configuración Spring sería mi elección?

Configuraciones xml


Los XML son útiles, pero hacen que el desarrollo sea más lento porque nos daremos cuenta en tiempo de ejecución de los errores, los cuales resolveremos uno por uno cada vez que arreglamos y volvemos a ejecutar. Un punto a favor es que no necesita modificar el código fuente.




Configuración anotaciones automáticas en clases


En el caso de las anotaciones usando @Autowired o @Component, ya estamos añadiendo conocimiento al POJO de que está usando Spring, Sin duda, levanta una aplicación rápidamente. Sin embargo, a medida que crece el número de beans, es más complicado tener un control sobre ellos. Además, estamos obligados a modificar el código fuente.



Configuración Java


Las configuraciones java usando, por ejemplo, @Configuration o @Bean, combina lo mejor de los dos mundos. Al igual que el xml, podemos declarar un bean especificando la forma de instanciar, además de obtener los conectores adecuados. También sabremos los errores de tipeo al momento de compilar. Aunque no necesitamos modificar el código fuente donde se encuentran las clases de los Beans, sí tenemos que crear configuraciones usando un proyecto Java, especificando la creación e inyección de beans manualmente.



Sin dudas Configuración de Java es la mejor según mi criterio. Primero no perdemos la idea de tener POJO’s que desconocen con quién se conectarán o el framework a utilizar, ademas tenemos mayor control para crear beans y rapidez para encontrar errores.

Saturday, September 22, 2018

Amazon, inspirando con bajos salarios


Hay historias que son inspiradoras, personas que a través de su esfuerzo han podido salir adelante, soportar el caos financiero y llegar a tener una fortuna.

Jeff Bezos, el genio fundador de Amazon tiene una de esas historias que influencian a cualquier soñador, ¿Cómo tenemos que ser? ¿Cómo comportarnos? Algunas respuestas están dadas por innumerables de articulos y noticias que tenemos de Jeff. La tecnología ha facilitado nuestras vidas, la eficiencia en su máximo esplendor.

Liderazgo y visión


Modelos de liderazgo sobrenaturales para alguien que piensa en el futuro ser humano. Un servicio eficiente, rápido y a un precio asequible. El mundo ama a Amazon, agradece a su fundador por evitarle los mediocres servicios que ya se estaba acostumbrando.

La fórmula para convertirse en el hombre más rico del mundo


Los informáticos sueñan con trabajar en Amazon, su infraestructura, tecnologías y campus son lo mejor del mundo. Pero en los almacenes donde están tus productos se vive un mundo diferente.

Jeff Bezos tiene una fortuna en base a la explotación de sus empleados estresados [1]. Entregando bajos salarios, condiciones laborales brutales y pocos beneficios, él se ha convertido en el hombre más rico del planeta

Las huelgas son comunes en diferentes países. El rendimiento es tan importante que los empleados tienen que trabajar con botellas donde puedan orinar sin dejar el almacén.

Denuncias


El senador Bernie Sanders de Estados Unidos ya envió un proyecto de ley para que pague decentemente a sus empleados, muchos de ellos dependen de los subsidios del gobierno para subsistir [2]. También una conocida comediante llamada Sarah Silverman publicó sus denuncias en Twitter,

En Alemania y España ya iniciaron huelgas para mejorar las condiciones laborales [3]

Mitigando la mala reputación


Jeff anunció que ofrecerá US $ 5.000 a los empleados que no les gusta la empresa y quieren renunciar [4]. Es evidente que no hay planes para mejorar las condiciones laborales y, sin duda, comprar Washington Post es una jugada para favorecer su imagen.

¿Qué pagamos?


Pagamos por un servicio eficiente y financiamos la riqueza de un explotador. No pretendo perjudicar a Amazon ni menos a Jeff, pero es fundamental conocer el costo que tiene la Kindle que tenemos en nuestras manos.


[1] https://www.eleconomista.com.mx/empresas/Jeff-Bezos-amasa-fortuna-gracias-a-la-explotacion-de-los-empleados-de-Amazon-20180722-0008.html
[2] https://www.fayerwayer.com/2018/09/bernie-sanders-jeff-bezos-ley/
[3] http://www.t13.cl/noticia/negocios/miles-trabajadores-amazon-inician-huelga-espana-y-alemania
[4] https://www.cnbc.com/2018/05/21/why-amazon-pays-employees-5000-to-quit.html

Thursday, September 20, 2018

Marketing y la recolección masiva de datos


Cada vez que navegamos usando un browser, las páginas que visitamos, las consultas en un buscador y hasta los clic que hacemos, son información valiosa para los gigantes del internet. Los datos son obtenidos fácilmente para clasificar a los usuarios. Podemos ser clasificados como  posibles vendedores de metanfetaminas, saber nuestros gustos políticos o influir en una elección presidencial como en el caso Cambrian analytics [1]. También pueden predecir si estamos enfermos o si somos buenos candidatos para un crédito.

No es de extrañar que aparezca publicidad sobre algún producto o servicio  que has buscado recientemente. Nada nos asegura que nuestros hábitos no han sido influidos por un programa informático.

Una caja negra


Las clasificaciones son realizadas automáticamente por máquinas que utilizan aplicaciones de inteligencia artificial, Deep Learning o cualquier otro algoritmo que permita agrupar personas basándose en su comportamiento en Internet..

La mayoría de las clasificaciones no proveen la fuente desde donde obtuvieron la información que se vende como secreto de negocio, tampoco son claros los parámetros que fueron claves para tomar una decisión. Por lo tanto, no sabemos cómo mejorar una clasificación que nos perjudica a menos que provean otro servicio para obtener un mejor status.

No hay regulaciones


Hasta ahora, los gigantes como Amazon, Google y Facebook, además de otras empresas de marketing, pueden almacenar toda la información que puedan y venderla. Gastos, salud, viajes, amigos, hasta datos demográficos, es inimaginable lo que pueden saber de nosotros y conocernos mejor que uno mismo [2].

Sin embargo, Europa ya está tomando la iniciativa con proyectos para regular la información coleccionada y entregar poder a los usuarios [3]. Espero que otros países también tomen la iniciativa y comiencen a proteger a los ciudadanos.

Nuestra información es dinero


Hay diferentes estimaciones de cuánto dinero pueden ganar con nuestros datos [4]. Algunos usuarios son más influenciables que otros. Incluso nuestros celulares proveen información de geolocalización, aplicaciones usadas y tiempos de uso que pueden ser provechosas para algún nicho de negocio.

Como ciudadanos, tenemos preocupaciones más grandes con nuestros trabajos, salud, estudios y otros. Es imprescindible que el estado regule la actividad de las empresas y las ganancias con nuestros datos. Si conocemos sus ganancias, podríamos regular nuestra actividad en Internet, incluso ganar dinero extra.


Internet es útil para todos nosotros, nuestra vida ha cambiado gracias a la gran cantidad de datos que existe. Tenemos que ser conscientes sobre lo que producimos con nuestros clic y lo que hacen con las páginas que visitamos y aplicaciones que instalamos. A veces hay que preguntarse ¿Cuál o quién es el producto?.


[1] https://www.cio.com/article/3138972/analytics/how-trump-defeated-clinton-using-analytics.html
[2] https://www.realsimple.com/health/preventative-health/facebook-and-personality
[3] https://www.theguardian.com/technology/2018/apr/19/gdpr-facebook-google-amazon-data-privacy-regulation
[4] http://www.visualcapitalist.com/much-personal-data-worth/

Wednesday, September 19, 2018

Conocimiento y desarrollo - peligros de la IA

Está bien, podemos aceptar la inteligencia artificial y a sus  algoritmos tomando decisiones. Podemos permitir que ellas decidan y nosotras pensar que son mejores, podemos automatizar y obtener una respuesta en milisegundos, evitando largas esperas de revisiones manuales. También podríamos sentirnos como una raza que, en su camino a la evolución, delega y complementa decisiones con ayuda de un Software.

No hay de qué preocuparnos, ellos trabajarán por nosotros.

Problemas terrenales


El desarrollo de la inteligencia y el conocimiento en el ser humano ha ido evolucionando en base a errores y mejoras. ¿Qué pasaría si dejamos de equivocarnos? ¿Qué experiencias podremos transmitir a nuevas generaciones? ¿Podemos pensar en una máquina que explique su entrenamiento y en base a eso, transmita su conocimiento?

Es notorio que hemos avanzado,mejorado tecnológicamente y, de alguna forma, como sociedad. ¿Qué tanto podemos confiar a un Software, lo nuevo a aprender? Ya sabemos que una máquina nos supera para algunas tareas específicas, ¿Acaso vale la pena seguir mejorando para esas tareas? Es difícil saberlo cuando la distancia entre una máquina y un humano se haga gigantescamente grande.

Decisiones concretas, explicaciones ambiguas


Aunque la inteligencia artificial es capaz de hacer tareas específicas mejor que un ser humano, es muy difícil lograr explicar los criterios y por qué ha llegado a esa decisión. A medida que la inteligencia en las máquinas se vuelva más general, ¿Seremos capaces de entender su comportamiento?

Es importante estar consciente que confiamos en máquinas que toman las mejores decisiones sin entender por qué la están tomando. Posiblemente tienen muchos datos sobre las mejores decisiones que son la base para tomar una nueva decisión. ¿Qué nos asegura que la base de entrenamiento sí posee las mejores decisiones, que inicialmente, fueron realizadas por seres humanos.

Detener nuestra evolución


Un tema que se ha tocado pocas veces con respecto a la inteligencia artificial es que corremos el peligro de detener nuestro avance, la innovación y creatividad será analizada por máquinas que buscarán clasificar y evaluar la efectividad de una idea. Siendo algo extremo, la máquina podría ser capaz de producir las mejores ideas.

¿En qué estamos ahora?


Actualmente, las máquinas dominan las decisiones financieras. Cada vez que buscamos una aprobación de crédito, en base a experiencias pasadas de buenos y malos pagadores, éstos toman automáticamente una decisión usando tus datos.

Empresas como facebook y otros que usan datos obtenidos principalmente de tu navegaciòn por Internet, clasifican a las personas desde “estables”, “potenciales terroristas”, “sanos”, “enfermos”, etc. 

Actuar antes de ....


Estoy de acuerdo que obtenemos muchas ventajas al apoyarnos de máquinas inteligentes, hay tareas que no merecen ser realizadas por los seres humanos. Sin embargo, hay tareas que no merecen ser realizadas por las máquinas. Los criterios y formas de evaluar de una máquina se basan inicialmente en decisiones humanas y no podemos asegurar que éstas fueron buenas. Tampoco podemos delegar todo tipo de decisión a un Software porque estamos hechos para aprender mejorando de a poco y cometiendo errores.

Detente y piensa un poco antes de lovear IA ciegamente.




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.

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.