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:
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?
O que é HTTP?
O que é um Nome de Domínio?
O que é hospedagem?
O que é DNS e como funciona?
Navegadores e como funcionam?
HTML, HTML Semântico:
Formulários e Validações:
Link
SEO Básico:
CSS:
Layout de software:
Design Responsivo:
Arquitetura CSS:
Pré-processadores CSS (Sass, PostCSS):
Tailwind:
CSS-in-JSCSS Modules:
Styled Components:
Panda CSS, Mantine:
JavaScript:
Manipulação do DOM:
Fetch API / Ajax (XHR):
Type Checkers:
TypeScript:
Package Managers
npm:
yarn:
Frameworks e bibliotecas de Frontend
Angular:
Vue.js:
React:
Ferramentas de Build
Linters e Formatters:
Module Bundlers:
ESLint:
Prettier:
Testing:
Vitest:
Jest:
Playwright:
Cypress:
Estratégias de Autenticação
JWT:
OAuth:
SSO:
Autenticação Básica:
Autenticação por Sessão:
Segurança Web:
CORS:
HTTPS:
Content Security Policy (CSP):
OWASP Security Risks:
Componentes Web
Custom Elements:
HTML Templates:
Shadow DOM:
Server-Side Rendering (SSR):
Next.js:
Nuxt.js:
Express.js:
SvelteKit:
GraphQL:
Apollo:
Relay Modern:
Static Site Generators (SSG):
Vuepress:
Nuxt.js:
Aplicações Móveis e PWA:
React Native:
Flutter:
Ionic:
Aplicações Desktop:
Métricas de Performance (Lighthouse, DevTools):
Melhores Práticas de Performance:
APIs de Navegador:
Web Sockets:
Server Sent Events:
Service Workers:
Conceitos Importantes
Padrão PRPL:
Modelo RAIL:
SWC:
SSR:
Performance Best Practices:
*Backend *
Sistemas Operacionais:
Gerenciamento de memória:
Comunicação entre processos:
Gestão de I/O:
redes de computadores:
Uso do terminal e comandos essenciais:
Controle de processos e concorrência:
Versionamento e Controle de Código
Git e GitHub:
Bitbucket:
GitLab:
Linguagens de Programação:
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:
Bancos de dados não relacionais NoSQL:
sharding:
Normalização e replicação de dados:
APIs e Autenticação
REST:
JSON:
GraphQL:
OAuth:
JWT:
OpenID:
SAML:
Segurança em aplicações web:
Padrões de Design e Arquitetura
GOF Design Patterns:
Domain-Driven Design (DDD):
Test-Driven Development (TDD):
Microservices:
SOA:
Monolithic Apps:
Infraestrutura e DevOps
Containerização o que é ?
Docker:
LXC:
Orquestração com Kubernetes:
CI/CD:
Observabilidade:
logging:
metrics:
tracing:
Cloud
Cloud computing:
As mais comuns que são pedidas nas posições são:
AWS, Azure, Google cloud
Tecnologias e Ferramentas
Message Brokers:
RabbitMQ:
Kafka:
Cache com Redis e Memcached:
Elasticsearch:
Solr:
Serverless:
CQRS:
Event Sourcing:
Livros que eu recomendo
Introdução à Análise de Complexidade de Algoritmos: Estudo Dirigido
Engenharia de Software - Uma Abordagem Profissional - de Roger S. Pressman
O Programador Pragmático
Código Limpo
Arquitetura Limpa: O guia do artesão para estrutura e design de software
Desenolvimento Ágil Limpo
O codificador Limpo