I'm going to go out on a limb here and not recommend a book. Good architecture and design take practice . You can get that practice by working with someone who understands it (some of the better, larger open source projects might be a good way to go). Books can help to a certain degree, but you have to make a conscious effort to practice what you're reading. The best thing to do, assuming you can't get the experience…
Note that a lot (most?) comp sci programs don't necessarily address design principles. If you're in a software engineering track they should, but my curriculum was mostly algorithms, data structures, operating systems, and programming languages. My senior year I had one class where design and project management was really a topic.