Tao Te Ching. Although it's a philosophy book and not a programming book, some of it's principles are very applicable to programming:
"Know when it's time to stop. If you don't know then stop when you are done."
Translation: Knowing your requirements means you know when to stop. If you don't know when to stop, you need to stop because the requirements have yet to be defined.
"The harder one tries, the more resistance one creates for oneself."
Translation: How many times have you worked on a problem for several hours, only to find the answer after taking a 15-minute break? The more you hammer at a problem, the harder it is going to be for you to solve it.
"One whose needs are simple can fulfill them easily."
Translation: Simple requirements lead to simple designs.
"When we lose the fundamentals, we supplant them with increasingly inferior values which we pretend are the true values."
Translation: Hubris is never a good substitute for good programming standards. If you get lax, no amount of design patterns will ever substitute for the lack of quality in your code.