Если говорить про область программирования то я был под впечатлением от Мартина Фаулера и его книги "Refactoring: Improving the Design of Existing Code". Это такое манифест разработки - изменения нужны, изменения важны, делать их надо с умом.
Конечно не могу не упомянуть про Джошуа Блоха и его "Effective Java" второе издание. Я начал задумывать и об использовании абстрактных фабрик, меньшей изменяемости объектов. Правильном использовании наследования и многом другом, например последняя фича - gengerics.
Товарищ написавший предыдущий труд, сейчас работает в google. Брюс Тейт - автор многих книг, в том числе "Beyond Java", выдвинул такие идеи. Лучшие умы уходят от работы с джавой. Она больше не является самым инновационным языком программирования, простые вещи на не сложно писать, смотрите шире!
Конечно стоит упомянуть не до конца мною изученую, но тем не менее очень достойную книгу Чарльза Петцольда - Код. В ней обсуждается кодирование информации с помощью морзянки и брайля, потом устройство телеграфов и реле и так далее. Читаешь ее и будто многие вещи в голове встают на свои места. В ядре компьютерных технологий лежат исключительно простые вещи!
Вот на такой труд наткнулся когда искал must read books - "The Psychology Of Computer Programming" by Gerald Weinberg. Подняты на обсуждение темы личных качеств людей в команде, их совместимости, анализ программирования, как творческой и умственной деятельности. Я думаю это важные вопросы, и они должны изучаться.
На десерт расскажу про книгу "Everything is negotiable" by Gavin Kennedy. О правильном ведении диалогов, сам автор указывает, что его работа не идеал, вопросы и обсуждения ДОЛЖНЫ быть. Очень интересно показна важность того что люди торгуются, что важно учитывать системы ценности и многое другое.