Table of contents
Não existe fórmula mágica para se tornar um programador/arranjar o primeiro emprego na área de tecnologia (provavelmente para qualquer área/carreira). Geralmente quem defende a ideia de "tudo que você precisa saber" ou "Do zero ao profissional" tem interesse apenas em ganhar dinheiro explorando sonhos alheios.
Durante minha carreira precisei iniciar meus estudos do zero algumas vezes e outras vezes ajudar pessoas a ter uma base teórica/prática sólida para ingressarem como desenvolvedores jrs. em projetos existentes.
Não acredito que exista um número finito, que pode ser determinado por qualquer tipo de experiência alheia que lhe faça atingir o sucesso, pois a quantidade de conhecimento necessário e a necessidade de cada um desses conhecimentos vai variar de acordo com as suas escolhas e das oportunidades/necessidades que a vida profissional lhe proporcionará.
Pessoalmente construí minha carreira através da educação formal (Graduação e mestrado em ciência da computação) e ainda vejo valor neste caminho, construindo bases teóricas fortes, com fixação de conteúdo através de repetição e não se baseando em tecnologias e frameworks. Contudo, entendo a avidez do mercado por profissionais (falta profissionais em ti pode chegar a 70 mil anuais) mudando o paradigma tradicional de ensino, para algo mais ágil, aceitando gaps de conhecimento e esperando que a própria trajetória profissional preencha estas lacunas.
Ou seja, não tem 5 anos para investir, tudo bem não precisa desistir...
Nesse contexto, criei algumas trilhas de estudo para desenvolvedores iniciantes e neste artigo compartilharei uma focada em desenvolvimento backend.
Se você está lendo este texto e está ponderando em começar a trabalhar com desenvolvimento de software, minhas primeiras indicações são dois cursos feitos pela USP e disponibilizaram gratuitamente no Coursera.
Introdução à Ciência da Computação com Python Parte 1
Introdução à Ciência da Computação com Python Parte 2
Invista um tempo, veja o que acha, se esses dois cursos despertarem seu interesse, siga em frente!
ou não siga... isso aqui é só um texto afinal.
Agora, você já tem conhecimentos na área e quer um direcionamento mais a nível de mercado, ou fez os cursos anteriores e quer agora um próximo passo puxe uma cadeira que vou apresentar alguns caminhos...
Não é um guia definitivo, apenas um indicativo do que considero muito bom caso um candidato jr. tenha um entendimento mínimo. Os cursos então espalhados entre Alura, Cod3r e Youtube, porém cursos semelhantes podem ser encontrados em diversas outras plataformas como a Pluralsight que hoje acredito ser uma das mais completas do mercado (Porém uma das mais caras).
Cao não seja exatamente uma lista de cursos que você esteja procurando, um conteúdo bem legal voltado para backend é Backend Developer. Eles possuem diversos "Roadmaps" que podem ser encontrados aqui.
Isso significa que C# seja a melhor linguagem para começar? Não. minha primeira linguagem foi o Pascal que possui suas vantagens para quem está começando, hoje acredito que a melhor linguagem seja o Python porém isto cada vez faz menos diferença. Nestes vídeos Fabio Akita comenta um pouco da não excepcionalidade das linguagens disponíveis:
Lembrando novamente que boa parte dos cursos aqui apresentados terão suas versões equivalentes em java, python, go, ruby, php. Lembre-se! São ferramentas de trabalho, não religiões!
Sendo assim dividi os cursos nos seguintes tópicos:
Programação Backend
- Conceitos de programação em C#
- Conceitos de banco de dados
- Persistência com .Net
- Api Rest com .Net
- Testes de Unidade
Controle de versão
- Git e Github
Cursos Complementares
- Boas práticas de desenvolvimento
- Projetos ágeis
- CI/CD
- Containers
- Serviços de mensageria
Esta lista de cursos (e os cursos em si) te darão um caminho de como as coisas funcionam, pra que servem te darão ideia de como utilizar cada uma das tecnologias. O que te transformará um programador é a prática. Para cada curso, busque exercícios relacionados online, tente fazer algo diferente do exemplo apresentado isso auxiliará a absorver o conhecimento.
Sem mais delongas e com o máximo de avisos prévios que consegui pensar, vamos para a lista:
Programação Backend
Neste primeiro bloco de cursos, separei o conteúdo em cinco partes: Conceitos de programação em C#, Conceitos de banco de dados, Persistência com .Net, Api Rest com .Net e Controle de versão.
Não sabe o que é Backend este texto da Alura vai te ajudar a entender.
Conceitos de programação em C Sharp
Os cursos deste primeiro módulo apresentam .Net, a linguagem C# com seus principais aspectos, estes doze cursos lhe darão a base, não tenha pressa, repita quantas vezes necessário, procure conteúdos extras e tente não avançar até que esteja confortável com os conteúdos apresentados.
Conceitos de programação em C# | Link | Tempo est. |
C# parte 1: Primeiros passos | Link do curso(Alura) | 8h |
C# parte 2: Introdução à Orientação a Objetos | Link do curso(Alura) | 8h |
C# parte 3: Entendendo herança e interface | Link do curso(Alura) | 8h |
C# parte 4: Entendendo exceções | Link do curso(Alura) | 8h |
C# parte 5: Bibliotecas DLLs, documentação e usando o NuGet | Link do curso(Alura) | 8h |
C# parte 6: Strings, expressões regulares e a classe Object | Link do curso(Alura) | 8h |
C# parte 7: Array e tipos genéricos | Link do curso(Alura) | 8h |
C# parte 8: List, lambda, linq | Link do curso(Alura) | 8h |
C# Parte 9: Entrada e saída(I / O) com streams | Link do curso(Alura) | 8h |
C# Collections parte 1: Listas, arrays, listas ligadas, dicionários e conjuntos | Link do curso(Alura) | 8h |
C# Collections parte 2: Listas, arrays, listas ligadas, dicionários e conjuntos | Link do curso(Alura) | 8h |
C#: Eventos, Delegates e Lambda | Link do curso(Alura) | 8h |
Para cada um desses cursos listados acima eu recomendo que você separe a mesma carga horária para a prática. Existem alguns sites que você pode encontrar boas listas de desafios como:
Após passar algumas semanas praticando nas listas acima, uma boa pedida para desafios mais complexos pode ser a plataforma hackerrank. Esta plataforma inclusive é amplamente utilizada por empresas como parte do processo seletivo.
Terminou os passos acima? São quase 100 horas de curso e uma recomendação de mais 100 horas de pratica. Se tudo isso faz sentido para você neste momento, parabéns! Vamos em frente, e fique tranquilo, daqui pra frente só piora!
Conceitos de bancos de dados
Esse bloco de cursos recomendados foi centrado em fundamentos e aplicabilidade prática de banco de dados relacionais. Como esta sequencia de cursos é focada em tecnologias da Microsoft, a lista inclui alguns cursos de SQL Server, porém é bem fácil encontrar cursos semelhantes para outras distribuições de bancos relacionais como o MySQLe o PostGreSQL.
E o tal do NoSQL? Eu sugiro que você foque em entender bem os conceitos de bancos relacionais primeiro, para depois expandir o conhecimento e entender as vantagens de abordagens.
Não sabia nem que existia essa coisa de NoSQL? Essa publicação do geekhunter vai ter ajudar a ter uma ideia.
Conceitos de Bancos de Dados | Link | Tempo est. |
1 - Modelagem de banco de dados relacional: Entidades, relacionamentos e atributos | Link do curso(Alura) | 10h |
2 - Modelagem de banco de dados relacional: Modelo e Álgebra Relacional | Link do curso(Alura) | 6h |
3 - Modelagem de banco de dados relacional: Diagrama ER e Modelo Relacional | Link do curso(Alura) | 10h |
4 - Modelagem de banco de dados relacional: Normalização | Link do curso(Alura) | 10h |
5 - Modelagem de banco de dados relacional: Entendendo SQL | Link do curso(Alura) | 10h |
6 - SQL Server: Introdução ao SQL com Microsoft SQL Server 2019 | Link do curso(Alura) | 10h |
Aqui reuni cerca de 60 horas de conteúdo de banco de dados novamente, recomendo ao menos 20 horas extras de prática de modelagem e consulta.
Se o conceito de banco de dados estiver meio confuso ainda, tente assistir ao vídeo abaixo do Akita, nele ele tenta explicitar o que seria esse tal banco de dados:
Persistência com .Net
Ok, agora eu sei que tem esses bancos de dados... Como que o código acessa essas coisas?
A resposta é, como quase tudo em desenvolvimento de software: Tem um milhão de formas diferentes, cada uma com suas vantagens e desvantagens... Mesmo dentro de uma mesma linguagem existem diferentes ORMs que possibilitam acesso a informações em bancos de dados externos. A seguir apresento quase 60 horas de conteúdo sobre o linq e Entity Framework.
Persistência com .Net | Link | Tempo est. |
1 - Entity LinQ parte 1: Crie queries poderosas em C# | Link do curso(Alura) | 11h |
2 - Entity LinQ parte 2: Store Procedures e consultas com o LinQPad | Link do curso(Alura) | 8h |
3 - Entity Framework Core: Banco de dados de forma eficiente | Link do curso(Alura) | 16h |
4 - Entity Framework Core parte 1: Mapeando um banco pré-existente | Link do curso(Alura) | 12h |
5 - Entity Framework Core parte 2: Mapeando um banco pré-existente | Link do curso(Alura) | 12h |
API Rest com .Net
Um conceito que não vai fugir de uma entrevista técnica clichê por aí é: Você conhece os verbos HTTP? Muito provavelmente você precisará desenvolver ou dar manutenção em alguma api durante a vida, segue uma lista de cursos primeiramente explicando o tal do HTTP e como trabalhar com esse cara usando C#:
API Rest com .Net | Link | Tempo est. |
1 - HTTP: Entendendo a web por baixo dos panos | Link do curso(Alura) | 14h |
2 - API Rest com .NET 5: operações essenciais com verbos HTTP | Link do curso(Alura) | 8h |
3 - .NET 5 e EF Core: relacionando entidades | Link do curso(Alura) | 8h |
4 - .NET 5 e Identity: implementando controle de usuário | Link do curso(Alura) | 10h |
5 - .NET 5 e Identity: autenticando e autorizando usuários | Link do curso(Alura) | 8h |
6 - .NET 5 REST API Tutorial: 05 Persisting entities with MongoDB | Link do curso(youtube) | 1h |
7 - .NET 5 REST API Tutorial: 06 Tasks, Async and Await | Link do curso(youtube) | 1h |
8 - .NET 5 REST API Tutorial: 07 Secrets and Health Checks | Link do curso(youtube) | 1h |
Testes de Unidade
Este também é assunto que de nada adianta ser estudado, antes da primeira parte tenha sido bem absorvida, isso não diminui a importância de testes. O conteúdo a seguir apresenta o básico necessário para você trabalhar com testes unitários em qualquer empresa:
Testes de Unidade | Link | Tempo est. |
1 - C#: Testes de unidade e TDD com xUnit | Link do curso(Alura) | 8h |
2 - Mocks em C#: testes de Integração com xUnit e Moq | Link do curso(Alura) | 8h |
3 - Test Driven Development in C# | Link do curso(Pluralsight) | 4h |
Controle de versão
Este é assunto mandatório em desenvolvimento de software, versionar repositórios de forma a manter a organização em equipes de variados tamanho e que mudam com frequência, existem diversas tecnologias de controle de versão porém foquei aqui apenas em git e guithub.
Controle de Versão | Link | Tempo est. |
1 - Git e Github: Controle e compartilhe seu código | Link do curso(Alura) | 6h |
2 - Git e Github: Estratégias de ramificação, Conflitos e Pull Requests | Link do curso(Alura) | 8h |
Ok, com o conteúdo apresentado até aqui, com prática, buscando outras fontes... você já tem um ótimo inicio. Mas é só isso? Não...
Agora é que a coisa começa a ficar mais ramificada.
Cursos Complementares
A intenção dessa próxima lista é mostrar algumas tecnologias e estratégias de desenvolvimento que são muito difundidas no mercado, ou no mínimo cobradas em entrevistas.
Alguns assuntos aqui são bem mais complexos, e demandarão anos para um bom domínio, ou seja... Nesta sessão, para um primeiro momento, você pode se preocupar apenas em tem uma ideia de alguns temas.
Cursos Complementares | Link | Tempo est. |
1 - SOLID com C#: Princípios da programação orientada a objetos | Link do curso(Alura) | 8h |
2 - Design Patterns C# I: Boas práticas de programação | Link do curso(Alura) | 8h |
3 - Design Patterns C# II: Boas práticas de programação | Link do curso(Alura) | 24h |
4 - Docker: criando e gerenciando containers | Link do curso(Alura) | 10h |
5 - Kafka: Produtores, Consumidores e streams | Link do curso(Alura) | 8h |
6 - Integração Contínua: mais qualidade e menos risco no desenvolvimento | Link do curso(Alura) | 6h |
7 - Entrega Contínua: confiabilidade e qualidade na implantação de software | Link do curso(Alura) | 6h |
8 - Domain-Driven Design Fundamentals | Link do curso(Pluralsight) | 5h |
9 - Modern Software Architecture: Domain Models, CQRS, and Event Sourcing | Link do curso(Pluralsight) | 6h |
10 - Scrum: Agilidade em seu projeto | Link do curso(Alura) | 10h |
11 - Kanban parte 1: Fundamentos Essenciais | Link do curso(Alura) | 6h |
Estes eram os cursos que tinha para apresentar. Não tenho a pretensão de achar que tudo que é necessário foi coberto nessas poucos linhas acima, porém realmente acredito que com um bom domínio do que foi aqui apresentado, você será um profissional bem requisitado no mercado.
Como Continuar?
Por fim, reuni algumas referências para que você possa seguir por sua conta agora. Alguns livros importantes, alguns canais no youtube, podcasts, blogs e contas de twitter de pessoas relevantes para a comunidade de desenvolvimento de software.
Livros
Algoritmos - Teoria e Prática (Thomas Thomas Cormen)
Conceitos de Linguagens de Programação (Robert W. Sebesta)
Código limpo: Habilidades práticas do Agile Software (Robert C. Martin)
Arquitetura limpa: O guia do artesão para estrutura e design de software (Robert C. Martin)
Refatoração: Aperfeiçoando o Design de Códigos Existentes (Martin Fowler)
Mythical Man-Month (Frederick P. Brooks Jr.)
Domain-Driven Design: Atacando as complexidades no coração do software (Eric Evans)
Links para salvar nos favoritos
Nesta última sessão, decidi compartilhar alguns links interessantes, blogs, contas de twitter, canais no youtube e podcasts de pessoas que produzem um conteúdo que vale a pena ter o hábito de acompanhar.
Blogs:
Podcasts:
Contas twitter (para tecnologias Microsoft)
Canais no youtube (para tecnologias Microsoft)
O texto ficou bem longo (bem mais das 50 dicas), talvez no futuro eu separe ele em algumas paras porém, por hora que estes sejam bons caminhos para continuar o processo de aprendizagem.
Precisa de ajuda ou tenha dúvida sobre algum conteúdo? Entre em contato comigo, que tentarei ajudar com o que for de meu conhecimento. :)
Por hora é isso. Valeu!