Наверное в каждой сфере существуют книги, которые являются обязательными для чтения для любого уважающего себя работника. Вот и программирование не является исключением. Я составил свой личный список книг охватывающий все наиболее важные этапы разработки программного обеспечения, от проектирования, до написания и поддержки кода.
Стив Макконнелл — Совершенный код

Это действительно самая важная книга в карьере любого программиста, так как до ее прочтения он просто не имеет права себя таковым называть. По своей сути это «библия программиста», в которой очень доходчиво и просто изложены «заповеди программирования». И читать ее нужно систематически, чтобы освежать в памяти, осознавать и применять на практике изложенный в ней материал. Данная книга рассматривает вопросы проектирования, написания программного кода, тестирование, отладку и поддержку программного обеспечения. И каждый из этапов автор рассматривает очень подробно, приводя примеры. Основная идея книги заключается в том, что для написания качественного программного продукта необходимо контролировать его ложность на каждом этапе разработки, и на всех его уровнях.
Джеффри Рихтер — CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#

Очень подробное и грамотное руководство по языку разработке на языке C#. Книга подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (CLR) Microsoft .NET Framework версии 4.5. Материал книги направлена на обучение созданию по-настоящему надежных приложений любого вида, в том числе с использованием Microsoft Silverlight, ASP.NET, Windows Presentation Foundation и т.д. Материал излагается грамотным техническим языком. Данная книга является обязательной для изучения всем разработчикам на платформе .NET Framework и использующих язык программирования C#.
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес — Приемы объектно-ориентированного проектирования. Паттерны проектирования

Данная книга подробно и понятно описывают простые решения типичных задач, возникающих в объектно-ориентированном проектировании, рассматривает наиболее популярные и часто используемые паттерны. Материал содержит множество красивых, а главное работающих на практике решений, улучшающих надежность и качество кода, позволяя повысить продуктивность разработки. Учитывая, что большинство проектов сейчас разрабатываются в объектно-ориентированном стиле, данная книга обязательна для чтения для любого разработчика.
Мартин Фаулер, Кент Бек, Джон Брант, Дон Робертс — Рефакторинг. Улучшение проекта существующего кода

Данная книга является подробным справочником и руководством к действию по поддержанию высокого качества исходного кода программы. В ней описываются подходы к изменению программного кода, с целью улучшения его читаемости, гибкости или быстродействия. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Благодаря таким простым манипуляциям автор показывает как можно добиться улучшения качества кода на несколько порядков. Книга необходима для понимания и систематизации процесса рефакторинга, что является ежедневной практикой любого достойного разработчика программного обеспечения.
Эндрю Хант, Дэвид Томас, А. Алексашин — Программист-прагматик. Путь от подмастерья к мастеру

Данная книга содержит невероятное число полезных и правильных советов программистам. Авторы исследуют суть процесса разработки программного обеспечения, рассматривают требования к работоспособности программы, ее гибкости и адаптивности к изменениям. В книге очень подробно описаны подходы и технологии обеспечивающие надежность работы программы, например программирование по контрактам, а также юнит-тестирование. Материал будет полезен всем разработчикам, которые хотят добиваться высокого качества меньшими силами и за более короткий промежуток времени.