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.

Friday, December 2, 2016

Flyway - Automatizar la migración de bases de datos

Uno de los problemas comunes al habilitar una nueva versión de un producto Software es coordinarla con una base de datos (BD) que contenga  las tablas/colecciones y datos acordes con la versión a utilizar. ¿Qué hacer cuando ya tenemos una base de datos poblada con información que debe mantenerse y además hay que hacer cambios sobre la base de datos para que funcione la nueva versión? Dejando aparte la recomendación de hacer un backup, es imprescindible tener una estrategia automatizable para realizar este proceso.

Flyway


Al rescate puede llegar algo más avanzado que analizar las diferencias entre los scripts, algo así como encontrar las diferencias y probar si todo funciona bien, lo cual es muy propenso a errores.

Es aquí donde nos encontramos con Flyway, una herramienta de migración para base de datos SQL (para casos NoSQL existen otras tecnologías también) de forma versionada. Usando Flyway tenemos archivos versionados, que contienen los scripts, dentro de un directorio donde la estrategia para manejar las versiones depende de cada compañía/producto. Sin embargo, podemos utilizar un alcance simple donde se añade un script para cada nueva versión del producto.



Los nuevos scripts pueden contener nuevas tablas, inserciones en las bases de datos y cualquier otra operación que pueda manejarse por medio de scripts y que entienda la base de datos a utilizar. Mucho cuidado con los delete y cambios en columnas de tablas.

Operaciones


Flyway posee soporte para una gran variedad de bases de datos SQL y en el caso de no existir un soporte, puede ser customizado e integrar lo que se necesite. Las operaciones implementadas son las siguientes:

  • migrate: migra la BD.
  • clean: limpia la BD.
  • info: entregar información de la BD migrada
  • validate: valida que la BD tenga todas las versiones en orden.
  • repair: repara una BD con problemas de migración en sus versiones.

¿Cómo la base de datos conoce la versión de migración?


Tal como lo hacen otras tecnologías similares, en la base de datos se agrega una nueva tabla donde se especifica la versión de scripts migrada. Así evita que un script sea ejecutado más de una vez.

Implementación


Con respecto a cómo implementar esta tecnología, tenemos varias opciones.

- Utilizar la librería como dependencia e implementar las migraciones invocando a los métodos que disponibiliza su API en JAVA.
- Invocarlo como comando. En este caso, la máquina debe tener el comando Flyway disponible.
- Ejecutar el Mojo desde Maven. Éste modo no necesita código y la lista de operaciones pueden customizadas usando el archivo pom.xml. Personalmente, es la opción que más me acomoda.

Existen otras características para Flyway que no vale la pena mencionar por aquí, pero que puedes encontrar en la documentación oficial de Flyway.

Para terminar


Recuerda que el proceso de migración puede resultar un dolor de cabeza en proyectos grandes y existen formas inteligentes para manejar este proceso. No olvides investigar las otras alternativas y decidirte con alguna viable según las necesidades de tu producto.