Head First Design Patterns Fundamentals of Software Architecture Software Architecture: The Hard Parts If you like System Design, buy at least one of these.