Conjunto reutilizável de funções/módulos consumido pela aplicação.
Práticas que tornam o código legível, simples e manutenível.
Revisão por pares para melhorar qualidade e compartilhar conhecimento.
Solução reutilizável para um problema recorrente de projeto.
Estrutura que define o fluxo e pontos de extensão da aplicação.
Integração frequente de mudanças com builds/testes automatizados.
Desenvolvimento guiado por testes: teste primeiro, depois código.