c# e .net junior: como entrar de verdade no brasil
Procurar “desenvolvedor C# junior” ou “.NET junior” no Brasil rende uma mistura boa e barulhenta. A boa: .NET é uma das stacks que mais segura vaga de backend corporativo no país. Banco, fintech, seguradora, consultoria, integradora, órgão público e fabricante de ERP rodam sistema crítico em C# com ASP.NET, e todo esse mundo precisa de junior. A barulhenta: o título varia demais. “Desenvolvedor .NET junior”, “analista de sistemas C#”, “programador C#”, “dev backend .NET”, “analista desenvolvedor” — às vezes descrevem o mesmo trabalho, às vezes empilham .NET com SQL Server, Azure, Angular e “desejável React” num anúncio só. Você sai da busca sem saber direito o que a vaga cobra.
Respira. Essa confusão de rótulo não é cilada. É o mercado .NET brasileiro de verdade — e ele é mais acessível do que o jargão de anúncio de banco sugere.
A porta de entrada em C# .NET não pede faculdade específica, não pede certificação Microsoft antes da primeira vaga e não pede que você decore o ecossistema Windows inteiro. Ela pede a base certa da linguagem, um framework web que entrega endpoint, um ORM que conversa com banco e a capacidade de abrir pull request pequeno sem quebrar o resto. Quem entende isso para de acumular curso de C# avançado antes de resolver um problema e começa a mirar nas vagas que existem de verdade. Para enxergar o mercado real, abra as vagas de back-end remoto filtrando por C#, .NET e ASP.NET, ou comece pela lista viva de vagas junior remotas. Em qualquer dos dois, leia o corpo da vaga, não só o título.
primeiro: o que o dev C# .NET junior faz de verdade
Esquece a imagem de “passar o dia desenhando diagrama de classe abstrata”. Quem entra como dev C# .NET junior num time brasileiro de backend costuma fazer isto:
- pegar um ticket, abrir um controller ou serviço que já existe em ASP.NET Core e adicionar um comportamento (endpoint, regra, validação);
- mapear entidade com Entity Framework Core, escrever consulta em LINQ e ajustar relacionamento que o log reclamou;
- escrever teste com xUnit ou NUnit e Moq antes ou depois do código, conforme o time;
- abrir pull request pequeno, responder code review por escrito e corrigir o que o reviewer pediu;
- investigar bug em produção com a ajuda de log, Application Insights e de alguém mais velho do time.
Framework é ferramenta pra entregar funcionalidade, não ornamentação. O sênior não te paga para decorar padrão de projeto; te paga para resolver um pedaço pequeno do problema sem quebrar o resto. Por isso o cargo premia quem escreve código legível, dá nome decente para coisa, faz teste e pergunta no momento certo — bem mais do que quem acumula certificação Microsoft sem nunca ter subido uma API.
A confusão comum é achar que “dev .NET” é só backend. Na maioria das vagas brasileiras é. Mas o rótulo também aparece em vagas fullstack .NET (backend em C# + frontend em Angular, Blazor ou React), em suporte técnico de sistema legado em .NET Framework e, mais raro, em desenvolvimento de jogo com Unity (onde C# é a linguagem, mas o trabalho é outro). Antes de aplicar, confira no corpo da vaga se o trabalho é escrever backend ASP.NET Core ou se é outra coisa com nome de .NET.
a stack que aparece em quase toda vaga de .NET junior
Abra dez anúncios de “dev .NET junior” no Brasil e você vai enxergar um padrão. Não são dez ferramentas diferentes; é o mesmo conjunto, com pequena variação.
C# core. Orientação a objeto, LINQ (Select, Where, GroupBy, SelectMany), async/await, generics, tratamento de exceção, IEnumerable vs IQueryable e o básico de Task. É a base que separpa quem entende ASP.NET Core de quem só copia public class de tutorial.
.NET (moderno) e ASP.NET Core. A vaga de backend brasileira vem com .NET 8 ou 9 (o “.NET” sem “Core” e sem “Framework” no nome é a versão moderna, multiplataforma e open source). Injeção de dependência nativa, Web API, middleware, configuração com appsettings.json, minimal API e roteamento. Sem ASP.NET Core, o portfólio fica difícil de defender num time que usa ASP.NET Core.
Entity Framework Core. O ORM padrão do ecossistema. Entidade, DbContext, migração (dotnet ef migrations add), consulta com LINQ, relacionamento e o problema clássico de N+1. É onde o junior mais tropeça em entrevista e em código real.
SQL Server. O banco default do mundo .NET corporativo brasileiro. T-SQL, JOIN, GROUP BY, índice, procedure e modelo relacional na mão — não só o que o EF Core gera. PostgreSQL também aparece (e cresce), mas SQL Server segue dominando a vaga de banco.
Git, pull request e teste. Git de verdade (branch, commit, merge, PR), code review e teste com xUnit ou NUnit mais Moq. Mais importante do que framework específico.
Azure e pipeline (noção). Como .NET e Azure nasceram da mesma casa, muita vaga corporativa pede noção de Azure App Service, Azure DevOps (repositório + pipeline) e Application Insights para ler log e erro. Não precisa virar arquiteto de cloud; precisa saber que esses caras existem e onde o seu código roda.
Ferramenta de build e IDE. Visual Studio, VS Code com extensão C# ou Rider (JetBrains). NuGet como gerenciador de pacote. dotnet build, dotnet run, dotnet test no terminal.
O que costuma não aparecer na vaga de junior de verdade: arquitetura hexagonal decorativa, microserviço em grande escala, design pattern catalogado, Kubernetes avançado, mensageria complexa com RabbitMQ ou Kafka. Se a vaga de “.NET junior” pede cinco anos e tudo isso, ela não é junior; pule. O guia de vaga fake junior: como identificar ajuda a separar rótulo inflado de oportunidade real.
o caminho de aprendizado (com timeline honesta)
A armadilha clássica é pular a linguagem direto pro framework. Quem estuda ASP.NET Core sem entender C# e LINQ termina conseguindo rodar um tutorial e sem saber explicar o que Task ou IQueryable faz. Estude em camadas, numa ordem que fecha vaga.
Mês 1 — C# core. Variável, controle de fluxo, orientação a objeto (classe, interface, herança, polimorfismo), LINQ, generics, async/await, exceção e coleção. Faça exercício pequeno todo dia; não passe pra ASP.NET Core enquanto não souber explicar a diferença entre IEnumerable e IQueryable.
Mês 2 — SQL Server e Git. Banco relacional na mão: SELECT, JOIN, GROUP BY, subconsulta, procedure básica e modelo de tabela. Em paralelo, Git de verdade: branch, commit, merge, pull request. São duas skills que aparecem em toda vaga .NET e que curso de C# costuma ignorar.
Mês 3 — ASP.NET Core + EF Core. Agora sim. Sobe uma Web API, conecta no SQL Server (ou PostgreSQL) com EF Core, escreve entidade e DbContext, cria migração, trata exceção com middleware. É aqui que a base de C# e SQL se junta.
Mês 4 — Teste e projeto. xUnit ou NUnit, Moq, teste de unidade e de integração. Comece o primeiro projeto de portfólio agora, não depois. Código com teste vale muito mais do que código bonito sem teste.
Mês 5 a 6 — Portfólio, Azure básico e candidatura. Termine 3 projetos, organize o GitHub, monte o currículo, adicione noção de Azure App Service e pipeline, e comece a aplicar com método. A candidatura boa começa antes do botão de aplicar — leia como aplicar para vaga tech nas primeiras 48h.
É um caminho de 4 a 6 meses pra quem estuda com regularidade, não fim de semana soltos. Antes de começar, vale conferir se C# .NET é mesmo a stack certa pra você com o guia de como escolher stack para a primeira vaga tech.
portfólio C# .NET que abre vaga junior (e o que quebra a credibilidade)
Recrutador e pessoa técnica olham três coisas: código que roda, teste que prova e README que explica decisão. Se falta um dos três, o projeto parece exercício de curso. Três especificações que funcionam:
- Web API com ASP.NET Core, EF Core, migração e teste. Domínio pequeno (pedido, cliente, produto), endpoints de criar/listar/buscar, tratamento de erro com middleware, migração com EF Core e teste de integração subindo banco em memória (
InMemoryouTestcontainerscom SQL Server). Mostre que você pensa em erro, versão de schema e teste — não só em “funciona na minha máquina”. - Um serviço onde você conserta um N+1 de propósito. Crie o problema, mostre o log de query repetida que o EF Core gerou, resolva com
Include/ThenIncludeouAsNoTrackinge projection, e escreva no README o antes e depois. Esse é o projeto que separa quem copiou tutorial de quem entendeu EF Core — o equivalente .NET do problema clássico de JPA em Java. - Um job de importação em lote (background service). Leia CSV ou JSON, valide campo, persista no banco com EF Core e gere relatório dos registros que falharam. Parece trabalho real de junior em sistema corporativo — e é o tipo de entrega que quase ninguém coloca no portfólio. Se quiser mostrar noção de pipeline, rode o
dotnet teste o build num GitHub Actions simples e cole o badge verde no README.
O que quebra credibilidade: clone de to-do list sem teste; “API de produtos” sem README, sem tratamento de erro e sem migração; repositório com master cheio de commit final, commit final mesmo e agora vai. O guia de portfólio com 3 projetos certos aprofunda a estrutura de README e entrega, e o de GitHub que recrutador olha vs GitHub que dev olha mostra o que faz um repositório parecer vivo. Para transformar isso em página objetiva, leia primeiro CV tech sem experiência.
o teste técnico de C# .NET junior de verdade
O teste costuma ter três formatos: take-home (implementar endpoint ou serviço), live coding (consulta em LINQ, lógica com async/await ou manipulação de coleção ao vivo) e case de sistema (desenhar modelo e justificar). O erro mais comum é tentar entregar tudo e capengar na metade. O acerto é escopo pequeno, código que roda e limite honesto.
O que costuma cair de .NET específico:
- implementar um endpoint REST (controller ou minimal API) que cria e busca recurso;
- mapear entidade com EF Core, escrever uma consulta em LINQ e explicar por que ela gera (ou não gera) N+1;
- lógica com
LINQ(SelectMany,GroupBy,Where) e manipulação de coleção; - escrever teste de unidade com xUnit e Moq;
- explicar, em voz alta, o que é injeção de dependência nativa do ASP.NET Core, a diferença entre
TaskeThread, o queasync/awaitfaz de verdade e por queIQueryableadia a execução da query.
Para o live, leia entrevista técnica junior. Para o take-home e o case, o roteiro de teste técnico para junior vale ouro — o conselho de limitar escopo antes de começar pesa dobrado em .NET, onde é fácil se perder em camada de serviço, repositório e validação. Depois do teste, o debrief de teste técnico junior ajuda a transformar resultado em ajuste.
onde achar vaga real (e como ler o título)
Abra o eu.dev.br e busque por “C#”, “.NET”, “ASP.NET” e “backend .NET”, ou comece pela lista de vagas de back-end remoto (atualizada 2x por dia). Empresas brasileiras que costumam ter pipeline de junior em .NET: bancos e fintech (Itaú, Bradesco, Banco do Brasil, BTG Pactual, Sicredi, Sicoob, Banco Inter), integradora e consultoria (Stefanini, CI&T, Accenture, TIVIT, Sonda, GFT, Cognizant, Encora, Capgemini, Deloitte, Talan), governo (Serpro, Dataprev) e varejo e ERP (TOTVS, B3). Quando a vaga aparecer, leia o corpo:
- se pede cinco anos no título “junior”, não é junior de verdade;
- se a descrição inteira é sobre .NET Framework 4.x legado em Windows sem plano de modernização, pergunte na entrevista qual versão o time usa — passar dois anos só em código antigo te trava no mercado;
- se o anúncio mistura “dev .NET junior” com “pleno/sênior” e empilha Angular, React, Azure, Kafka e Docker no “desejável”, costuma ser triagem inflada; separe o que é pré-requisito real do que é lista de desejo.
Monte rotina de candidatura com o guia de rotina semanal de fontes para vaga junior, filtre remoto real com como filtrar vaga remota junior e monte um perfil Gupy para junior, porque muita triagem de banco e consultoria roda em plataforma brasileira. Se estiver entre estágio, trainee e vaga junior, leia trainee, estágio ou vaga junior para decidir a porta certa.
C# e .NET vale como primeira stack?
Vale, com dois poréns honestos. .NET abre muita vaga de backend no Brasil — em volume, perde só para Java no mundo corporativo — e por isso é uma das portas mais estáveis pra quem quer entrar como dev. A vantagem é volume e estabilidade; o custo é que muita vaga está em sistema grande, antigo e regulado, com ritmo e burocracia próprios.
Primeiro ponto de atenção: a armadilha do legado. Ainda existe muito projeto brasileiro rodando .NET Framework 4.x (o antigo, só Windows) e C# antigo, em processo de migração para .NET moderno (8/9). Antes de aceitar, pergunte a versão e o plano de modernização; passar dois anos só em .NET Framework 4.x sem migrar te trava. Segundo ponto: o estereótipo de “.NET é coisa de banco fechado e lento” ficou para trás. Desde 2016 o .NET é multiplataforma, open source e roda em Linux; a maioria das vagas modernas já é .NET 8/9 em container. Mas em startup e produto novo, Node.js, Python e Go podem aparecer mais — nesse terreno .NET pesa menos. Para comparar com outra porta de backend grande, leia o guia de Java junior; para o lado startup, vagas de JavaScript remoto.
Se você ainda não fechou a stack, leia como escolher stack para a primeira vaga tech. Para comparar portas de backend no mercado real, abra vagas de back-end remoto e vagas de dev junior remoto.
salário: o que esperar na entrada
Faixa de entrada de dev .NET junior varia bastante por contrato (CLT vs PJ), porte da empresa e região, e costuma subir quando você domina ASP.NET Core e vira a pessoa do serviço no time. Vaga de banco e de órgão público costuma ser CLT com benefício (e ritmo próprio); consultoria e integradora misturam CLT e PJ. Os números mudam e dependem de negociação — por isso o melhor movimento é ler salário junior no Brasil para o contexto de contrato e região, e pretensão salarial para vaga junior antes de responder faixa num processo. Para entender a diferença entre CLT, PJ e estágio antes de aceitar, leia CLT vs PJ vs estágio.
se você vem de outra área
Quem vem de engenharia, exatas, administração, suporte de sistema ou análise de negócio leva vantagem real em .NET backend: muito projeto é sistema grande com regra de negócio pesada, processo claro e regulação, e quem já pensou assim se adapta rápido. É comum entrar como dev .NET junior vindo dessas áreas sem curso tech formal. O guia de transição de carreira para tech mostra como transformar esse histórico em evidência em vez de desculpa, e o primeiro CV tech sem experiência ajuda a reposicionar trabalho anterior como prova de raciocínio e entrega.
para onde .NET cresce (e como não travar)
Vale saber o caminho depois da entrada. A progressão natural em .NET é virar pleno (dono de módulo, design de serviço), depois sênior (arquitetura de solução, performance, integração). Os saltos comuns a partir daí são cloud/DevOps (Azure é a porta natural — App Service, Functions, Azure DevOps, container), arquitetura (microserviço, DDD, mensageria) ou especialização em dados/IA com C# + ML.NET ou Python ao lado. Quem quer crescer rumo a cloud sem virar sênior antes da hora pode seguir o roteiro de DevOps e cloud para junior (Linux, Docker, pipeline, AWS/Azure). O ponto não é acumular certificação Microsoft; é virar a pessoa do serviço antes de virar a pessoa da arquitetura.
o resumo prático
- Entenda o cargo: dev .NET junior entrega feature em ASP.NET Core, escreve consulta em LINQ com EF Core, faz teste e abre PR pequeno.
- Estude na ordem: C# core e LINQ primeiro, depois SQL Server e Git, depois ASP.NET Core + EF Core, depois teste.
- Faça 3 projetos com código que roda, migração que prova e README que explica decisão — incluindo um que conserte N+1 de propósito.
- Antes de aceitar, pergunte a versão do .NET do time — fuja de .NET Framework 4.x sem plano de modernização.
- Leia o corpo da vaga, não só o título; pule anúncio que pede cinco anos no “junior”.
C# e .NET não é a stack mais nova, nem a mais falada em startup. É a que mais sustenta sistema grande de banco, consultoria e governo no Brasil — e por isso continua sendo uma das portas mais estáveis pra quem quer entrar como dev backend junior. A vaga existe em quantidade; o que falta pra muita gente é a base certa da linguagem e um portfólio que se explique sozinho.