Someone asked What is a Wrapper? and it got me thinking - where would I point a new developer in search of some foundational description of useful patterns?
The GoF book has long been a foundational part of the canon for OO programming, and all of us at one time or another have benefited from the descriptions of common patterns there.
But I've found that many of the patterns there are nichey or - i hesitate to say it - sort of irrelevant. The focus in that book was heavily on OO design as it pertained to UI, in particular "fat client" UI. Many of the patterns pertain to edge cases that are rare even within that limited domain.
Without intending to stir up too much controversy, I'd like to know if you think there is a need for a revised foundational patterns book.
I know about PEAA by Fowler. Here again, sort of nichey. If you are not in the enterprise, and you are not building fat-client UI, that is to say if you are in the vast majority of programmers today, these books miss the mark. If you are building web2.0 apps in ruby or perl or python or even ASP.NET MVC, what is your concise source for advice on patterns? do you even care about patterns?
What I am looking for is something more general and foundational, I guess, than either GoF or PEAA. Something that would describe what a Wrapper and Proxy are, without referring to UI or an ESB. A reference that would eliminate discussion of obscure and rarely used patterns and really focus on the most useful and general ones, with concrete examples relevant to today's app styles.
Is it even possible to author a book that would achieve those goals? Maybe it is not a book, but more of a ~16-page paper?
I know there have been wiki efforts at those sorts of things, the c2 repository being one. But I suggest that the old ways - printed books - are sometimes the best ways, especially when we're dealing with foundational tenets that change slowly if at all.
Is there something like this out there? If it does not exist, is it even possible to provide it? What would YOU recommend to a new programmer interested in learning about patterns?