Photo by Ryoji Iwata on Unsplash

Um dos conceitos mais frequentemente lembrados no desenvolvimento de software é o DRY: “don’t repeat yourself” ou “não se repita”.

Apesar de ser uma boa filosofia para se ter mente, defendo que ele não deve ser levado tão a sério.

Stay tuned!

Explico o porquê

Para exemplificar a ideia, vamos imaginar um projeto Java e Spring com a clássica busca de produtos num banco de dados MongoDB, ilustrada pelo pseudo código a seguir.

Pseudo código que representa a busca de produtos em um banco de dados MongoDB

No pseudo código acima, é importante chamar atenção para a repetição dos nomes de atributos nas…


Muito se discute sobre o quanto a tecnologia é hostil que afasta mulheres. É só abrir o Twitter para encontramos múltiplos relatos de assédio moral ou até sexual, palavras para desincentivo, humilhação e todo o tipo de injustiça.

Por muito tempo essa sujeira foi varrida para debaixo do tapete e a desculpa de que “mulheres não se interessam por tecnologia porque o cérebro delas é diferente e tem mais aptidão para área de humanas” foi amplamente usada.

Não sou nenhuma especialista em neurologia, mas ouso dizer que essa crença — mesmo se for baseada em estudo científico — é completamente…


Photo by Mitchell Luo on Unsplash

Em dia desses apareceu no meu e-mail uma mensagem curiosa propondo uma chamada para falar sobre uma vaga em aberto para o Google. Num primeiro momento achei que era “spam/scam”, pois aquilo parecia muito longe da minha realidade. Por que o *f*ck*ng* Google iria me mandar um e-mail?

Mesmo sem acreditar fiz alguma pesquisa sobre a remetente e agendei um horário. Não é que era verdade mesmo? A pessoa explicou que a vaga era para Software Engineer em Tokyo e perguntou se eu estaria disposta a me mudar. Nem precisei pensar muito: “Eu vou para quase qualquer lugar pelo Google!


Using Java and GitLab4J

Photo by Annie Spratt on Unsplash

GitLab is a well-known platform that allows a team to manage projects, to create documentation, pipelines, repositories and more.

It can be used to manage the project’s Sprints and to replace other tools such as Trello or Jira.

When utilized from “end-to-end” during the development cycle, it allows some automatizations, such as to generate documentation or a changelog based on requirements collected and developed during the process.

This article aims to demonstrate how to use the project’s issues or User Stories to generate a changelog, a Wiki page or “readme” file that can be delivered to costumers automatically.

Technical stack


E argumentos para convencer de que são mentiras.

Photo by Tim Mossholder on Unsplash

Foram muitas as vezes que ouvi de líderes ou colegas o conselho de que deveria produzir conteúdo técnico como um dos passos do livro de receita para ser “uma profissional melhor”.

Porém, certamente por insegurança e talvez até por um pouco preguiça, arranjei muitas desculpas para não o fazer.

Esse texto é um tanto motivacional, confesso. Mas após começar escrever algumas pessoas compartilharam comigo exatamente as mesmas inseguranças que tinha e por isso resolvi registrar. Se não for para motivar alguém, vai motivar a Daniane do futuro que vai voltar a ler isso algum dia.

(Recado para Daniane do futuro…


Is it the end of the line for getters, setters, and Lombok project?

Photo by Mike Kenneally on Unsplash

If you try to teach Java to someone coming from another less verbose language, you can often face resistance regarding the writing of getters, setters, toString, equals, and hashCode methods and the need of so much boilerplate code.

Vintage developers will not bother about it. We simply got used to instructing the IDE to generate them for us.

But let’s face it: we don’t particularly like them. We just got used to them. We accepted the need for these methods, but to be honest: it could be different.

Java 14 has launched records: a preview feature for a new type…


Photo by JJ Ying on Unsplash

After having tested tools to automate the database migrations, it is time to integrate the chosen one with my GitLab repository and build a continuous delivery pipeline for AWS.

Project stack

You can check my previous story about a comparison between Flyway and Liquibase here, but *spoiler alert* this implementation has the following stack:

The process


A comparison between tools

Photo by Aryan Singh on Unsplash

As a software developer, I want to automatize my relational database migrations on test, staging or production environments. To achieve that, I have tested two migration tools widely know on Java universe: Liquibase and Flyway.

The stack behind this test project was:

  • Spring Boot & Java 11 application.
  • MySQL database.
  • Maven plugin to run both Liquibase and Flyway.

Some background

Database changes can be painful and destructive, not only on monoliths but especially on distributed systems. …


A brief overview

Photo by Daniele Levis Pelusi on Unsplash

This is part of a bigger story.

Even the free version of Liquibase looks powerful and offers rollback command, comparison between two databases and different file formats for migrations.

It also claims to be able to compare Spring Entities with the database and generate a migration script from the differences. I have tested it but I was not able to get it working due to something that looked like a bug on Liquibase. Also, StackOverFlow’s wisdom said that it is not a good practice.

It can be executed when Spring starts up the application, through Maven command and more.

You…


A brief overview

Photo by Federico Fioravanti on Unsplash

This is part of a bigger story.

Flyway uses the old but gold SQL and the migrations are applied based on files’ name order. For instance, V1_1_0__person.sql will be applied before V1_2_0__data.sql.

The name after “__” does not really matter and once a script is executed, you can not change the file anymore.

It can be executed when Spring Boot starts up the application, through Maven command or command line.

On my demo project it is possible to check the following:

The main commands are below.

Commands for Maven plugin

Flyway also creates one control table on the database where it is possible to watch the changes.

Daniane P Gomes

Software Engineer. Always learning.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store