ну базы данных, сети, операционные системы про это конечно обязательно знать программисту (хотя на самом деле от специализации зависит)
но как правило выделяют следующих авторов:
тут нужно изучать что то подготовительное
например «Как программировать на паскале»
или «Что такое циклы, массивы и какие типы данных бывают»
…
Дональд Кнут
Грэйди Буч
Мартин Фаулер
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
+ книги по специализации
например если вы на java пишете то не пройдете мимо Брюса Эккеля.
Если вам нужны знания баз данных или операционных систем то прочитайте про них.