Sobre a oportunidade
Buscamos um(a) Desenvolvedor(a) .NET Sênior com forte experiência em engenharia de software, arquitetura backend e desenvolvimento de aplicações robustas, escaláveis e de alta qualidade.
A posição exige um profissional com profundidade técnica no ecossistema .NET, capacidade de tomar decisões arquiteturais, autonomia para conduzir problemas complexos e maturidade para contribuir tecnicamente com outros desenvolvedores.
Mais do que executar tarefas, buscamos alguém capaz de compreender o contexto do problema, discutir trade-offs, propor soluções, implementar arquiteturas sustentáveis e explicar claramente as decisões tomadas.
O profissional atuará em um ambiente com arquitetura distribuída, microsserviços, APIs, mensageria, observabilidade e práticas modernas de engenharia de software.
100% Remoto | Inglês Intermediário B1
Principais responsabilidades
- Desenvolver e evoluir aplicações backend utilizando .NET;
- Projetar APIs REST robustas, seguras, performáticas e escaláveis;
- Participar da definição e evolução da arquitetura das aplicações;
- Desenvolver soluções baseadas em microsserviços;
- Implementar integrações síncronas via APIs e assíncronas via mensageria;
- Modelar domínios, regras de negócio e estruturas de dados;
- Garantir separação adequada de responsabilidades entre as diferentes camadas da aplicação;
- Aplicar princípios de Clean Architecture, SOLID, Clean Code, CQRS e DDD;
- Implementar mecanismos de resiliência para serviços distribuídos;
- Desenvolver e manter testes unitários e de integração;
- Implementar mecanismos de autenticação e autorização;
- Trabalhar com bancos de dados relacionais e NoSQL;
- Implementar observabilidade, tracing, métricas e logs;
- Investigar problemas e gargalos em ambientes produtivos;
- Participar ativamente de code reviews;
- Apoiar decisões técnicas do time;
- Contribuir para evolução dos padrões e práticas de engenharia;
- Compartilhar conhecimento e apoiar o desenvolvimento técnico de outros profissionais;
- Participar de reuniões e discussões técnicas em inglês;
- Documentar decisões, componentes, APIs e arquiteturas de forma clara.
Stack técnica principal
.NET e Backend
Esperamos experiência sólida com:
- .NET 8 ou superior;
- C#;
- ASP.NET Core;
- Minimal APIs e/ou Controllers;
- Desenvolvimento de aplicações de alta disponibilidade;
- Aplicações escaláveis e distribuídas;
- Programação assíncrona;
- Dependency Injection;
- Middleware;
- Exception handling;
- Configuration e Options Pattern;
- Background Services;
- Boas práticas de gerenciamento de recursos e memória.
O processo técnico poderá utilizar .NET 10, portanto o candidato deverá demonstrar facilidade para trabalhar com versões atuais da plataforma.
APIs REST
O profissional deverá possuir experiência consistente na construção e evolução de APIs.
Esperamos conhecimento em:
- Design de APIs REST;
- Verbos e status HTTP;
- Modelagem de recursos;
- Paginação;
- Filtros;
- Ordenação;
- Versionamento;
- Health checks;
- Tratamento padronizado de erros;
- Validação de requests;
- Idempotência;
- Documentação de APIs;
- Swagger / OpenAPI;
- Evolução de contratos sem quebra de consumidores;
- Segurança e performance de endpoints.
O candidato deverá compreender não apenas como implementar endpoints, mas também como definir contratos de API sustentáveis e adequados para ambientes distribuídos.
Arquitetura de Software
Buscamos forte domínio dos seguintes conceitos:
- Clean Architecture;
- SOLID;
- Clean Code;
- CQRS;
- Domain-Driven Design — DDD;
- Design Patterns;
- Dependency Injection;
- Separation of Concerns;
- Microsserviços;
- Arquiteturas orientadas a eventos;
- Integração entre sistemas;
- APIs síncronas e comunicação assíncrona.
O profissional deverá conseguir discutir criticamente decisões arquiteturais e compreender os trade-offs envolvidos.
Não esperamos apenas conhecimento conceitual. O candidato deverá demonstrar experiência prática aplicando esses princípios em sistemas reais.
CQRS e domínio
Esperamos experiência com:
- Separação entre Commands e Queries;
- MediatR ou abordagem equivalente;
- Handlers;
- Pipeline Behaviors;
- FluentValidation;
- Modelagem de domínio;
- Encapsulamento de regras de negócio;
- Entidades;
- Value Objects;
- Domain Services;
- Application Services;
- Eventos de domínio;
- Invariantes de negócio.
É importante que as regras de domínio estejam corretamente posicionadas e não sejam concentradas em Controllers ou na camada de infraestrutura.
Bancos de dados e persistência
Bancos relacionais
Experiência com:
- PostgreSQL;
- SQL Server;
- Modelagem relacional;
- Normalização;
- Índices;
- Queries;
- Transações;
- Concorrência;
- Otimização de consultas.
NoSQL
Experiência com:
- MongoDB;
- Modelagem orientada a documentos;
- Estratégias de consulta;
- Indexação;
- Análise do momento adequado para utilização de bancos relacionais ou NoSQL.
Entity Framework Core
Esperamos conhecimento sólido em:
- Entity Framework Core;
- DbContext;
- Mapeamento de entidades;
- Fluent API;
- Relacionamentos;
- Tracking e No Tracking;
- Queries;
- Migrations;
- Estratégias de atualização de banco;
- Performance;
- Transações;
- Concorrência.
Mensageria e arquitetura orientada a eventos
O profissional deverá possuir experiência com:
- Azure Service Bus;
- Filas;
- Topics e Subscriptions;
- Producers e Consumers;
- Eventos de integração;
- Processamento assíncrono;
- Event-driven architecture;
- Retry;
- Dead-letter queues;
- Idempotência;
- Tratamento de mensagens duplicadas;
- Consistência eventual;
- Tratamento de falhas em ambientes distribuídos.
Também deverá compreender os impactos de mensageria sobre observabilidade, consistência e troubleshooting.
Resiliência
Esperamos conhecimento prático com Polly ou ferramentas equivalentes para implementação de:
- Retry;
- Circuit Breaker;
- Timeout;
- Fallback;
- Controle de falhas transitórias.
O candidato deverá compreender quando aplicar cada padrão e, principalmente, evitar a utilização indiscriminada de retries que possam amplificar falhas em ambientes
distribuídos.
Segurança
Experiência com segurança de APIs incluindo:
- OAuth 2.0;
- OpenID Connect;
- JWT;
- Azure AD / Microsoft Entra ID;
- Keycloak;
- Claims;
- Roles;
- Scopes;
- Policies;
- Authentication;
- Authorization;
- Token validation;
- Refresh tokens;
- Segurança de endpoints.
O profissional deverá compreender a diferença entre autenticação e autorização e conseguir implementar políticas de acesso adequadas ao contexto da aplicação.
Testes e qualidade
Testes automatizados são parte essencial da posição.
Esperamos experiência com:
- xUnit ou NUnit;
- Testes unitários;
- Testes de integração;
- Mocking;
- Testes de handlers;
- Testes de regras de domínio;
- Testes de APIs;
- WebApplicationFactory;
- Estratégias de isolamento de dependências;
- Testabilidade da arquitetura.
O candidato deverá conseguir explicar claramente:
- O que deve ser testado;
- O que não precisa ser testado;
- Diferença entre teste unitário e teste de integração;
- Como garantir confiabilidade sem gerar uma suíte excessivamente frágil.
Código sem cobertura mínima das principais regras de negócio será considerado insuficiente para o nível esperado.
Observabilidade
Esperamos experiência com instrumentação e diagnóstico de aplicações distribuídas.
OpenTelemetry
Conhecimento em:
- Traces;
- Metrics;
- Logs;
- Distributed tracing;
- Instrumentação;
- Propagação de contexto entre serviços.
Datadog
Experiência desejada com:
- APM;
- Logs;
- Distributed tracing;
- Dashboards;
- Monitoramento;
- Análise de erros;
- Investigação de problemas em produção;
- Identificação de gargalos de performance.
O profissional deverá ser capaz de investigar um problema utilizando evidências de produção em vez de depender apenas da análise do código.
Containers e infraestrutura
Experiência com:
- Docker;
- Dockerfile;
- Docker Compose;
- Kubernetes;
- Containers;
- Configuração por ambiente;
- Gerenciamento de secrets;
- Health checks;
- Deploy de aplicações distribuídas.
O candidato não precisa atuar como DevOps, mas deve compreender como sua aplicação será executada e operada em ambientes containerizados.
Versionamento e colaboração
Experiência com:
- Git;
- GitFlow;
- Pull Requests;
- Merge Requests;
- Branching strategies;
- Code review;
- Resolução de conflitos;
- Boas práticas de commits.
Espera-se maturidade para participar tanto como autor quanto como revisor de código.
CI/CD
Desejável experiência com:
- Azure DevOps;
- GitHub Actions;
- Pipelines de build;
- Pipelines de testes;
- Deploy automatizado;
- Quality gates;
- Gestão de ambientes.
Cloud
Desejável experiência com Microsoft Azure, principalmente em ambientes que utilizem:
- Azure App Service;
- Azure Kubernetes Service — AKS;
- Azure Service Bus;
- Azure SQL;
- Storage;
- Key Vault;
- Azure Monitor;
- Application Insights;
- Microsoft Entra ID.
Qualidade contínua
Desejável conhecimento em:
- SonarQube;
- Análise estática;
- Code smells;
- Technical debt;
- Code coverage;
- Quality gates;
- Analyzers do .NET.
Frontend e integração
Embora esta não seja uma posição predominantemente frontend, é desejável que o profissional possua conhecimento ou experiência com:
- React;
- TypeScript;
- Consumo de APIs;
- Integração frontend/backend;
- Contratos de APIs;
- Autenticação em aplicações SPA.
O objetivo é facilitar a colaboração técnica com equipes frontend e permitir uma visão mais completa da solução.
Tecnologias relacionadas ao contexto atual
Conhecimento de:
- Node.js;
- Drupal;
Será considerado diferencial por existir um contexto de migração de plataforma em andamento.
Não é necessário que o candidato seja especialista nessas tecnologias, mas experiência em modernização ou migração de aplicações será valorizada.
Inteligência Artificial
Será considerado diferencial experiência com integração de APIs de IA generativa, incluindo:
- Azure OpenAI;
- OpenAI API;
- Integração de LLMs em aplicações;
- Consumo de APIs de modelos;
- Prompt orchestration;
- Tratamento de respostas;
- Segurança e controle de dados enviados para modelos;
- Observabilidade e controle de custos de integrações com IA.
Não é esperado que o candidato seja especialista em Machine Learning.
Competências comportamentais
Autonomia
Este é um dos principais critérios da posição.
Esperamos um profissional capaz de:
- Receber um problema e conduzir sua análise;
- Buscar informações antes de depender de direcionamento;
- Propor alternativas;
- Avaliar trade-offs;
- Tomar decisões técnicas fundamentadas;
- Identificar riscos antecipadamente;
- Comunicar impedimentos;
- Conduzir uma implementação até sua conclusão.
O candidato não deve depender constantemente de orientação detalhada para avançar.
Proatividade
Esperamos capacidade de:
- Identificar problemas antes que sejam explicitamente apontados;
- Sugerir melhorias arquiteturais;
- Antecipar riscos;
- Questionar requisitos quando necessário;
- Propor melhorias de qualidade;
- Investigar problemas de forma independente;
- Ajudar o time além de suas próprias tarefas.
Curiosidade técnica
Buscamos profissionais que procurem compreender:
- Por que determinada arquitetura foi escolhida;
- Como os serviços se relacionam;
- Como uma aplicação se comporta em produção;
- Quais impactos uma alteração poderá gerar;
- Como melhorar qualidade, performance ou manutenção.
É importante demonstrar interesse genuíno pela engenharia da solução, não apenas pela implementação da tarefa.
Liderança técnica
Experiência ou forte potencial de liderança técnica é relevante para a posição.
Esperamos que o profissional seja capaz de:
- Influenciar decisões técnicas;
- Conduzir discussões de arquitetura;
- Apoiar desenvolvedores menos experientes;
- Realizar code reviews construtivos;
- Explicar conceitos técnicos;
- Compartilhar conhecimento;
- Identificar riscos arquiteturais;
- Propor padrões de desenvolvimento;
- Contribuir para evolução da maturidade técnica do time.
Não é obrigatório ter exercido formalmente o cargo de Tech Lead, mas é importante possuir evidências de atuação como referência técnica.
Comunicação
O profissional deverá possuir comunicação técnica clara e objetiva.
Esperamos capacidade para:
- Explicar decisões arquiteturais;
- Defender uma solução utilizando argumentos técnicos;
- Explicar conceitos complexos para profissionais de diferentes níveis;
- Fazer perguntas quando requisitos não estiverem claros;
- Documentar decisões;
- Dar e receber feedback técnico.
Inglês
Necessário nível intermediário — B1.
O profissional deverá conseguir:
- Participar de reuniões;
- Compreender perguntas técnicas;
- Explicar uma implementação;
- Descrever problemas;
- Comunicar riscos e dependências;
- Interagir com profissionais internacionais.
Não é necessária fluência equivalente a nível avançado ou nativo.
Perfil profissional esperado
Buscamos um desenvolvedor sênior que vá além da implementação de tickets.
O profissional ideal deverá conseguir:
- Compreender o problema de negócio;
- Modelar uma solução;
- Definir responsabilidades entre componentes;
- Implementar a solução;
- Garantir testabilidade;
- Analisar segurança;
- Avaliar performance;
- Identificar riscos operacionais;
- Monitorar o comportamento em produção;
- Defender suas decisões técnicas;
- Evoluir o código quando requisitos mudarem.
A senioridade será avaliada principalmente pela qualidade das decisões e pela capacidade de explicar seus trade-offs.
Diferenciais
Serão considerados diferenciais:
- Experiência avançada com DDD;
- Bounded Contexts;
- Context Mapping;
- Azure Cloud;
- Azure DevOps;
- GitHub Actions;
- SonarQube;
- React;
- TypeScript;
- Node.js;
- Drupal;
- Integrações com Azure OpenAI ou OpenAI API;
- Experiência com modernização de plataformas;
- Experiência com migração de sistemas legados;
- Atuação anterior como Tech Lead ou referência técnica;
- Experiência desenvolvendo outros profissionais.