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