These might not actually be the top 3, but I know they are going to be pretty close for most people:
- The Call Stack
- The Transaction
- The Layers Pattern
The first two are interesting in that they imply a specific paradigm of programming (whether good or bad), which is easy to implement and easy to think about, but ultimately, makes for a very poor choice in certain situations (yes, I’m being vague to stay out of a rabbit trail).
The 3rd I’ll pick on because without using the Layers pattern, most developers would be completely and utterly lost. In fact, this one is so in-grained, that many developers don’t even realize it’s a pattern. So much for being pattern averse. Can you actually make an informed choice when you know of only one option?

So what are the alternatives to the Layers pattern? I use the Layers pattern all the time and realize it is a pattern, but I am not aware of other options other than no Layers. Are there others patterns I should be considering that attack the same problems solved by Layers? If so, what are they?