Предисловие
Ниже небольшой список книг, которые лично я могу рекомендовать для чтения всем программистам, в том числе начинающим. Как это обычно бывает, что купил, то и продаю.
База Computer Science
Теоретический минимум по Computer Science (Владстон Феррейра Фило)

Это супер-базированная книга, которая подойдёт как стартовая особенно тем, кто не получил профильного образования.
Видео-курс CS50

Это не книга, но возможно, лучшее, что вы сможете найти для обучения базе. Это великолепный гарвардский курс, на примере которого вы поймёте, почему люди стремятся попасть на учёбу в такие места как Гарвард. Видео-курс можно найти в открытом доступе в Интернете на русском языке и более полную официальную версию.
Можно также получить сертификаты о его прохождении онлайн на edx.org или на сайте Гарварда. Курс регулярно обновляется, поэтому если начали, лучше закончить в тот же год.
Программирование
Объектно-ориентированное мышление (Мэтт Вайсфельд)

Я бы охарактеризовал эту книгу как начальную для тех, кто хочет использовать ООП в своей работе. Эта книга не очень популярна, но мне лично она помогла в своё время "устаканить" некоторые концепции в голове.
Паттерны проектирования (Эрик Фримен, Элизабет Робсон и другие)

Есть две версии этой книги - одна из них с картинками для большей наглядности. Понимание паттернов позволит вам структурировать в голове различные подходы и общаться на одном языке с другими программистами, выбирая решения для тех или иных задач.
Чистый код (Роберт Мартин)

В книге вы найдёте набор правил, которые помогут вам писать понятный для себя и, что гораздо важнее в больших компаниях, понятый для других программистов код. Чем раньше вы эту книгу прочитаете, тем лучше.
Экстремальное программирование. Разработка через тестирование (Кент Бек)

Иногда программисты пренебрегают тестированием (что плохо). Книга вдохновит вас писать тесты, ну или, по крайней мере, даст пищу для размышлений.
Алгоритмы и структуры данных
Грокаем алгоритмы (Адитья Бхаргава)

Даёт базовые представления об алгоритмах и структурах данных. Книга любима многими за свою простоту, с которой автор объясняет ключевые принципы. Если вы прочитаете, поймёте и реализуете всё, что в этой книге есть, то у вас не должно возникнуть проблем со следующей книгой. Рекомендуется читать обновлённую (исправленную) версию книги.
Карьера программиста (Г. Лакман Макдауэлл)

В основном эта книга предназначена для тех, кто проходит собеседования в крупные технологические компании. Много материала посвящено основной секции - алгоритмической.
System Design
System Design (Алекс Сюй)

Отлично структурированная книга, которую зачастую рекомендуют для прочтения перед прохождением интервью. В Интернете можно найти многочисленные диаграммы, описывающие самые разные айтишные вещи, от того же автора.
High Load
Высоко-нагруженные приложения (Мартин Клеппман)

Знаменитая "книга с кабанчиком", одна из фундаментальных книг для программиста, желающего гордо именовать себя Software Engineer.
Менеджмент
Делай как в Google (Титус Винтерс, Том Маншрек, Хайрам Райт)

Книга даёт общие представления о разработке в технологических гигантах, таких как Google. В ней можно узнать, как быть хорошим руководителем, как нанимать инженеров и оценивать их производительность, как тестировать, масштабировать, какой инструментарий можно использовать - очень много всего.
Agile. Оценка и планирование проектов (Майк Кон)

На мой взгляд, в книге много воды. Но вместе с тем там можно найти весьма детальные описания взаимодействия в командах, работающих по Agile методологии, которую вы начнёте лучше понимать и использовать.
Послесловие
Было бы интересно увидеть ваш минимум книг в комментариях. Если есть какие-то замечания, постараюсь улучшить статью или позже опубликовать обновлённую версию.
Автор: tertiumnon