DEV Community

Cover image for Tudo que Estudar, para se tornar uma Engenheira(o) de Software.
Thailane Lopes Dutra
Thailane Lopes Dutra

Posted on

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

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

Top comments (0)