9 passos para se tornar um Backend Developer em .NET

Let`s code for fun!

Fala pessoal, beleza? Tenho recebido inúmeras dúvidas via E-mail, me pedindo um plano de estudos, com dicas de livros e até a ordem dos cursos que tenho no site balta.io, então resolvi criar este guia para te ajudar a progredir como um Backend Developer!

Este guia foca mais em tecnologias Microsoft, mas você pode tomá-lo como base para outras linguagens como PHP, JavaScript (NodeJs) e Java.

1. NÃO PULE O BÁSICO!

Se tem um conselho que eu posso te dar, este é "Não pule o básico". Novas tendências e novas tecnologias chegam o tempo todo, e se você não tem uma base sólida, não vai conseguir absorvê-las. Se você não tem o básico, qualquer mudança te afeta, você fica dependente do Google ou de algum amigo do trabalho.

Então, vamos começar do básico aqui, e sempre desconfie se você realmente sabe ele, afinal, o falso positivo é o pior dos resultados, isto ocorre quando você acha que sabe algo, mas no fundo, não tem uma base sólida.

2. Orientação à Objetos

Se você trabalha com desenvolvimento, com certeza já ouviu falar em Orientação à Objetos, correto? Mas você sabe o que realmente isso significa? Sabe como ele te ajuda? Se eu te perguntar agora, "qual a diferença entre uma interace e uma classe abstrata?" você sabe responder com convicção?

Pois bem, OOP (Object Oriented Programming) é algo que engana muito. Eu gosto de dizer que sempre estou aprendendo algo novo neste mundo, e para mim, OOP é a base de tudo.

Sabendo bem OOP você consegue modelar um sistema de forma eficaz, você consegue transparecer o negócio em código e esta é a função dele. Muitos optam pelo MER (Modelo Entidade Relacionamento), focado em banco de dados, enquanto temos um Objeto, que possui propriedades, métodos, eventos, relações, comportamentos, ou seja, muito mais rico e expressivo.

Estamos em uma fase onde falamos de Domain Driven Design, falamos em tratar a complexidade do negócio no domínio, e nada disso existe sem você não conseguir utilizar de forma eficaz o OOP.

Recursos para seus estudos

Curso: 1934 — Modelando Domínios
Curso: 1969 — Modern Web Aapps 2017 (Aulas 1 a 9)
Livro: Clean Code — Robert C. Martin
Livro: Clean Coder — Robert C. Martin

3. Banco de Dados Relacional e NoSQL

Com um domínio bem feito, refletindo o negócio e resolvendo os problemas do seu cliente, com certeza você precisará persistir e ler informações de algum lugar.

Em vários clientes que já passei, resolvi problemas de performance relacionadas a banco de dados, dos mais variados, então, por mais que existam estratégias que abstraem os comandos que executamos no banco de dados do nosso dia-a-dia, é extremamente importante que você saiba como escrever uma boa query, o impacto de um JOIN, criação de índices e por aí vai. Não precisa ser um Jedi aqui, mas é importante saber como as coisas funcionam.

Em adicional, estamos na era onde o NoSQL (Not Only SQL) vem ganhando um bom espaço, e você precisa também estar preparado para ele. Diferente dos bancos relacionais, os NoSQL tem leitura e escrita otimizada por que trabalham com persistências de estado, no formato de documentos (JSON).

Recursos para seus estudos

Curso: 1942 — Criando APIs Web com NodeJs e MongoDb
Livro: NoSQL Distiled — Martin Fowler
Livro: Do banco de dados relacional à tomada de decisão — Diego Nogare

4. Acesso à Dados

Com domínio feito e dados modelados, é hora de fazer o acesso à eles. Se você não estiver utilizando um NoSQL, vai precisar fazer um “dê-para”, dizendo ao sistema qual tabelas no banco sua entidade/objeto representa, dentre várias outras coisas.

O acesso à dado envolve você conhecer o ADO.NET, que é o principal componente para se conectar a um banco no .NET, seguindo de Micro ORMs (Dapper ou PetaPoco) e um ORM (Entity Framework ou NHibernate).

Recursos para seus estudos

Documentação do ADO.NET
Curso: 1935 — Acesso à Dados com Entity Framework e Repository Pattern
Curso: 1941 D — Criando aplicações escaláveis com arquiteturas modernas
Curso: 1969 — Modern Web Apps 2017 — Parte 1: Backend

5. ASP.NET Core sim!

ASP.NET Core é a última versão do ASP.NET, que, quando utilizado com o .NET Core pode inclusive rodar em ambientes Mac/Linux.

Começamos a falar sobre ASP.NET Core em 2014 e hoje ele já é uma realidade, embora alguns lugares ainda tomem ele como “muito recente”.

O ASP.NET Core foi inteiramente reescrito e está muito, muito, mas muito mesmo, mais rápido que o anterior. Além do excelente suporte a novas tecnologias e conceitos.

Recursos para seus estudos

Curso: 1969 — Modern Web Apps 2017 — Parte 1: Backend

6. APIs estão em toda parte

Você com certeza já ouviu falar em APIs (APIs Web), o Facebook, Instagram, dentre outros grandes, todos tem uma API! Na verdade, a invasão mobile causa isto, afinal sua aplicação rodando em um smartphone é obrigada a acessar os dados via um serviço.

A principal diferença entre uma API e uma aplicação Web, é que o retorno da execução de uma tarefa no seu servidor, na API, é um JSON e não um HTML. Então deixamos a responsabilidade do HTML para o Frontend, enquanto podemos focar no que fazemos de melhor.

Por outro lado, as APIs tendem a receber muito mais requisições que uma aplicação Web, afinal elas servem vários Frontends, o que acarreta uma quantidade massiva de requisições.

Recursos para seus estudos

Curso: 1969 — Modern Web Apps 2017 — Parte 1: Backend

7. DevOps

DevOps é o conceito que une o desenvolvimento às operações básicas que temos como versionamento, publicação, testes e por aí vai. DevOps deixou de ser um diferencial e passou a ser uma obrigatoriedade já faz um tempo.

Como DevOps é um conceito, há uma série de itens para serem estudados aqui.

Recursos para seus estudos

O que é DevOps?
Versionamento com Git/GitHub
Curso: Testes de Unidade
Curso: Deploy Automatizado das suas APIs
Livro: Descomplicando o Docker por Jefferson Noronha

8. Cloud Computing

O que será do seu sistema sem uma boa infraestrutura? Pois é, e tenho que te avisar que temos que saber de infraestrutura SIM!

Não fique espantado com a minha afirmação acima pois você não precisa aprender a configurar um Proxy Reverso, colocar uma VM na rede, configurar um Load Balancer, mas precisa saber que eles existem e para que servem.

Dentre os players disponíveis, um dos melhores é o Microsoft Azure, que com certeza casará bem para sua .NET! Porém, o Azure possui uma infinidade de recursos, e você terá que desbravar estes campos conhecendo o que fica melhor (Mais barato as vezes) para seu cenário.

Recursos para seus estudos

Documentação do Microsoft Azure
Curso: 1969 — Modern Web Apps 2017 — Parte 1: Backend

9. Arquitetura de Software

Arquitetar um software envolve todos os passos acima e um fator ainda mais importante, a experiência. Quando desenhamos uma solução, estamos colocando o sucesso (E dinheiro) de um projeto em jogo, e isto não é uma tarefa simples.

Se você chegou até este passo, você já está no caminho certo, mas arquitetura não se trata de ler livros e fazer cursos, e sim de viver cenários e casos reais, de soluções que deram certo ou errado.

Recursos para seus estudos

Livro: Domain Driven Design by Eric Evans
Livro: Implementing Domain Driven Design by Vernon Vaughan
Livro: Distiling Domain Driven Design by Vernon Vaughan
Curso: 1941 — Criando aplicações escaláveis com arquiteturas modernas
Curso: 1969 — Modern Web Apps 2017 — Parte 1: Backend

Conclusão

E aí, o que você achou destes passos? Colocaria mais algum? Modificaria algo? Deixa seu comentário aqui e até a próxima!