If an abstraction is good enough and fit for a particular problem, you can mostly treat it as magic, solve your problem at an upper layer and be done with it. Only when there is a mismatch between the problem domain and the available abstractions, you need to start jiggling through the layers and understand what problems each layer is trying to address.