27 книг для программиста по версии Acronis
Представители компании Acronis, ведущего поставщика решений для резервного копирования, специально для пользователей GeekBrains подготовили список книг, полезных для разработчика. Здесь каждый сможет найти что-нибудь для общего развития, пополнения базовых и специализированных знаний. Программистам, которые в дальнейшем видят себя предпринимателями, будет интересна тематическая подборка от Сергея Белоусова, сооснователя Runa Capital и компаний Parallels и Acronis.
Гайдар Магдануров, Вице-президент компании Acronis:
Профессиональным разработчикам программного обеспечения важно не столько знание какого-то конкретного языка программирования, фреймворков и средств разработки, сколько понимание основных принципов, алгоритмов, процесса разработки и тестирования полученного результата. Тут, на мой взгляд, будет уместна следующая аналогия: умение программировать — как умение писать. Одного только умения писать недостаточно, чтобы написать художественное произведение.
Для того, чтобы «научиться писать», рекомендую одну из книг Роберта Седжвика про алгоритмы — у него есть несколько книг для С++ и для Java. К умению писать код, важно добавить навык «писать качественный код». Про написание качественного кода существует множество книг и блогов, я рекомендую книгу «Защищенный код». Она позволяет хорошо прочувствовать, что у программного кода, помимо достижения конкретной цели, есть еще и задачи быть надежным, безопасным, тестируемым, легко поддерживаемым.
Чтобы быть успешным программистом, востребованным на рынке труда, важно понимать, для чего и как создается программный код. Конечная цель — продукт, и достигается она работой большого количества людей: разработчиков, тестировщиков, архитекторов и менеджеров продукта. Люди, умеющие создавать продукты, а не только «ставить скобки и точки с запятыми», всегда в цене. Классические книги Брукса «Мифический человеко-месяц», Купера «Психбольница в руках пациентов» и Рейнвотера «Как пасти котов» весьма полезны к прочтению.
Весьма увлекательным и полезным чтением для разработчиком будут еще и книги Кристенсена «Дилемма инноватора» и «Showstopper!» Закери — с реальными примерами того, как известные компании создают и решают сложности во время разработки программных продуктов.
Базовые знания:
- Алгоритмы на C++, Роберт Седжвик — Современное и исчерпывающее описание важных алгоритмов и структур данных на C++;
- Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн — Необходимый объем знаний для программиста в области алгоритмов на Java;
- Защищенный код, Майкл Ховард, Дэвид Лебланк — Практические советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО.
Специализация по менеджменту:
- Мифический человеко-месяц, или Как создаются программные системы, Хилл Чапел, Фредерик Брукс — Настольная книга разработчика;
- Психбольница в руках пациентов, Алан Купер — Менеджмент для программистов, часть 1;
- Как пасти котов. Наставление для программистов, руководящих другими программистами, Хэнк Дж. Рейнвотер — Менеджмент для программистов, часть 2.
Специализация по Product management:
- Дилемма инноватора. Как из-за новых технологий погибают сильные компании, Клейтон Кристенсен — Как замечать новые ниши и создавать успешные продукты;
- Showstopper! the Breakneck Race to Create Windows NT and the Next Generation at Microsoft Paperback, by G. Pascal Zachary — Как создавать продукты.
Антон Енакиев, вице-президент Acronis по разработке:
Базовые знания:
- Внутреннее устройство Microsoft Windows, Марк Руссинович, Дэвид Соломон — Руководство по внутреннему устройству и алгоритмам работы основных компонентов Windows;
- Programming Applications for Microsoft Windows, Jeffrey Richter — Руководство по написанию приложений для Windows;
- Программирование серверных приложений для Microsoft Windows 2000, Джеффри Рихтер, Джейсон Кларк — Руководство по созданию высокопроизводительных и надежных серверные приложения для Windows 2000;
- Язык программирования С++, Бьерн Страуструп — Основы программирования на C++ от создателя C++;
- Искусство программирования, Дональд Эрвин Кнут — «Библия программиста» в четырех томах.
Специализация по Windows (Specific for Windows kernel developers):
- Windows NT File System Internals, Rajeev Nagar — Руководство по файловым системам на Windows NT;
- Справочник по базовым функциям API Windows NT/2000, Гэри Неббет — О том, как писать приложения для Windows NT/2000;
- Windows NT Device Driver Development, Peter G. Viscarola, W. Anthony Mason — Руководство по разработке драйверов на Windows NT;
- Использование Microsoft Windows Driver Model, Уолтер Они — Все необходимое для понимания процесса написания драйверов;
- Undocumented Windows NT, Prasad Dabak, Sandeep Phadke — О недосказанном в Windows NT.
Кирилл Коротаев, вице-президент Acronis по инжинирингу, Acronis Backup и Системам Хранения Данных:
Книги обязательные для прочтения системными программистами:
- Что каждый программист должен знать о памяти, Ульрих Дреппер — Что нужно знать о hardware чтобы заниматься software;
- Алгоритмы: построение и анализ, Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн — Все что нужно знать об алгоритмах;
- Теория синтаксического анализа, перевода и компиляции (в 2-х томах), Ахо А., Ульман Дж. — Если вы хотите знать как работают компиляторы и что же на самом деле скрывается за регулярными выражениями.
Для общего развития:
- Сила мгновенных решений, Малкольм Гладуэлл — Все что нужно знать о том, как работает мозг и что такое интуиция;
- Outliers: The Story of Success, Malcolm Gladwell — Для понимания причин успехов и неудачи;
- Серьезный разговор об ответственности. Что делать с обманутыми ожиданиями, нарушенными обещаниями и некорректным поведением, Кэрри Паттерсон, Джозеф Гренни — Эта книга поможет вам развить навыки, необходимые для выхода из сложных ситуаций;
- Marketing High Technology, William H. Davidow — Книга о маркетинге высокотехнологичных продуктов;
- Эмоциональный интеллект 2.0, Тревис Бредберри, Джин Гривз — Книга о развитии эмоционального интеллекта;
- «Квантовая психология», Артур Уилсон — Об аналогиях и параллелях между психологией и физикой. А так же как научиться говорить так, чтобы устанавливать общий контекст и избегать недопонимания.
Для всего остального есть мы: профессия «Веб-разработчик».