Engenharia
TL;DR
Camada do como construir e operar bem — disciplinas neutras de stack. O que vale aqui independe de linguagem: como desenhar, comunicar, testar, proteger e operar sistemas. A teoria mora aqui; a implementação concreta vive nos domínios de Tecnologia.
Sobre esta camada
Engenharia é o andar entre a Ciência da Computação (o porquê atemporal) e a Tecnologia (o como em X). São as disciplinas de craft que a indústria construiu: arquitetura, design, testes, segurança, comunicação entre sistemas, dados e operação. A regra de ouro: a fundamentação fica aqui; cada tecnologia linka pra cá e cuida das suas particularidades (ex.: os princípios de RBAC ficam em Segurança; como implementar RBAC no Spring fica no galho de Spring).
Domínios
- Arquitetura — forma macro do sistema: system design, distribuídos, modelagem
- Arqueologia e Restauração de Software — assumir e restaurar sistemas legados: forense, seams, Strangler Fig, a lente do consultor
- Complexidade de Software — essencial vs. acidental, abstração, dívida técnica
- Segurança — princípios, autenticação, autorização, RBAC, OWASP
- Testes — pirâmide de testes, TDD, mocking, cobertura
- Design de Software — OO como craft, SOLID, design patterns, clean code
- UX — o ofício de decidir o que construir e para quem, antes da tela: pesquisa, arquitetura de informação, interação, linguagem visual, writing, métricas, ética
- Comunicação entre Sistemas — APIs, REST, GraphQL, gRPC, mensageria, contratos
- Dados — engenharia de dados em escala: modelagem dimensional, warehousing, pipelines
- Operação — operar em produção: SRE, SLO/SLI, deploy, observabilidade, incidentes
Veja também
- Domínios — todas as camadas
- Ciência da Computação — a base teórica abaixo
- Tecnologia — a implementação concreta acima