KC

A Filosofia 5S: o segredo para um software inteligente

Banner ilustrativo do artigo sobre a Filosofia 5S. À esquerda, a capa do livro Código Limpo: "Habilidades Práticas do Agile Software", de Robert C. Martin. À direita, sobre um fundo espacial estrelado, destaca-se o título em letras garrafais brancas: "A FILOSOFIA 5S" seguido do subtítulo: "O segredo para um software inteligente".

O livro Código Limpo apresenta uma filosofia japonesa adaptada para o desenvolvimento de software. Apresento como eu utilizo os princípios da técnica no meu dia a dia.

Por Kauã Cavalcante Tempo de leitura: 20 min
Publicado em

O contexto atual

Nunca foi tão fácil criar. Graças à Inteligência Artificial, a curva de aprendizado para desenvolver sistemas caiu drasticamente: o que antes levava meses, hoje resolvemos em dias. Essa tecnologia nos deu superpoderes para tirar ideias do papel, mas o caminho curto tem seu preço. Com prazos cada vez menores, conceitos vitais de arquitetura acabam ficando para trás. O resultado são sistemas que funcionam hoje, mas geram grandes dores de cabeça amanhã. Para evitar isso, é preciso aplicar princípios que focam não apenas no código que roda, mas na comunicação e na escalabilidade do todo. Ao ler o livro Código Limpo, de Robert C. Martin, tive uma visão muito clara sobre o que realmente significa desenvolver software. Ele apresenta cinco conceitos essenciais para criar o que chamo de “aplicação viva”: um sistema que não é estático, mas que possui uma enorme capacidade de evoluir e assumir novas responsabilidades, mantendo sempre uma estrutura clara e de fácil manutenção. Neste artigo, vou te mostrar quais são esses conceitos e como eu os aplico no planejamento e na execução dos meus projetos.

O que é a Filosofia 5S?

Em meados de 1951, o Japão difundiu o conceito de Manutenção Produtiva Total (Total Productive Maintenance ou TPM), uma abordagem que rapidamente ganhou o mundo. Em essência, essa filosofia defende que devemos focar na manutenabilidade tanto quanto na produção. Entre seus pilares mais famosos está o 5S: um conjunto de diretrizes que organiza o processo produtivo em etapas para garantir um resultado final otimizado e escalável.

Robert C. Martin, em sua obra, adapta o 5S para o contexto do desenvolvimento de software, mostrando como construir aplicações seguras e fáceis de manter. São princípios que criam uma base robusta, mas que não precisam ser seguidos como regras inquestionáveis. Cada time tem sua própria cultura e lógica de negócio. Nos meus projetos, onde tenho liberdade total, busco sempre aplicar esses conceitos para elevar o nível da arquitetura e das boas práticas.

Para ficar claro o objetivo de cada etapa, vou utilizar exemplos em Python quando for preciso, por ser uma linguagem de fácil leitura. Então, haverá explicações junto com blocos de código para facilitar o entendimento da Filosofia 5S.

Seiton: Senso de Organização

Imagine-se em uma trilha no meio de uma floresta. Você depende de avisos espalhados pelo caminho e de um mapa para se guiar. Porém, esse mapa está totalmente confuso: os lugares estão nomeados de forma errada, os caminhos parecem desatualizados e você se sente perdido, mesmo tendo esse “suporte”.

No contexto de desenvolvimento de software, a sensação é a mesma quando você precisa dar manutenção em um sistema. Para corrigir um problema, você é obrigado a explorar todo o código para entender o fluxo, mas enfrenta sérias dificuldades: variáveis e funções não possuem nomes claros, o que te força a ler cada linha para descobrir o real propósito daquele trecho. É aqui que entra o Seiton.

De forma abrangente, o Seiton nos ensina a separar o que é útil do que é ruído. No código, isso começa pelo uso de nomes adequados. Robert C. Martin resume bem: tratando a escolha de uma variável com o mesmo cuidado com que se escolhe o nome de um filho. Veja o exemplo abaixo em Python:

Exemplo de código Python demonstrando Seiton com a função sortear_nome e tipagem de dados clara.

Note que, mesmo se você nunca tiver visto Python na vida, o nome da função entrega o jogo: ela sorteia um nome. Não há necessidade de comentários redundantes ou de ler o código de trás para frente. A função é autoexplicativa.

Mas o Seiton não se resume apenas a nomes de funções; ele também dita como organizamos a estrutura de pastas e arquivos de forma lógica. Em aplicações de grande porte, adotar essa mentalidade poupa horas preciosas de engenharia. Em vez de decifrar enigmas, a arquitetura se torna legível, e o propósito do software salta aos olhos logo no primeiro scroll.

Com o Seiton aplicado, nosso mapa de guia agora está organizado. Podemos seguir adiante nessa trilha da Filosofia 5S, sem medo de se perder.

Seiri: Senso de Utilização

Agora que o nosso mapa da floresta está com os nomes corretos graças ao Seiton, tem outro detalhe importante: de nada adiantam placas claras se o caminho estiver cheio de galhos secos, lixo e obstáculos no meio da passagem. É exatamente aí que entra o Seiri.

No desenvolvimento de software, o Seiri é o senso de utilização e descarte. Antes de querer organizar qualquer coisa, precisamos tirar do caminho o que não serve mais: códigos mortos (aqueles trechos que ninguém mais usa), bibliotecas importadas que ficaram esquecidas, variáveis abandonadas e comentários que já não fazem o menor sentido. Quanto mais “trapo” acumulamos no projeto, mais pesado e confuso ele fica.

A seguir, perceba a diferença entre um código poluído e um código que passou pelo filtro do Seiri.

Código com poluição (Antes do Seiri)

Exemplo de código Python poluído com importações não utilizadas, comentários antigos e código comentado.

Código Limpo (Depois do Seiri)

Exemplo de código Python limpo após aplicar o Seiri, mantendo apenas a função essencial e legível.

No primeiro bloco, a gente encontra importações inúteis, funções desativadas presas em comentários e anotações antigas que só geram ruído. No segundo bloco, aplicamos o Seiri: tiramos todo o entulho e deixamos apenas o que tem utilidade real. O resultado? Um código leve, direto ao ponto e pronto para ser limpo com mais profundidade no próximo passo.

Seiso: A chave para identificação de erros

Com os caminhos desobstruídos pelo Seiri e as placas organizadas pelo Seiton, a nossa trilha já está muito mais amigável. Mas e se surgirem pequenas sujeiras pelo caminho no dia a dia, como poças de lama invisíveis? No software, essas “sujeiras” são os bugs, falhas inesperadas e comportamentos estranhos. É aqui que entra o Seiso: o senso de limpeza diária e inspeção contínua.

O Seiso nos ensina que a limpeza não é um evento único, mas um hábito. No código, praticar o Seiso significa refatorar constantemente, escrever testes unitários e tratar possíveis erros antes que eles quebrem o sistema na mão do usuário. Quando mantemos o ambiente limpo, fica infinitamente mais fácil enxergar qualquer poeira fora do lugar.

Veja este exemplo simples em Python tratando uma entrada de dados:

Exemplo de tratamento de erros em Python usando try e except para evitar falhas no programa.

Perceba que, usando o bloco try/except, nós antecipamos um erro clássico (divisão por zero). Em vez do programa “pipocar” na tela com uma mensagem assustadora em vermelho, a função identifica a falha com gentileza e mantém a aplicação rodando de forma limpa.

Seiketsu: Criando padrões visuais de excelência

Até aqui, nós descartamos o inútil com o Seiri, organizamos com o Seiton e limpamos os erros com o Seiso. Mas pense comigo: o que impede a nossa trilha de voltar a virar um caos daqui a duas semanas? Se cada pessoa do time resolver sinalizar o caminho do seu próprio jeito — um usando tinta azul, outro usando fita vermelha —, a bagunça vai voltar. A solução para isso é o Seiketsu, o senso de padronização.

No mundo do código, o Seiketsu garante que todo o time escreva com o mesmo “sotaque”. Para isso, usamos linters, formatadores automáticos e convenções visuais consolidadas pela comunidade, como a PEP 8 no ecossistema Python. A ideia é que qualquer dev abra um arquivo do projeto e sinta que ele foi escrito por uma única pessoa de tão padronizado que está.

Código fora do padrão (Sem Seiketsu)

Exemplo de código Python com formatação inconsistente e sem espaçamentos adequados.

Código padronizado - PEP 8 (Com Seiketsu)

Exemplo de código Python padronizado segundo as normas da PEP 8 com espaçamento correto.

Repare como o espaçamento entre os operadores (+, /), o uso de duas linhas em branco entre as funções e os nomes padronizados deixam a leitura incrivelmente confortável. O Seiketsu transforma a leitura do código em algo fluido e previsível.

Shutsuke: O pilar de sustentação da metodologia 5S

Chegamos ao último S, e arrisco dizer que ele é o mais desafiador de todos. Vimos como descartar (Seiri), organizar (Seiton), limpar (Seiso) e padronizar (Seiketsu). Porém, tudo isso cai por terra se não houver Shutsuke: o senso de disciplina e autoconsciência.

O Shutsuke é sobre criar hábitos sustentáveis a longo prazo. No dia a dia de tecnologia, isso se traduz em manter a mente atenta em todos os pull requests, fazer code reviews construtivos e integrar checagens automáticas no nosso fluxo de trabalho usando CI/CD (Integração Contínua). O Shutsuke é o garantidor de que a qualidade do código não seja um evento isolado, mas parte da cultura da equipe.

Para ilustrar isso na prática, imagine uma função que simula uma “esteira de checagem automática” antes do seu código ir para a produção:

Exemplo de função Python simulando uma esteira de verificação CI para validar os padrões do 5S.

Esse pequeno script representa a mentalidade do Shutsuke: um compromisso automático com a qualidade. Com a disciplina certa, os outros 4 sensos deixam de ser uma “tarefa chata” e viram o modo natural do time trabalhar.

O produto final

No fim das contas, a aplicação da Filosofia 5S no desenvolvimento de software não é sobre seguir regras engessadas por vaidade técnica. É sobre respeito com quem trabalha com você — inclusive com a sua “versão do futuro”, que vai precisar dar manutenção nesse sistema daqui a seis meses.

Lembra daquela trilha na floresta com o mapa confuso que mencionamos no começo? Quando unimos os 5 sensos:

  • Limpamos os obstáculos do caminho (Seiri);
  • Colocamos placas claras e precisas (Seiton);
  • Removemos a lama e as armadilhas no trajeto (Seiso);
  • Deixamos todas as sinalizações no mesmo padrão visual (Seiketsu);
  • E garantimos que a trilha seja mantida diariamente (Shutsuke).

O resultado dessa jornada é um software previsível, escalável e extremamente prazeroso de evoluir. A complexidade do mundo real já traz desafios suficientes para o nosso dia a dia; o nosso código não precisa ser mais um deles.