Patterns of exisiting was to solve design problems.

See :

And also :

You don't need to start with them : http://weblogs.java.net/pub/wlg/1881

Good point, I introduced several patterns when I was developing SdiDesk. But they were introduced as responses to the code growing rather than being planned in advanced. (See also : ExtremeProgramming)

MartinFowler and co. deciding which of the classics should be "voted off the island" : http://martinfowler.com/bliki/OOPSLA2004.html