6330: Desenvolvedor(a) .NET Sênior

Empresa: Mazzatech

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. Sobre a empresa: Sobre a oportunidade

Ver todas as vagas