[{"data":1,"prerenderedAt":39},["ShallowReactive",2],{"profile-pt-BR":3,"article-custo-real-da-complexidade-pt-BR":27},{"brandName":4,"fullName":5,"headline":6,"manifesto":7,"contactIntro":11,"avatar":12,"manifestoImage":13,"social":14},"Danilo Fernando","Danilo Fernando - Engenheiro de Software","Software bem construído, integrações confiáveis e arquitetura pensada para durar.",[8,9,10],"Minha jornada é guiada pela crença de que código é apenas uma ferramenta para resolver problemas de negócio complexos. Com sólida experiência em ecossistemas Java e Spring, dedico meus esforços a sistemas que não apenas funcionam, mas que são fáceis de manter e evoluir.","Especialista em APIs robustas e integrações críticas, acredito que maturidade técnica se reflete na capacidade de tomar decisões ponderadas, equilibrando inovação com as necessidades reais da organização.","Busco impacto real: Clean Code não é estética, é necessidade econômica para garantir a sustentabilidade do produto a longo prazo.","Estou sempre aberto a novas oportunidades profissionais, troca de experiências técnicas ou discussões sobre arquitetura e desenvolvimento de software.","\u002Fimages\u002Fprofile\u002Fdanilo.webp","\u002Fimages\u002Fprofile\u002Fdanilo_manifesto.webp",[15,19,23],{"kind":16,"label":17,"href":18},"email","E-mail","mailto:danilo.bossanova@hotmail.com",{"kind":20,"label":21,"href":22},"linkedin","LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fdanilo-fernando-dev\u002F",{"kind":24,"label":25,"href":26},"github","GitHub","https:\u002F\u002Fgithub.com\u002Fdanilobossanova",{"slug":28,"title":29,"excerpt":30,"category":31,"tags":32,"readTimeMinutes":35,"publishedAt":36,"author":4,"coverImage":37,"body":38},"custo-real-da-complexidade","O custo real da complexidade desnecessária","Por que over-engineering costuma ser o caminho mais rápido para o fracasso de um projeto.","Arquitetura",[33,34],"clean-architecture","decisões-técnicas",5,"2025-02-10","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fcomplexity\u002F1200\u002F600","## Complexidade cobrada com juros compostos\n\nComplexidade é a maior causa de falência técnica que já vi de perto. Cada\nabstração \"por precaução\" é um contrato implícito com o futuro — e o futuro\nsempre cobra a conta.\n\n> \"A única coisa mais cara que resolver o problema errado é resolver o\n> problema certo com três camadas de indireção que ninguém pediu.\"\n\n### Sinais de alerta\n\n- Abstrações que existem para um único caso de uso.\n- Frameworks internos para coisas que o ecossistema já resolve.\n- \"Vamos deixar plugável\" **antes** de existirem dois plugs.\n- Configuração dinâmica para algo que muda uma vez por ano.\n- Camadas de mapeamento entre objetos idênticos.\n\n### Heurística prática\n\nAntes de criar uma abstração, pergunte:\n\n1. Existem **dois** clientes reais hoje?\n2. O custo de extrair depois é proibitivo?\n3. O comportamento realmente varia, ou só o nome?\n\nSe a resposta for \"não\" para as três, **inline é a resposta certa**.\n\n### Um exemplo concreto\n\n```java\n\u002F\u002F Antes — flexibilidade que ninguém pediu\npublic interface UserNotifier {\n    void notify(User user, NotificationPayload payload);\n}\npublic class EmailUserNotifier implements UserNotifier { \u002F* ... *\u002F }\n\n\u002F\u002F Depois — o sistema só manda email, ponto\npublic class EmailService {\n    public void sendWelcome(User user) { \u002F* ... *\u002F }\n}\n```\n\nQuando o segundo canal aparecer, você extrai a interface em **cinco minutos**,\ncom testes verdes e com a cabeça clara sobre o que realmente muda.\n\n### Resumo\n\nComece pela dor real, não pela elegância teórica. Clean Code é sobre **custo\nde manutenção**, não sobre quantidade de interfaces por megabyte.",1776457051526]