5S é um sistema de controle de qualidade bem conhecido. Ele foi desenvolvido no Japão após a Segunda Guerra Mundial para garantir que as empresas que o utilizassem entregassem os melhores produtos possíveis ao mesmo tempo em que cria um bom ambiente de trabalho.
Uma das empresas mais famosas que utilizam o sistema 5S é a Toyota. Pode-se dizer que o sistema é voltado para empresas de produto. No entanto, ele também aparece, de forma indireta, em livros sobre qualidade de código, como o famoso “Código Limpo”, e pode ajudar empresas de tecnologia a alcançar uma melhor entrega de código ao criar um sistema de trabalho baseado nos princípios do 5S.
Os cinco princípios

1. Seiri ou “Remover o que for desnecessário”
Seiri consiste em organizar todos os itens e remover qualquer coisa desnecessária, descartando-a. A ideia é criar um ambiente onde seja fácil encontrar o que for necessário, evitando distrações causadas por itens não utilizados e/ou lixo. Tudo o que não for necessário deve ser removido do ambiente de trabalho.
Com base nesse princípio, devemos remover qualquer código não utilizado da base. Isto inclui qualquer código comentado, comentários que não explicam nada e, claro, qualquer código que não faça nada ou que sequer seja chamado no restante do código. Se o código comentado for algo que você sabe que precisará no futuro, você pode criar uma nova branch e fazer um commit; usar boas mensagens de commit para saber onde encontrar a remoção; ou simplesmente anotar a hash do commit em um local acessível.
Do lado do seu computador, limpe seu editor. Você tem mais plugins do que precisa? Existem abas do navegador que podem ser fechadas, e-mails que podem ser apagados? Se você usa terminal, verifique seus dotfiles, aliases e pastas também. Sempre há algo que pode ser removido para manter seu computador mais organizado.
Este princípio também pode ser aplicado à sua mesa de trabalho. Remova qualquer item desnecessário que possa estar criando bagunça. Jogue fora ou guarde em um local acessível caso não seja algo que você use diariamente, mas que sabe que precisará no futuro. Mantenha sua mesa limpa, com apenas os itens necessários. Mas lembre-se de que apenas você pode decidir o que é necessário ou importante para você.
2. Seiton ou Ordenar
Este princípio tem como objetivo organizar tudo o que foi definido como necessário, mas que está fora de lugar. Isto cria um fluxo de trabalho mais eficiente, onde todos sabem onde encontrar qualquer item com base em um sistema categorizado.
No ambiente de código, a estrutura de pastas deve usar nomes fáceis de entender e cada trecho de código deve estar em uma pasta relacionada à sua categoria. O mesmo vale para nomes de arquivos, funções e classes. Isso significa evitar nomes com pouco significado, como utils e helpers, pois isso é equivalente a colocar código em um depósito genérico, onde qualquer coisa pode estar dentro.
Também é importante criar um sistema que ajude os desenvolvedores a categorizar seu código, seja ele MVC, MVVM, arquitetura hexagonal ou qualquer outro sistema. O ponto central é que ele facilite a organização e a localização do código. A ideia é reduzir as escolhas subjetivas, como “acho que seria bom colocar isso aqui”, e substituí-las por uma abordagem mais estruturada, como “estamos usando um sistema MVC e este é um controlador, então ele deve estar na pasta controllers”.
Nos meus projetos pessoais, prefiro arquiteturas recursivas, onde é possível separar melhor o que pertence a um subsistema, em vez de sempre usar pastas globais. Você pode imaginar isso como um projeto onde, ao entrar na pasta de uma funcionalidade específica, há um mini MVC dentro dela, e essa funcionalidade está dividida em módulos, cada um contendo mais mini MVCs.
No espaço digital, podemos aplicar esse princípio à organização de arquivos no computador ou até mesmo nas redes sociais. Você está misturando coisas diversas? Há fotos na sua pasta de vídeos? Você publicou algo na rede social errada? Este é o momento de recategorizar e colocar cada item no local adequado, garantindo que você possa encontrá-los facilmente no futuro.
No espaço físico, esse princípio pode ser usado para organizar os objetos que você decidiu manter no seu quarto ou escritório, mas que não precisam estar na sua mesa. O ideal é encontrar um local fixo para armazená-los, garantindo que você sempre saiba onde procurar determinado tipo de item. Isto evita que sua mesa volte a ficar bagunçada por conta de você querer manter as coisas por perto por medo de não encontrá-las depois.
Um bom princípio é manter os itens que você usa com mais frequência perto de você e visíveis, enquanto os itens menos usados podem ser armazenados em locais mais distantes e discretos. Por exemplo, se você gosta de escrever à mão, pode manter um único caderno e uma caneta próximos, enquanto os cadernos e canetas extras podem ficar guardados em uma caixa ou outro local de fácil acesso para quando precisar deles. Minhas categorias principais de organização são:
Visível na mesa: itens que uso todos os dias e que quero manter à vista, desde coisas básicas do computador até utensílios para chá, já que gosto de chá. Aqui também coloco alguns brinquedos que me lembram do que gosto e me ajudam a não levar tudo tão a sério.
Perto da mesa, mas não visível: coisas que uso com frequência, mas que não precisam estar à mostra, como brinquedos anti-estresse, remédios, papel e canetas.
Visível, mas não perto da mesa: itens que uso fora do trabalho ou que trago para a mesa temporariamente e depois guardo de volta. Aqui ficam livros, cadernos antigos, mais utensílios para chá, jogos e diferentes teclados.
Quase escondido: caixas organizadas, onde sei exatamente o que há dentro, mas que não ficam visíveis nem ao meu alcance imediato. Nelas guardo cadernos extras, documentos, mousepads reservas, peças de mouse e teclado para personalização ou reparo.
3. Seiso ou “Limpar”
Seiso trata da limpeza e manutenção do local de trabalho, equipamentos e máquinas. Isso ajuda a evitar acidentes, garantindo que tudo esteja no lugar e funcionando corretamente. Além disso, quem mantém suas ferramentas limpas consegue perceber mais facilmente quando algo não está funcionando como deveria.
No contexto de desenvolvimento, nossa responsabilidade é manter o código enxuto, limpo e organizado. Esse princípio significa que devemos sempre fazer o possível para limpar qualquer bagunça criada durante a busca por uma solução, a correção de um bug ou a implementação de uma nova funcionalidade. Certifique-se de que seu código está na melhor forma possível antes de abrir um pull request.
No entanto, conforme trabalhamos, nosso código tende a se tornar cada vez mais desorganizado. Pequenas mudanças que não deveriam ser feitas, escolhas ruins para resolver problemas urgentes – tudo isto são ações tomadas por um motivo específico, mas que exigem uma solução mais cuidadosa no futuro. Se não voltarmos para limpar estes problemas, o código pode se tornar difícil de ler e perder desempenho. O estado natural de qualquer código é se tornar “sujo” à medida que trabalhamos nele, e limpá-lo deve ser uma resposta natural para mantê-lo em boas condições. Esse processo já tem um nome bem conhecido entre os desenvolvedores: débito técnico.
Lidar com débito técnico é um desafio para todas as empresas. Devemos abrir um ticket para resolvê-lo no futuro? Apenas ir limpando conforme encontramos os problemas? A empresa deve reservar um tempo a cada sprint ou semana para ir resolvendo isto? Não há uma única resposta, pois isto depende de muitas variáveis. O princípio apenas reforça os benefícios de manter as coisas limpas, o que, no ambiente de software, significa menos bugs, menos problemas de segurança e menos comportamentos inesperados. Assim como as empresas precisam de equipes de limpeza para lidar com tarefas maiores enquanto os funcionários mantêm suas mesas organizadas, a limpeza do código deve ser um esforço conjunto da equipe ou da empresa.
Este princípio também se aplica às nossas mesas de trabalho. Agora que as organizamos, precisamos mantê-las limpas. Durante a limpeza, observe se algo precisa de reparo. Se você usa um teclado mecânico, verifique se todas as teclas estão funcionando corretamente, remova e limpe as keycaps. Confira seu mouse. Veja se precisa substituir ou recarregar suas canetas.
Voltando ao ambiente digital, analise também suas ferramentas digitais de trabalho. Existe algo que pode ser simplificado? Algum script que pode ser refatorado? Um plugin que pode ser substituído por outro mais eficiente? Manter as ferramentas organizadas e funcionais também faz parte desse processo de limpeza contínua.
4. Seiketsu ou “Padronizar”
Padronize qualquer processo, incluindo aqueles necessários para manter os três princípios anteriores. Aqui, também podemos incluir padrões para testes e definir qual paradigma de programação a empresa seguirá. Criar ou adotar padrões ajuda os programadores a escrever código mais rápido e manter a base de código de forma mais eficiente.
Gosto de pensar que padronizar é o equivalente, no mundo físico, à programar e automatizar nós mesmos. Padronizando, já sabemos o que fazer e não precisamos mais perder tempo pensando "onde devo colocar isso?". Em vez de se perguntar “onde essa foto deveria estar?”, você passa a pensar “é claro que a foto deve estar na pasta de fotos, categorizada por ano e local”.
No mundo do código, já temos ferramentas de lint que automatizam esta padronização para nós. Nesse caso, nem sequer precisamos conhecer os padrões com detalhes: o computador nos avisa ou até corrige automaticamente. Também podemos criar scripts que auxiliam na organização, como renomear arquivos e movê-los para as pastas corretas.
O mais importante aqui é transformar os processos anteriores em uma rotina. Você pode automatizar parte deles e agendar os demais para serem feitos diariamente, semanalmente ou mensalmente, de acordo com sua necessidade. A escolha do intervalo ideal fica a seu critério.
5. Shitsuke ou “Manter a disciplina”
O último princípio, mas não menos importante, está relacionado à autodisciplina e à sustentação dos outros quatro princípios. Algumas pessoas também traduzem esse princípio como “fazer sem precisar ser mandado”.
A primeira parte dele é ter a disciplina necessária para manter os outros quatro princípios. No entanto, ele também envolve estudo e treinamento contínuos, garantindo que estejamos sempre nos aprimorando. Outra parte essencial desse princípio é a troca de feedback, especialmente daqueles que estão na linha de frente do trabalho — no nosso caso, os desenvolvedores e designers.
Por isso, esse é o último princípio: ele fecha o ciclo. Ele nos lembra que precisamos voltar ao primeiro princípio e aplicá-lo de forma ainda melhor. Não se trata apenas de repetir os processos, mas de repeti-los de maneira consciente, prestando atenção a como podemos melhorá-los. O mais importante é continuar tentando e valorizar o fato de que, a cada volta, estaremos mais preparados para sermos melhores.