Sobre
Duas décadas construindo sistemas em contextos que cobram caro por decisões erradas.
Olá, sou Manoel Medeiros
Com mais de 20 anos de experiência, acompanhei a evolução da engenharia de software desde monolitos e sistemas em cascata, passando por processos tradicionais como RUP, até microserviços modernos e sistemas distribuídos de alta disponibilidade. Projetei sistemas greenfield, conduzi migrações para cloud, modernizei legados críticos e participei de projetos complexos em startups, como virtualização de malhas de storage e expansão global de plataformas.
Ao longo da minha trajetória, desenvolvi pessoas e equipes para trabalhar de forma colaborativa e autônoma, aplicando práticas ágeis do XP e promovendo uma cultura de confiança e aprendizado contínuo. Trabalhei em times distribuídos globalmente, enfrentando desafios de escalabilidade, resiliência e operação em larga escala, e sempre buscando decisões técnicas que aumentem previsibilidade, reduzam riscos e amplifiquem o impacto do time.
Minha abordagem combina visão de longo prazo com atenção aos detalhes operacionais, estruturando sistemas e processos que evoluem de forma sustentável. Cada escolha arquitetural é guiada por princípios sólidos, métricas concretas e trade-offs cuidadosamente avaliados, garantindo que sistemas e times cresçam de forma confiável mesmo sob pressão.
Este site é onde compartilho aprendizados duramente conquistados, padrões e princípios que guiam minhas decisões hoje, com o objetivo de criar impacto duradouro em produtos críticos e experiências de usuários em larga escala.
Filosofia de Engenharia
Como penso, como estruturo e como executo: da percepção à multiplicação de impacto.
Fundamentos como lente
Domínio de fundamentos é ter internalizado modelos mentais que mudam o que você enxerga ao olhar para um sistema. SOLID, GRASP, DDD e Design Patterns são ferramentas de pensamento. Quem os domina percebe fragilidades estruturais, antecipa pontos de ruptura e distingue complexidade essencial de acidental. Fundamentos definem a diferença entre reagir a sintomas e diagnosticar causas.
Ver práticas
- Olhar para um sistema e perceber se as decisões de design refletem o que foi modelado
- Distinguir complexidade essencial de acidental antes de propor soluções
- Diagnosticar causas estruturais até a raiz
- Reconhecer quando uma abstração comunica intenção e quando apenas esconde implementação
- Saber quando um princípio está sendo aplicado com propósito e quando virou dogma
Decisão como compromisso
Toda arquitetura é uma aposta sobre o que vai mudar e o que não vai. Projetar é escolher conscientemente onde aceitar acoplamento, onde proteger flexibilidade e o que ignorar deliberadamente. Trade-offs são explícitos, documentados e revisáveis. Segurança, custo, compliance e capacidade do time entram na equação desde o início. Modelar bem é reduzir o espaço de decisões futuras sem eliminar as que importam.
Ver práticas
- Documentar o racional de decisões estruturantes, incluindo contexto e alternativas avaliadas
- Avaliar trade-offs de custo, risco, segurança e evolução antes de comprometer a arquitetura
- Modelar ameaças e restrições como parte integrada do design
- Delimitar fronteiras do sistema antes de desenhar componentes internos
- Validar hipóteses técnicas com protótipos antes de comprometer o time
Código como expressão
Código é a expressão mais precisa de uma decisão de design. Cada linha comunica intenção para quem vai mantê-la, inclusive para você mesmo meses depois. Clareza na nomenclatura revela compreensão do domínio. Consistência nas convenções reduz carga cognitiva. Responsabilidades bem delimitadas permitem mudança localizada. Simplicidade no código é resultado de profundidade no pensamento.
Ver práticas
- Nomear pela intenção de domínio, revelando o propósito de cada elemento
- Escrever código que dispensa comentários explicativos
- Refatorar para clareza sempre que a leitura exigir esforço
- Tratar legibilidade como atributo de qualidade mensurável
- Manter consistência de estilo como contrato coletivo do time
Disciplina de entrega
Software só gera valor em produção. Qualidade é propriedade contínua que permeia da modelagem à operação. Testes sustentam mudança tanto quanto verificam correção. O pipeline automatizado valida cada entrega. Deploy acontece como consequência natural de integração disciplinada. Observabilidade fecha o ciclo de feedback entre decisão e consequência. Cada mudança em produção é uma hipótese sendo validada.
Ver práticas
- Usar TDD como ferramenta de design e descoberta
- Cobrir em camadas: unidade para lógica, integração para contratos, e2e para fluxos críticos
- Manter a golden source como espelho fiel de produção, onde cada integração aproxima intenção de realidade
- Automatizar o caminho do código à produção, validando cada etapa antes de avançar
- Governar a exposição de mudanças com feature toggles, desacoplando o ciclo de deploy do ciclo de release
- Projetar cada entrega com reversibilidade planejada, onde rollback é evidência de maturidade do processo
- Observar o comportamento real em produção com métricas, logs e tracing
Liderança como multiplicação
A arquitetura do time precede a arquitetura do software. Liderança técnica é desenvolver pessoas enquanto resolve problemas de engenharia: coaching que acelera evolução, comunicação que traduz complexidade, cultura onde feedback é contínuo e falhas são aprendizado. Times de alta performance nascem de clareza de propósito, segurança psicológica e líderes que removem obstáculos. Liderar é multiplicar capacidade de decisão e execução no time. O resultado do time é sempre responsabilidade de quem lidera.
Ver práticas
- Construir identidade de time através de modelos mentais compartilhados, onde o coletivo pensa e opera como unidade
- Expandir repertório técnico de forma deliberada, tornando aprendizado contínuo parte da rotina do time
- Fazer perguntas que desenvolvem pensamento crítico e capacidade de decisão no time
- Traduzir decisões técnicas em impacto de negócio para diferentes audiências
- Criar cultura blameless onde erros aceleram a evolução do time
- Equilibrar entrega imediata com desenvolvimento de pessoas
- Fortalecer autonomia e responsabilidade como expressões do time, onde excelência individual se potencializa pelo coletivo
Quer aplicar esse modelo no seu contexto?
Seja para elevar o nível técnico do seu time, estruturar arquitetura com clareza ou acelerar sua evolução como engenheiro, podemos conversar sobre como adaptar essas práticas à sua realidade.
Iniciar conversa