Notas do dia a dia de um engenheiro de software

Reflexões, tutoriais e descobertas do mundo real. Entre Java, Kafka, bancos de dados e processamento de streams, sobra espaço para filosofia do código e materiais para palestras.

Por que escrever um bom código?
Artigo

Por que escrever um bom código?

Por que escrever um bom código? Não por estética, mas por estratégia. Neste artigo desmonto a subjetividade do termo "bom" para mostrar que a qualidade do código impacta diretamente nos custos, na evolução do projeto e até na satisfação do usuário. Com exemplos reais, de vazamentos de dados a bugs que derrubaram a nota de aplicativos, explico que escrever código claro e comunicativo é um investimento que evita retrabalho e salva negócios no médio e longo prazo.

Por que usar LLMs é um problema ético?
Artigo

Por que usar LLMs é um problema ético?

LLMs não são mágicas, nem inteligências. São máquinas probabilísticas treinadas com seu trabalho gratuito. Quero explorar os 8 maiores problemas éticos que o uso de IAs generativas trazem: da exploração de trabalhadores africanos ao consumo de energia suja, passando por vieses invisíveis e a homogeneização da cultura.

Porque usar LLMs para programar é uma péssima ideia?
Artigo

Porque usar LLMs para programar é uma péssima ideia?

Será que usar LLMs para programar é realmente uma péssima ideia? Entre a imposição do mercado, a perda do raciocínio crítico e os custos ocultos, a resposta não é tão simples quanto parece.

Ponteiro de Schrödinger
Artigo

Ponteiro de Schrödinger

Ponteiros não existem em Java. Ou existem? A verdade é que o conceito está lá, disfarçado de referências, NullPointerException e variáveis final. Neste artigo, exploro a fronteira entre a abstração das linguagens modernas e a realidade do hardware, passando por exemplos em C e Java, e mostrando como é fácil — e perigoso — reinventar ponteiros sem perceber. Uma reflexão sobre design de código, concorrência e as armadilhas que criamos ao ignorar a biblioteca padrão.

Entendendo o Jakarta Persistence API (JPA)
Artigo

Entendendo o Jakarta Persistence API (JPA)

O JPA é uma especificação Java que facilita o mapeamento de objetos Java para tabelas em um banco de dados relacional. Ele é amplamente utilizado em frameworks como Spring e Quarkus, e é uma parte fundamental do ecossistema Java para desenvolvimento de aplicações que interagem com bancos de dados. Neste post, vamos explorar os principais componentes do JPA e como utilizá-los para interagir com um banco de dados.

Injeção de Dependência e sua importância no gerenciamento da conexão com o banco de dados
Artigo

Injeção de Dependência e sua importância no gerenciamento da conexão com o banco de dados

A injeção de dependência é uma prática fundamental para o gerenciamento eficiente da conexão com o banco de dados em aplicações Java. Neste post, exploramos o que é injeção de dependência, como ela funciona e por que é tão importante para o desenvolvimento de aplicações Java modernas.

Entendendo o JDBC
Artigo

Entendendo o JDBC

O JDBC é uma API que permite a comunicação entre aplicações Java e bancos de dados. Ele fornece um conjunto de classes e interfaces que facilitam a execução de operações de banco de dados, como consultas, inserções, atualizações e exclusões. Nesse post, vamos explorar os principais componentes do JDBC e como utilizá-los para interagir com um banco de dados.

SQL na Prática: Consultas, Inserções e Atualizações de dados com PostgreSQL
Artigo

SQL na Prática: Consultas, Inserções e Atualizações de dados com PostgreSQL

Dê vida aos seus dados com SQL! Neste tutorial imersivo, você aprenderá a construir consultas eficientes, explorar junções complexas, aplicar funções de agregação e organizar seu código com CTEs e subconsultas — tudo isso usando um modelo realista de banco de dados corporativo. Ideal para desenvolvedores, analistas e estudantes que desejam dominar a linguagem SQL além do básico e escrever queries poderosas e otimizadas.