Ask HN: Good resources/books to learn software design for a developer?
Experience level 2-4 years, language agnostic.
GoF's desgin patterns (and Head First design patterns) are the only ones I know of.
Goal would be to improve myself as a software developer (preparing for interview design questions would be an added bonus).
Some topics that come to my mind would be:
1. Applying design patterns to real world problems. Ex. how would a you design an elevator system?
2. Architecture of some complex applications such as facebook, twitter, whatsapp etc.
3. Other common designs usually used in software engineering. For example : reliable messaging etc.
These problem and their solutions really interest me but again I don't have an exhaustive list of these topics. For example, I came across reliable messaging concept, and then I looked for it. But there may be several other topics which I haven't even heard of. Start by learning what the system actually is, interview its future users and address their requirements. Then look for systemic requirements like persistance, safety, security, realtime work, reliance, etc. Once you got all these questions, you start thinking about how your program is going to handle the system. There is a book called System analysis and design, google it, it look promising.