Привет, у нас на Хекслете есть список рекомендованных книг, которые мы советуем изучать каждому программисту. Они на все времена и не устареют в ближайшее время
Вот эти книги
- Грокаем алгоритмы (Адитья Бхаргава). В ней отличные примеры, пускай и на Python, там есть рисунки и объяснение работы основных структур данных (массив, хеши, списки), как работают алгоритмы и рекурсия. Книга мастхев для тех, кто начинает программировать. Она довольно простая и небольшая, но при этом весьма ценная из-за своей подачи и содержания
- Совершенный код (Стив Макконнелл) - объемный талмуд почти про все. Как писать код, как его лучше структурировать, есть разделы про личные качества программиста. Многие важные мысли из этой книги транслируются другими опытными и хорошими программистами. Книга останется с вами надолго, будете периодически перечитывать и находить что-то новое.
- Идеальный программист. Как стать профессионалом разработки ПО (Роберт С. Мартин) Хоть я и не люблю некоторые книги Мартина, эта книга хорошая и полезная. Истории из жизни программиста 60ых годов, советы, которые все еще актуальны. Время идет, а проблемы (вроде переработок и багов) всё те же.
- Код. Тайный язык информатики (Чарльз Петцольд). Ох, это книга про то, что такое двоичный код, как устроены компьютеры, как они считают. Книга для широких масс, но в определенный момент голова начинает разрываться, чтобы уместить, что происходит на страницах. Интересно то, что в этой книге описываются логические схемы, которые можно реализовать например в Minecraft (и собрать простой компьютер-калькулятор)
- Вы, конечно, шутите, мистер Фейнман! (Ричард Фейнман). Р. Фейман - это известный (возможно в узких кругах) физик. У него была замечательная жизнь, Которая описана в этой книге. Еще в честь него назван "Метод самообучения Фейнмана", про то, как обучаться. Книга читается легко и её можно совмещать с другими, чтобы отдыхать от технины
- Операционная система UNIX (Андрей Робачевский, Сергей Немнюгин, Ольга Стесик). Мне кажется, что это самая тяжелая и техническая книга из списка. Любому программисту важно понимать, как работает компьютер, как работают сети. Потому что с этими знаниями он может создавать более надежные программы и понимать, что происходит в его коде. В книге описываются различные моменты на примере Linux, внутреннее устройство. Что такое файлы, сети, процессы. Понимание этих вещей делает любого прогера лучше
- Цель. Процесс непрерывного совершенствования (Элияху М. Голдратт, Джеф Кокс). Книга про узкие места, и непрерывное улучшение. Иногда нам кажется, что мы всё делаем, а нужного результата нет. Книга написана в жанре бизнес-роман и рассказывает историю директора завода, которому нужно вдохнуть вторую жизнь в предприятие, спасти от закрытия. Книга вдохновляющая, содержит интересные, умные мысли. Может сперва тяжело понять, чем может быть полезна книга, но она полезна как раз своими мыслями и рассуждениями (и идеей про непрерывное улучшение).
Я перечислил те книги, которые сам читал или читаю, остальные рекомендуемые книги можно посмотреть
в этом списке. Ну и рекомендую почитать, как эффективно читать
проф литературуОбщий совет - выбирая книги для чтения, смотрите что в ней. Есть такая проблема у учебников - они устаревают уже в момент выхода. ПОэтому когда берете книгу по прикладной тематике (язык программирования, фреймворк, библиотеки кода), то они могут устареть уже в момент печати. Выйдет новая версия языка, где старые подходы будут не актуальны, что-то будет сломано или называться совершенно по-другому. Еще бывает, что в книгах просто опечатки, обидно потратить уйму времени на набор программы из книги, где пример попросту нерабочий.