Bob Martin's book
Agile Software Development is a good balance between design and realization of design in code. The problem with many design books is they don't discuss the implications of design. The problem with that is you need to learn when you have a bad design. While there are principles and such that guide what a good design is (Martin discusses these), often you won't know that you have a bad design until you code it.
To be a good developer means you need a solid understanding of both design and construction--each impacts the other. The Martin book explains this relationship better than any other book out there.
Also, even if you could come up with a perfect design up front, poor construction would cause it to disintegrate over time. I highly recommend Martin Fowler's book
Refactoring to understand how to keep your code clean; I also recommend the upcoming edition of Code Complete (Steve McConnell).
-Jeff-