Разработка ПО
Макконнелл С. "Совершенный код".

Вообще, настоящая библия программиста. Является полным собранием эффективных принципов и методик программирования. Рассматривается все, начиная от правил именования переменных, ООП, и вплоть до тестирования приложений. Конечно, есть и определенные недостатки, включая некоторую избыточность и слабое структурирование. Но все, же это лучшее, что есть на подобную тему.
Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. "Приемы объектно-ориентированного проектирования. Паттерны проектирования"

Книга знаменитой «Банды четырех». В ней описываются типовые решения различных задач возникающих при проектировании ПО. В общем-то, книга довольно тяжело читается и, не смотря на небольшой объем, на то что бы ее понять уйдет довольно много времени... Книга будет полезна любому программисту, который хочет перестать быть просто кодером :)
