Um Guia Prático sobre Convenções de Commits

Os commits são uma parte essencial do processo de desenvolvimento de software. Eles nos permitem rastrear as alterações feitas em um projeto e fornecem um histórico de tudo o que aconteceu. No entanto, nem todos os commits são úteis, tenho certeza que você já viu algumas mensagens de commits completamente inúteis… tenho certeza que você já comitou mensagens inúteis… rsrs.. admita… estamos entre amigos aqui ;).

O que são Conventional Commits?

Os Conventional Commits são uma convenção de nomenclatura para mensagens de commit. Eles seguem um formato específico, consistindo de um cabeçalho, um corpo opcional e um rodapé também opcional, separados por uma linha em branco. O cabeçalho é composto por um tipo, um escopo (opcional) e uma descrição concisa do commit.

A estrutura básica de um commit convencional é a seguinte:

Tipo(escopo opcional): descrição

Corpo opcional

Signed-by: fulano@fulano.com.br
Refs: #123

Tipos de Commits

Existem vários tipos de commits já convencionados, mas nada impede que você crie os seus pr´óprios tipos.

Aqui estão alguns dos tipos mais comuns:

  • feat: Usado para adicionar uma nova funcionalidade ao projeto.
  • fix: Usado para corrigir um bug ou problema existente.
  • docs: Usado para adicionar ou atualizar a documentação do projeto.
  • style: Usado para fazer alterações de formatação, como espaços em branco, indentação, etc.
  • refactor: Usado para fazer alterações no código que não adicionam uma nova funcionalidade ou corrigem um bug.
  • test: Usado para adicionar ou modificar testes no projeto.
  • chore: Usado para fazer alterações na configuração do projeto, scripts auxiliares, etc.

Usos e Benefícios

Ao adotar os Conventional Commits, você estabelece uma estrutura clara e consistente para seus commits. Isso torna mais fácil para você e outros desenvolvedores entenderem o propósito de cada commit e acompanhar as mudanças feitas ao longo do tempo.

Outro benefício é a possibilidade de integração com ferramentas de automação, como sistemas de integração contínua. Por exemplo, você pode configurar seu sistema de CI/CD para executar automaticamente testes e implantar seu código em diferentes ambientes com base nos tipos de commits.

Outro benefício é a geração automática de changelogs. Com base nas mensagens de commit, você pode gerar um log de alterações que lista todas as funcionalidades adicionadas, bugs corrigidos e outras alterações relevantes em cada versão do seu projeto.

E por fim, ao adotar um padrão de commits, você terá uma melhor comunicação entre os membros da equipe. Ao seguir a convenção, todos os desenvolvedores têm uma compreensão clara do que cada commit representa e podem colaborar de forma mais eficiente.

Conclusão

Não há motivos para não adotar o uso de Conventional Commits, trata-se de uma abordagem simples e eficaz para padronizar a forma como escrevemos nossos commits. Eles fornecem clareza, organização e facilidade de entendimento para o histórico de alterações de um projeto. Além disso, eles trazem benefícios adicionais, como integração com ferramentas de automação e geração automática de changelogs.

Portanto, se você ainda não está usando os Conventional Commits em seus projetos, considere adotá-los. Segundo um estudo realizado por mim com “migo” mesmo, as chances de dor de cabeça caem 50% só de utilizar padrões nos seus projetos ;).

Se quiser conhecer em mais detalhes, indico a leitura do site oficial:

Conventional Commits: A specification for adding human and machine readable meaning to commit messages.

No próximo post trarei um exemplo prático de como adotar esse padrão pode te ajudar no seu dia-a-dia.

Enquanto o próximo post não chega, dá uma olhada nos últimos 2 posts sobre Qualidade de dados:

Fechado!?

Abraço a todos, e até a próxima!

Qualidade de dados – Parte 2

No post anterior entramos bastante no campo teórico, com a intenção de esclarecer e desmistificar alguns termos e conceitos. Agora, vamos ver como colocar tudo o que vimos no post anterior em prática.

Se você não viu o post anterior… clique aqui, e leia ele primeiro, depois pode voltar pra cá =D!

Técnicas e ferramentas para Qualidade de dados

Perfil de dados (Data Profiling)

Data profiling é uma técnica para descoberta e investigação de problemas de qualidade de dados. É nessa etapa que você entende o “estado de saúde” dos seus dados.

– Data profiling envolve analisar uma ou múltiplas fontes de dados e coletar os metadados, traçar o perfil dos dados, ver valores faltantes, entender correlações entre atributos entre outras N possibilidades.

– O Data Steward(administrador de dados) usa os resultados para investigar a origem dos erros de dados

Inicialmente essa etapa era manual e muito morosa. Felizmente hoje temos ferramentas e bibliotecas em linguagens de programação que nos ajudam e são capazes de gerar uma perfil completo em segundos, ou minutos.

Análise e interpretação de dados (Data Parsing)

Data parsing é o processo de separação de entrada de dados complexas em campos separados. Isso também significa converter o dado em um tipo de dado diferente.

Exemplos:

– Converter um tipo de dado texto para numérico.
– Converter o nome completo ou endereço em campos separados.
– Converter HTML em plain text
– Converter um arquivo json em campos separados
– …

Padronização de Dados (Data Standardization)

Data standardization é o processo que converte o dado em um formato comum.

Enquanto no data parsing podemos quebrar um dado em mais de um campo para encontrar quem está fora do padrão, com data standardization colocamos esses dados fora do padrão, no padrão comum a todos.

Exemplos:

– Converter um telefone fora do padrão esperado:
– Entrada: 99999999999
– Saída: (99) 99999-9999
– Remover pontuação do CPF:
– Entrada: 999.999.999-99
– Saída: 99999999999
– Converter uma data fora do padrão esperado:
– Entrada: DD/MM/YYYY
– Saída: YYYY-MM-DD
– …

Resolução de identidade (Identity Resolution)

Trata-se de criar um único perfil de dados para uma entidade (cliente, fornecedor, funcionário…) contendo informações de diferentes fontes de dados.

Resolução de identidade é o processo que confere, valida e adiciona informação em um único e rico perfil de dados para uma pessoa, negócio ou outra entidade

Exemplos:

  • Imagine que uma empresa de serviços digitais tenha uma base de clientes com milhões de registros. A equipe de qualidade de dados descobre que muitos clientes possuem mais de uma conta na plataforma, por terem se cadastrado com nome, sobrenome e endereço de email diferentes. Com a resolução de identidade, a equipe une esses registros em um só, evitando que um mesmo cliente seja contabilizado várias vezes e melhorando a precisão da base de dados. 
  • Em um hospital, é necessária a integração de diversos sistemas para conseguir uma visão completa do histórico de saúde de um paciente. No entanto, o cadastro de pacientes nem sempre é consistente, com variações de nomes, números de documentos e datas de nascimento. Com a resolução de identidade, os diferentes registros de cadastro podem ser unificados, facilitando a gestão de informações e assegurando uma melhor gestão de saúde

Em resumo, essa etapa visa unificar diferentes fontes de dados com intuito de criar um perfil único e rico da entidade em questão.

Processo de Resolução de Identidade

A seguir os 5 principais passos no processo de Resolução de identidade.

  1. Identify (Identificar): Neste primeiro passo, você identifica todas as fontes de dados relevantes que contêm informações sobre as entidades que deseja resolver. Isso pode incluir bancos de dados internos, sistemas de CRM, Redes sociais, feeds de dados externos, entre outros. O objetivo é reunir todas as informações disponíveis sobre as entidades que serão tratadas durante o processo de resolução de identidade.
  2. Connect (Conectar): O passo de conectar envolve a criação de pontos de conexões entre os dados de diferentes fontes que se referem à mesma entidade. Isso pode ser feito identificando e associando chaves de identidade comuns, como números de identificação exclusivos, endereços de e-mail, números de telefone, endereço IP, padrões de tempo, etc. O objetivo é estabelecer relações entre os dados dispersos que se referem à mesma entidade.
  3. Match (Corresponder): Durante o passo de correspondência, os dados conectados através dos pontos de conexões são comparados e avaliados para identificar registros que se referem à mesma entidade, mesmo que possuam diferenças em termos de formatação, ortografia, abreviações, etc. Isso é feito usando técnicas de comparação de strings e algoritmos de correspondência que atribuem uma pontuação de semelhança entre os registros. O objetivo é encontrar correspondências precisas e confiáveis entre os dados conectados.
  4. Validate (Validar): Depois que os registros correspondentes são identificados, é importante validar a precisão e a integridade das correspondências encontradas. Isso pode envolver a verificação manual das correspondências para garantir que não haja erros ou falsos positivos. Além disso, também é importante validar a qualidade dos dados de cada fonte que está sendo conectada para garantir que sejam confiáveis e precisos. O objetivo é garantir que as correspondências identificadas sejam válidas e representem com precisão as entidades em questão.
  5. Activate (Ativar): O passo final é ativar as correspondências identificadas e validadas, o que pode incluir a consolidação dos registros correspondentes em um único registro mestre ou a atualização de sistemas e bancos de dados com as informações consolidadas. O objetivo é garantir que as correspondências identificadas sejam utilizadas de forma eficaz e que as informações consolidadas sejam disponibilizadas para uso em diferentes aplicativos e processos de negócios.

Esses cinco passos trabalham juntos para realizar com sucesso o processo de resolução de identidade, garantindo que as informações dispersas sobre as entidades sejam conectadas, correspondidas, validadas e ativadas de forma precisa e confiável.

Ligação de dados (Data Linkage):

Data linkage, também conhecido como record linkage, ou simplesmente ligação de dados, refere-se ao processo de conectar ou associar conjuntos de dados distintos que se referem à mesma entidade ou evento, para criar uma visão mais completa e integrada das informações.

Mas não se engane, apesar de muito parecidos, Identity resolution e Data Linkage tem propósitos diferentes…

Exemplos:

– Em um país como o Brasil, onde há muitas informações sobre as eleições em diferentes bases de dados, é possível utilizar o Data Linkage para unificar essas informações e gerar análises mais precisas. Por exemplo, cruzando informações de votos em diferentes eleições, é possível identificar padrões políticos de regiões e faixas etárias, contribuindo para análises mais precisas e fundamentadas. 

– Em empresas que lidam com muitas fontes de dados, o Data Linkage é essencial para identificar oportunidades de negócio e segmentar clientes. Por exemplo, uma empresa de seguros pode cruzar informações de clientes que já sofreram acidentes ou sinistros com informações sobre características do veículo ou comportamento de direção, gerando perfis de risco e permitindo ajustes de preço e cobertura mais precisos.

Resolução de identidade x Data Linkage

Embora os termos “data linkage” (ligação de dados) e “identity resolution” (resolução de identidade) estejam relacionados e frequentemente usados em conjunto, eles se referem a aspectos ligeiramente diferentes do processo de integração e análise de dados:

  1. Data Linkage (Ligação de Dados):
    • A ligação de dados é o processo de conectar ou associar conjuntos de dados distintos que se referem a entidades ou eventos semelhantes, mas não necessariamente idênticos.
    • O objetivo principal da ligação de dados é criar conexões entre diferentes fontes de dados para criar uma visão mais completa e integrada das informações.
    • Isso pode envolver a identificação de chaves de identidade comuns entre os conjuntos de dados e a combinação dos dados com base nessas chaves.
    • A ligação de dados não se concentra necessariamente na resolução de duplicatas ou na identificação de registros correspondentes, mas sim em criar associações entre os dados dispersos.
  2. Identity Resolution (Resolução de Identidade):
    • A resolução de identidade é um subconjunto da ligação de dados que se concentra especificamente na identificação e resolução de registros duplicados ou correspondentes em diferentes fontes de dados.
    • O objetivo principal da resolução de identidade é identificar registros que se referem à mesma entidade ou indivíduo, mesmo que esses registros possam ter diferenças em termos de formatação, ortografia, abreviações, etc.
    • Isso envolve a comparação de registros com base em chaves de identidade comuns e a aplicação de algoritmos de correspondência para determinar a similaridade entre os registros.
    • A resolução de identidade resulta na consolidação de registros correspondentes em um único registro mestre, eliminando duplicatas e garantindo a integridade dos dados.

Em resumo, enquanto a ligação de dados se refere à conexão de conjuntos de dados distintos para criar uma visão integrada dos dados, a resolução de identidade é um aspecto específico desse processo que se concentra na identificação e eliminação de registros duplicados ou correspondentes.

Limpeza de dados (Data Cleansing):

Limpeza de dados é o processo de resolução de dados corrompidos, imprecisos, incompletos ou irrelevantes.

Esse processo se baseia nas etapas anteriores utilizando o data parsing, data standartization, identity resolution e data linkage.

A prática recomendada para qualidade de dados é determinar a origem dos erros, e eliminar a causa raíz.

Etapas da limpeza de dados:

– Identificar os campos de dados críticos
– Isso servirá para garantir que nosso tempo não seja gasto com dados sem muita relevância para o negócio

– Coletar os dados e resolver os problemas encontrados:
– Remover valores duplicados
– Resolver valores vazios
– Parsear e padronizar os dados.

– Revisar e melhorar

Enriquecimento de dados (Data Enhancement)

Data Enrichment é um processo de adicionar informações a uma base de dados existente, com o objetivo de enriquecê-la e torná-la mais útil para análises e tomadas de decisão. Por exemplo, ao adicionar informações demográficas, socioeconômicas e de comportamento do consumidor a uma base de dados de vendas, é possível criar segmentações mais precisas de clientes para direcionar campanhas de marketing.

Monitoramento e Inspeção (Data Inspection and Monitoring)

O processo de inspeção e monitoramento de dados talvez seja um dos mais subestimados dentro da qualidade de dados. Ele visa o aprimoramento contínuo, mostrando a saúde dos dados ao longo do tempo.

É interessante criar KPI’s para qualidade de dados. Dessa forma temos um compromisso com a qualidade, temos como medir nosso progresso e saber se o ROI (Retorno sobre o Investimento) está sendo positivo.
Sem um programa de monitoramento e um KPI para alcançar, a qualidade tende a cair.

Resumindo tudo em um passo a passo:

Step 1: Definir as metas de melhoria da qualidade de dados.

Etapa muito subestimada por muitos, mas é preciso investir tempo nessa etapa com o objetivo de definir o que exatamente queremos atingir com a melhoria na qualidade dos dados. É preciso saber também quais os processos de negócio serão impactados com o programa. A qualidade de dados não pode ser só um hype, ela tem que ter um objetivo muito claro e bem definido.

É preciso estar em alinhamento com o proprietário dos dados, pois será ele o responsável pela aprovação das iniciativas.

Daqui já podem sair as regras de qualidade de dados.

Step 2: Perfil de dados (Data Profiling):

Aqui será feito uma avaliação dos dados pra entender o cenário atual de saúde dos dados, e entender como está a qualidade em relação as dimensões da qualidade de dados.

Step 3: Conduzir uma avaliação da qualidade de dados:

Nessa etapa será avaliado o resultado do perfil de dados, com os objetivos que foram definidos no Step 1. Dessa avaliação surgirão os problemas que precisaremos resolver no step seguinte.

Um ponto importante é que aqui devemos avaliar a causa raíz do problema, para que possamos resolver o problema uma única vez.

Utilizar a técnica dos 5 porquês pode ser muito útil. Se você não conhece essa técnica, sugiro que leia este artigo.

Step 4: Resolver problemas de qualidade de dados:

Aqui é onde faremos o plano e a execução das melhorias.

Única premissa aqui, é que o plano deve cobrir todos os gaps encontrados na etapa anterior.

Importante definir as pessoas que executarão cada item do plano, e quando os itens serão executados.

Importante listar no plano tudo aquilo que for relevante para a execução do plano: treinamentos, budget, contratações, etc.

Este é um passo bem longo e importante pois podemos ter mudanças drásticas, como criação de novos times, alterações em sistemas, criação e/ou mudanças de processos, treinamentos…

Step 5: Monitorar e controlar:

Último mas não menos importante, é preciso monitorar a qualidade de dados, baseado sempre nas regras de qualidade de dados que foram levantadas no passo 1.

De tempos em tempos, é preciso reavaliar como está a saúde dos dados.

Lembre-se… é de extrema importância que a qualidade de dados esteja atrelada à um KPI ou algum indicador, para que a empresa tenha uma meta a ser perseguida.

Ufaaa…!!!

Acho que por enquanto isso é tudo… espero que essas anotações, que fiz para mim mesmo, sirvam para vocês também!

Abraço e até a próxima!