Camadas, módulos, na verdade a arquitetura em si, são meios de tornar programas de computador mais fáceis de entender por humanos . O método numericamente ideal de resolver um problema é quase sempre uma bagunça emaranhada de código não-modular, auto-referência ou auto-modificável - seja um código assembler altamente otimizado em sistemas embarcados com restrições de memória incapacitantes ou sequências de DNA após milhões de anos de pressão de seleção. Tais sistemas não têm camadas, nenhuma direção discernível do fluxo de informações, na verdade nenhuma estrutura que possamos discernir de forma alguma. Para todos, menos para o autor, eles parecem funcionar por pura magia.
Na engenharia de software, queremos evitar isso. A boa arquitetura é uma decisão deliberada de sacrificar alguma eficiência para tornar o sistema compreensível por pessoas normais. Entender uma coisa de cada vez é mais fácil do que entender duas coisas que só fazem sentido quando usadas juntas. É por isso que módulos e camadas são uma boa ideia.
Mas, inevitavelmente, os módulos devem chamar funções uns dos outros e as camadas devem ser criadas umas sobre as outras. Então, na prática, é sempre necessário construir sistemas para que algumas partes requeiram outras partes. O compromisso preferido é construí-los de tal forma que uma parte exija outra, mas essa parte não exige a primeira de volta. E é exatamente isso que a camada unidirecional nos oferece: é possível entender o esquema do banco de dados sem conhecer as regras de negócios e entender as regras de negócios sem saber sobre a interface do usuário. Seria bom ter independência em ambas as direções - permitindo que alguém programe uma nova interface do usuário sem conhecer qualquer coisa sobre as regras de negócios - mas, na prática, isso praticamente nunca é possível. Regras básicas como "Nenhuma dependência cíclica" ou "Dependências devem atingir apenas um nível" simplesmente capturam o limite praticamente alcançável da ideia fundamental de que uma coisa de cada vez é mais fácil de entender do que duas coisas.