ACADEMIA · BASE COMUM

Aprender sintaxe é fácil.
Pensar programação é outra coisa.

Os conceitos que atravessam Python, C#, Java, C++, JavaScript, PHP e praticamente qualquer outra linguagem.

PROBLEMAALGORITMOCÓDIGOTESTEPRODUÇÃO
01
Antes da linguagem

Pensamento algorítmico

Decompõe o problema em entradas, regras, estados e saídas. Escreve primeiro o algoritmo em linguagem natural ou pseudocódigo. Se não consegues explicar o processo sem sintaxe, ainda não está suficientemente claro.

Entrada → validação → transformação → decisão → saída.
02
Escolher como guardar

Estruturas de dados

Listas/arrays guardam sequências; mapas/dicionários ligam chaves a valores; conjuntos evitam duplicados; filas e pilhas modelam ordens de processamento. A estrutura certa simplifica o algoritmo.

Array · Map · Set · Queue · Stack · Tree · Graph
03
Separar responsabilidades

Funções e módulos

Divide código por intenção. Funções pequenas, nomes claros e parâmetros explícitos facilitam testes e manutenção. Módulos separam áreas do programa e reduzem dependências.

input → função pura → output
04
Modelar quando faz sentido

Orientação a objetos

Classes agrupam estado e comportamento. Usa encapsulamento para proteger invariantes e composição para combinar comportamentos. Herança não é obrigatória nem deve ser a primeira solução.

Cliente + Ticket + Mensagem → domínio do Helpdesk
05
Trabalhar sem medo

Git e versões

Commits pequenos e descritivos permitem regressar, comparar e colaborar. Aprende add, commit, branch, merge, pull e push. Nunca guardes passwords ou segredos no repositório.

git status → add → commit → push
06
Investigar em vez de adivinhar

Debugging

Reproduz o erro, reduz o caso, observa valores, lê stack traces e testa hipóteses uma de cada vez. Logs devem dar contexto sem expor dados sensíveis.

reproduzir → isolar → observar → hipótese → testar
07
Provar comportamento

Testes

Testes unitários verificam unidades pequenas; integração verifica componentes juntos; end-to-end percorre fluxos reais. Testa casos normais, limites e erros esperados.

Arrange → Act → Assert
08
Programas a comunicar

HTTP, JSON e APIs

HTTP usa métodos como GET, POST, PUT/PATCH e DELETE. Status 2xx indica sucesso, 4xx problema do pedido e 5xx falha do servidor. JSON é um formato de dados, não uma base de dados.

GET /api/tickets/42 → 200 OK
09
Persistência com regras

Bases de dados

Modela entidades e relações; usa chaves primárias/estrangeiras, constraints e transações. Queries devem ser parametrizadas para impedir SQL injection.

aplicação → prepared statement → DB
10
Input nunca é confiança

Segurança por defeito

Valida no servidor, escapa output, usa CSRF em alterações, passwords com hashing forte, sessões seguras, rate limiting e privilégios mínimos. Nunca confies apenas em JavaScript do browser.

validar entrada · autorizar ação · escapar saída
11
Medir antes de otimizar

Performance

Escolhe algoritmos adequados e mede gargalos reais. Cache, índices e processamento assíncrono resolvem problemas diferentes. Uma otimização sem medição pode piorar o sistema.

medir → localizar → otimizar → medir novamente
12
Código em produção

Deploy e observabilidade

Separa configurações de código, gere segredos fora do repositório, cria backups e rollback. Monitoriza disponibilidade, erros e recursos. Um deploy só termina quando sabes que ficou saudável.

build → test → deploy → healthcheck → monitorizar
PRÓXIMO PASSO

Escolhe uma linguagem e aplica os conceitos.

Abrir Academia →