Tudo que Estudar, para se tornar uma Engenheira(o) de Software.

Thailane Lopes Dutra - Sep 18 - - Dev Community

Em 2016 quando estava terminando o meu ensino médio( e totalmente perdida sobre o que cursar na faculdade), fui apresentada ao mundo da tecnologia por uma professora de matemática, que também era desenvolvedora de software nas horas vagas. Através dela me apaixonei pela área e decidi que essa seria a carreira que seguiria.
Meu principal Objetivo é me tornar uma Engenheira de Software e por isso deixo aqui neste artigo, tudo que considero importante aprender para se tornar um bom Software Engineering.

OBS: Essa lista não é uma verdade absoluta, há muito conteúdo que talvez não esteja contemplado aqui, mas acredito que por essas introduções, um norte seja visualizado, principalmente para quem está começando.
Os links levam a uma introdução ao tema, para aprofundar-se, recomendo leitura de Livros, artigos e cursos sobre os temas.

Falando de Graduação

É muito importante escolher uma instituição que forneça uma matriz curricular o mais completa possível. Como sugestão deixo aqui a matriz curricular que cursei quando entrei na universidade:

Grade Curricular

O que é importante saber também

Se você estiver em um bom curso de graduação/técnico, muitos dos temas abaixo vão ser introduzidos a você, essa separação listada, traz uma melhor clareza sobre qual """Roteiro""" seguir de estudos.

Soft Skills

Comunicação: Saber se comunicar bem com equipes e stakeholders.
Trabalho em Equipe: Ser capaz de colaborar de forma eficaz em projetos.
Gerenciamento de Tempo e Tarefas: Saber priorizar e gerenciar múltiplas responsabilidades.

Engenharia de Software Ágil

Metodologias Ágeis: Scrum, Kanban, e Extreme Programming (XP).
Ferramentas de Gerenciamento de Projetos: Jira, Trello, Asana.

Frontend

Como a internet funciona?

Link

O que é HTTP?

Link

O que é um Nome de Domínio?

Link

O que é hospedagem?

Link

O que é DNS e como funciona?

Link

Navegadores e como funcionam?

Link

HTML, HTML Semântico:

Link

Formulários e Validações:
Link

SEO Básico:

Link

CSS:

Link

Layout de software:

Link

Design Responsivo:

Link

Arquitetura CSS:

Link

Link

Pré-processadores CSS (Sass, PostCSS):

Link

Tailwind:

Link

CSS-in-JSCSS Modules:

Link

Styled Components:

Link

Panda CSS, Mantine:

Panda
Mantine

JavaScript:

Link

Manipulação do DOM:

Link

Fetch API / Ajax (XHR):

Link

Type Checkers:

Link

TypeScript:

Link

Package Managers

npm:

Link

yarn:

Link

Frameworks e bibliotecas de Frontend

Angular:

Link

Vue.js:

Link

React:

Link

Ferramentas de Build

Linters e Formatters:

Link

Module Bundlers:

Link

ESLint:

Link

Prettier:

Link

Testing:

Link

Vitest:

Link

Jest:

Link

Playwright:

Link

Cypress:

link

Estratégias de Autenticação

JWT:

Link

OAuth:

Link

SSO:

Link

Autenticação Básica:

Link

Autenticação por Sessão:

Link

Segurança Web:

Link

CORS:

Link

HTTPS:

Link

Content Security Policy (CSP):

Link

OWASP Security Risks:

Link

Componentes Web

Custom Elements:

Link

HTML Templates:

Link

Shadow DOM:

Link

Server-Side Rendering (SSR):

Link

Next.js:

Link

Nuxt.js:

Link

Express.js:

Link

SvelteKit:

Link

GraphQL:

Link

Apollo:

Link

Relay Modern:

Link

Static Site Generators (SSG):

Link

Vuepress:

Link

Nuxt.js:

Link

Aplicações Móveis e PWA:

Link

React Native:

Link

Flutter:

Link

Ionic:

Link

Aplicações Desktop:

Link

Métricas de Performance (Lighthouse, DevTools):

Lighthouse

DevTools

Melhores Práticas de Performance:

Link

APIs de Navegador:

Link

Web Sockets:

Link

Server Sent Events:

Link

Service Workers:

Link

Conceitos Importantes

Padrão PRPL:

Link

Modelo RAIL:

Link

SWC:

Link

SSR:

Link

Performance Best Practices:

Link

*Backend *

Sistemas Operacionais:

Link

Gerenciamento de memória:

Link

Comunicação entre processos:

Link

Gestão de I/O:

Link

redes de computadores:

Link

Uso do terminal e comandos essenciais:

Link

Controle de processos e concorrência:

Link

Versionamento e Controle de Código

Git e GitHub:

Link

Bitbucket:

Link

GitLab:

Link

Linguagens de Programação:

Link

Aprender uma linguagem de programação para backend, como Go, Java, Rust, C#, PHP, JavaScript, Python, Ruby, (Minha dica pessoal é escolha uma e fique bom nela, melhor do que focar em muitas e acabar não se aprofundando em nada)

Bancos de Dados

Bancos de dados relacionais:

Link

Bancos de dados não relacionais NoSQL:

Link

sharding:

Link

Normalização e replicação de dados:

Link

APIs e Autenticação

REST:

Link

JSON:

Link

GraphQL:

Link

OAuth:

Link

JWT:

Link

OpenID:

Link

SAML:

Link

Segurança em aplicações web:

Link

Padrões de Design e Arquitetura

GOF Design Patterns:

Link

Domain-Driven Design (DDD):

Link

Test-Driven Development (TDD):

Link

Microservices:

Link

SOA:

Link

Monolithic Apps:

Link

Infraestrutura e DevOps

Containerização o que é ?

Link

Docker:

Link

LXC:

Link

Orquestração com Kubernetes:

Link

CI/CD:

Link

Observabilidade:

Link

logging:

Link

metrics:

Link

tracing:

Link

Cloud

Cloud computing:

Link

As mais comuns que são pedidas nas posições são:
AWS, Azure, Google cloud

Tecnologias e Ferramentas

Message Brokers:

Link

RabbitMQ:

Link

Kafka:

Link

Cache com Redis e Memcached:

Link

Elasticsearch:

Link

Solr:

Link

Serverless:

Link

CQRS:

Link

Event Sourcing:

Link

Livros que eu recomendo

Introdução à Análise de Complexidade de Algoritmos: Estudo Dirigido

Link

Engenharia de Software - Uma Abordagem Profissional - de Roger S. Pressman

Link

O Programador Pragmático

Link

Código Limpo

Link

Arquitetura Limpa: O guia do artesão para estrutura e design de software

Link

Desenolvimento Ágil Limpo

Link

O codificador Limpo

Link

. . . .
Terabox Video Player