
cizordj
(usa Debian)
Enviado em 10/12/2025 - 08:50h
Posso dar 3 exemplos, 2 obras de arte e 1 ninho de rato.
1. Algoritmo de recomendação de cursos
Esse é o ninho de rato, código extremamente complexo, sem documentação alguma e ninguém teve coragem de mexer depois que eu finalizei, ficou 3 anos em produção.
O usuário possuía competências ligadas a áreas de atuação vinculados ao perfil dele, o algoritmo tinha que pegar os cursos que mais ajudassem ele a fechar o quadro
de competências de uma determinada área e recomendar para ele. O problema é que os cursos ficavam em um marketplace de terceiros e nós só podíamos acessar por
meio de API, não havia nenhuma relação entre cursos e a área de atuação no nosso banco de dados, então eu tive que criar uma relação na marra. Peguei o nome da área
que vinha no curso e usei um algoritmo de similaridade para comparar com o nome da área do nosso banco de dados, montei uma lista ordenada por similaridade e recomendei
cursos com a similaridade 0.75 ou maior, e detalhe: tudo isso ficava em cache no Redis, ninguém teve coragem de alterar rsrs
2. Algoritmo de exclusão de conta inativa
O cliente solicitou que nós criássemos uma rotina de exclusão de contas inativas, parece fácil, né? Só que não, levei 30 dias pra desenvolver e
tinha casos de teste que levava 8 dias pra testar (o QA não conseguiu testar tudo). Eram 8 cenários que precisavam ser validados antes de excluir
e nesse código eu usei o padrão Strategy onde cada estratégia corresponde a uma regra de negócio.
3. Tela de relatórios
Fui escalado para criar todo o módulo de relatórios em um sistema e a complexidade dos relatórios era bastante alta porque tinha muitas variações
diferentes, o usuário podia gerar 6 tipo relatórios que saíam diferentes dependendo do papel do usuário, se ele fosse super admin, o relatório
mostrava uma coisa, se fosse admin normal, mostrava outra e a complexidade aumentava exponencialmente conforme o cliente ia sugerindo
novos relatórios, novos tipos de usuário e novos formatos de arquivo. Eu usei o padrão Strategy e Builder combinados e o código ficou uma delicinha,
só que eu nunca escrevi tanto código na minha vida quanto nessa demanda, tinha muita classe, muito trabalho assíncrono e no final o relatório ficava
num redis com expiração de 24 horas.