Лучшие книги для начинающих программистов по версии наставников Хекслета
Книги — достаточно важный аспект в обучении разработке. При этом существуют тысячи книг по программированию, и достаточно сложно самостоятельно выбрать из них что-либо подходящее. Мы попросили наставников Хекслета выбрать самые лучшие книги для начинающих разработчиков — как напрямую связанные с программированием или компьютерами, так и косвенно — про историю или мотивацию. При этом в список не вошли книги, которые Хекслет официально рекомендует к прочтению как начинающим, так и уже опытным разработчикам.
«Программист-прагматик. Путь от подмастерья к мастеру». Эндрю Хант, Дэвид Томас
Находясь на переднем крае программирования, книга «Программист-прагматик» Эндрю Ханта и Дэвида Томаса абстрагируется от технических тонкостей разработки и рассказывает о сути процесса — о том, как создавать работоспособную и поддерживаемую программу, заранее понимая, с какими сложностями могут столкнуться разработчики.
По сути, авторы в своей книге рассказывают о базовых подходах, которыми должны пользоваться настоящие разработчики и благодаря которым можно как писать эффективный код и выполнять бизнес-задачи, так и взаимодействовать с другими инженерами и пользователями.
«Выразительный JavaScript. Современное веб-программирование». Марейн Хавербеке
«Выразительный JavaScript» Марейна Хавербеке — одна из основных книг для погружения в JavaScript. Написанная абсолютно простым языком, она раскрывает этот популярный язык программирования с разных сторон, с легкостью объясняя достаточно сложные для понимания новичков вещи.
У книги даже есть свой сайт, где каждый желающий сможет выполнять практические задания, которые есть после каждой главы.
«Архитектура компьютера». Эндрю Таненбаум
Книга посвящена структурной организации компьютера. В ее основе лежит идея о том, что компьютер можно рассматривать как иерархию уровней, каждый из которых выполняет определенную функцию. В рамках этого нетрадиционного подхода подробно описываются цифровой логический уровень, уровень архитектуры команд, уровень операционной системы и уровень языка ассемблера.
При этом «Архитектура компьютера» — первая книга из цикла работ Таненбаума о строении вычислительных устройств. После чтения этой книги все советуют читать «Компьютерные сети» и «Современные операционные системы», чтобы до конца понимать, как будет работать код, который вы напишете.
Writing An Interpreter In Go. Thorsten Ball
Отличная книга, к сожалению, до сих пор не переведенная на русский язык. Автор Writing An Interpreter In Go проведет вас через путешествие под названием «а сейчас мы напишем собственный язык программирования». Самое важное в этом не то, что вы создадите простенькую (хоть и собственную) систему, а в том, что сможете понять, как изнутри устроены языки программирования, и почему те или иные решения реализованы в них именно таким образом. Добавляя сюда простой язык и умение автора объяснять достаточно сложные вещи — получаем отличную небольшую книгу, которая позволяет разбираться в сложных вещах.
«Хакеры: Герои компьютерной революции». Стивен Леви
«Хакеры: Герои компьютерной революции» — книга о движении хакеров, выпущенная в 1984 году. Автор описывает людей, технологии и события, которые формировали этические принципы и мировоззренческие основы движения со времён первых хакеров Массачусетского технологического института. По сути, это достаточно полное исследование этики хакеров, во многом рассказанное изнутри.
«Кровь, пот и пиксели. Обратная сторона индустрии видеоигр». Джейсон Шрейер
Почему Diablo III чуть не стала крупнейшим провалом Blizzard? Как Halo превратилась в стратегию? Через что прошла студия, создавшая Uncharted? Всё, что вы хотели знать о разработке Witcher-3 и Destiny, а также многие другие эксклюзивные истории, рассказанные автору этой книги теми, кто создавал самые популярные игры последнего десятилетия. Джейсон Шрейер изнутри рассказывает, почему игровая индустрия — это не только престиж и огромные зарплаты, но и проверка на стрессоустойчивость и выносливость, которую проходят далеко не все.
«Джедайские техники». Максим Дорофеев
Книга совсем не по программированию, но тем не менее современным разработчикам необходимы не только технические знания, но и умения концентрироваться, учиться и вообще — эффективно работать. Максим Дорофеев рассказывает, как устроено мышление и память человека, как правильно формулировать задачи и восстанавливаться для продуктивной работы, можно ли внедрять полученные знания в жизнь и не вставать на одни и те же грабли. Помимо «Джедайских практик» у Максима Дорофеева есть еще книга «Путь джедая».
«Вторжение. Краткая история русских хакеров». Даниил Туровский
«Вторжение» — еще одна книга в списке, не связанная напрямую с программированием, но очень погружающая в технологическую сферу. Российский журналист Даниил Туровский сделал большое исследование феномена российских хакеров — появления этой сферы еще в СССР, их взаимодействия со спецслужбами и мировой сетью хакеров, эстетике и реалиях, в которых они сейчас существуют.
Читайте и другие статьи в блоге: Haskell — язык, позволяющий глубже понять программирование. Как он устроен и почему его выбирают разработчики?
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
С каких книг можно начать изучать программирование (Python, C#, C++, Java, Lua, …)
Здравствуйте дорогие читатели.
Данная статья посвящена вопросу, который волнует большинство начинающих программистов и робототехников (именно тех робототехников, кто готов постичь премудрости сложных систем и достич конструкторских решений как в Boston Dynamics).
Для начинания есть несколько путей:
запись в кружок или на курс
обучаться по книгам и документации
обучаться по видеороликам
Выбираем кружки и курсы
Мой совет использовать и сочетать все три варианта. Какой курс или кружок выбрать необходимо решать исходя из того что вы уже знаете.
Если вам мало лет и вы не знаете ничего из робототехники и механики и автоматики, то вам подойдут курсы, где необходимо постичь основы сборки механических конструкций и применение простой автоматики для реализации работы механизма.
Есть также краткосрочные курсы как очные так и дистанционные, которые помогают взрослым окунуться в мир программирования и робототехники. Огромное их количество для определённого вида профессий — учителей и воспитателей. Но никто не мешает записаться на данный курс человеку другой профессии.
Я часто записываюсь на дистанционные курсы. Для начинающих лучше попробовать бесплатные. Например на Stepik есть огромное количество курсов.
Курсов там огромное количество выбирай на свой вкус.
Если вы хотите создавать игры, то можете воспользоваться электронной версией книги Создание игр в Blender.
Выбираем книги для обучения программированию и робототехники
Второй вариант — это обучаться по книгам. Для начала, я рекомендую обзавестись энциклопедиями по таким разделам, как математика и физика.
Почему энциклопедии? Это связано с тем, что энциклопедии содержат достаточно полную информацию о всех направления науки и неплохое разъяснение по той или иной теме кратко, но доступно. Например, я пользуюсь энциклопедиями по математике и физике для детей Аванта+.
Не забывайте про справочники по данным дисциплинам. Это фундамент и для изучения программирования и для изучения робототехнике, так как эти две дисциплины очень тесно связаны.
Из книг по программированию рекомендую начать с основ. Например, Джейсона Бриггса «Python для детей».
Данный язык программирования достаточно универсален для обучения как самому программированию, так и программированию роботов.
В качестве продолжения, могу рекомендовать данные книги по программированию. Все они связаны с математикой, 3D координатами, списками, функциями и классами 1 из 2.
Как уже и писал ранее python универсален и подойдёт для изучения в робототехники.
Последняя книга охватывает процесс создание модели устройства. Поэтому, перед тем как создавать устройства из материала, необходимо создать модель в том числе и виртуальную. Для этого нам понадобятся книги по 3d моделированию и визуализации физики.
Если вам необходимо отработать навыки в механике и программировании сложных процессов в устройстве, то можно воспользоваться данной книгой.
Есть книга для самых маленьких, которым предстоит знакомится с устройствами 1 из 2.
Если вам будет под силу все эти книги, то можете смело приступать к более сложным вещам: компьютерное зрение и машинное обучение.
Все эти книги я активно использую в своей работе и они мне неоднократно помогали.
Если же вам нравятся языки со статической типизацией, то можно взять что по C++.
Данная книга для студентов
Также есть хорошие книги по Delphi:
Эта книга немного устарела, но коды рабочие для новых версий.
Если ваша мечта касается создания игр, то можно изучить C# на базе Unity.
Всё в ваших руках. Если вы горите этой идей, то вы обязательно достигните своей цели.
И напоследок, моё видео о выборе книг для программирования.
Топ-10 книг по программированию для начинающих от профи своего дела
Считается, что программирование — это прикладная дисциплина, и в её изучении упор нужно делать на практику. Особенно в сравнении с другими digital-специальностями — дизайном или маркетингом.
Ведь от дизайнера ожидают не только механического знания Photoshop или Figma, но и наличия вкуса, который тренируется через насмотренность. От маркетолога – баланса между креативностью и контролем за метриками. Поэтому книги в этих сферах больше направлены на то, чтобы вдохновить читателя, научить вариативности решения их задач.
С программистами такое равновесие работает в меньшей степени – знай, как написать функционал из ТЗ, и ты уже неплох. Если можешь предложить несколько вариантов реализации – вообще замечательно. Но есть важные для кодера хард- и софт-скиллс, о которых не прочитаешь в мануалах и на StackOverflow.
Эксперты Skillbox, где обучают более чем 30 различным специальностям в программировании, подготовили подборку книг, за счет которых вы точно повысите свою ценность как профессионала.
Тимлид продюсеров курсов по программированию
Евангелист образовательных программ и автор курса «Профессия Java-разработчик»
Книга будет полезна как опытным разработчикам (если вы сталкивались с различными паттернами на практике, но не знали, что это были именно они) так и новичкам, потому что здесь дается широкий набор исчерпывающих и очень понятных объяснений и примеров. Доступный и интересный способ подачи –– визитная карточка серии «Head First» издательства O’Reilly, так что чтение не будет скучным. Что важно знать: книга ориентируется на Java, но почти все пользователи в сети отмечают, что это не большая проблема для PHP-программистов.
Книга о том, как писать код без лишних комментариев, чтобы он был понятен другим людям, прост и лаконичен. Издание научит вас писать поддерживаемый и хорошо структурированный код, а также постоянно совершенствоваться в его качестве. Есть большое число актуальных советов – от длины и выразительности имен до содержимого функций. В сети много хороших отзывов о книге, но встречается и критика: опытные прогеры отмечают, что есть моменты, с которыми можно спорить. Но если вы новичок, и нуждаетесь в основах –– эта книга будет очень полезна.
Книга о программировании в широком смысле этого слова. О процессе разработки, о качестве программного кода и чертах самого программиста. Многие прогеры причисляют ее к классике и must read литературе в своей специальности. Содержит не только общие сведения, но и детали –– поэтому даже опытные специалисты найдут ее полезной. Все примеры здесь преимущественно на С++ и Visual Basic. Если вы front-end-разработчик –– общий смысл уловить будет несложно, но в деталях синтаксиса придется разбираться подольше.
Еще один must have. Хорошо структурированный и очень большой справочник по всем основным алгоритмам с подробными и понятными примерами. Будет полезен как для понимания работы встроенных в языки программирования алгоритмов, так и для проектирования собственных. Книга переиздавалась как минимум три раза: в последнем издании убрали главы о сортирующих сетях и биномиальных кучах и внесены правки в синтаксис псевдокода. Так что для знакомства лучше выбирать более поздние издания –– они значительно актуальнее.
Фундаментальный труд, который разрабатывался на протяжении нескольких десятилетий, о математике, глубоких аспектах различных алгоритмов и структур данных. Билл Гейтс сказал об этой книге: «Если вы считаете себя действительно хорошим программистом, прочитайте Искусство программирования [Кнута]… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме».
Уже вторая книга этого автора в нашей подборке. Очень подробное пособие о том, как рассчитывать сроки разработки программного обеспечения. Современный вариант классического труда Фредерика Брукса «Мифический человеко-месяц», написанного в 1975 году. Поможет научиться реалистично подходить к оценке затрат на разработку продуктов.
Работа любого программиста состоит не только из написания кода и сидения за компьютером, но и из взаимодействия с другими людьми — коллегами, подчиненными и руководителями. При таком общении важен эмоциональный интеллект. О том, что это такое и каким он бывает, подробно рассказывает эта книга. А если тема личных эмоций и достижения духовного равновесия окажется вам близка, можно посмотреть и более ранние книги автора. Например, «Многообразие медитативного опыта».
Бестселлер, о котором вы, наверняка, слышали. Книга, которая позволит разобраться в себе, в своих ценностях, амбициях и мотивах. Для многих даже заменяет психоаналитика, помогает понять суть и пути решения различных внутренних конфликтов. Если копнуть глубже, принципы позитивного мышления, которые изложены в книге, могут показаться знакомыми и простыми истинами. Но разве мы всегда помним о них в ежедневном потоке дел и прогерских кодов?
Книга одинаково полезна и тимлидам, и рядовым программистам. Лучше смотреть третье издание – там 6 новых глав с актуальными дополнениями. По английски она называется «Peopleware» – что еще больше говорит о ее содержании. Книга о людях, о работе в команде и о том, что ваша эффективность зависит не только от техники, но и от социальных факторов. Хвалят менеджеры и управленцы почти любых сфер – число положительных отзывов это уже веский повод обзавестись своим экземпляром.
Книга о том, как создавать доступные интерфейсы и делать программное обеспечение понятным даже для тех, кто далек от компьютерных технологий. Один из важных тезисов –– интерфейс вы создаете для тех, кто будет им пользоваться. Мысль кажется очевидной, но практика показывает, что программист часто может забыть про целевую аудиторию на любом этапе разработки. Как этого не допустить? Как настроить обратную связь и нарисовать портрет ваших пользователей? Что такое метод персон? Книга ответит на эти вопросы и даст любому разработчику +100% к профессиональной эффективности.
Что читать начинающему программисту
Книги, которые будут красиво смотреться на фото ваших рабочих мест.
Перед вами подборка из пяти книг, которые хорошо бы прочитать каждому программисту. Если вы только начинаете, можно идти сверху вниз — мы специально расположили книги в порядке возрастания сложности.
👉 Если вы не нашли в подборке свою любимую книгу по программированию — напишите о ней в комментариях. А если ещё расскажете, чем она будет полезна для начинающих, будет вообще отлично.
1. Код. Тайный язык информатики
Автор: Чарльз Петцольд
Автор объясняет сложные вещи, связанные с программированием и работой компьютера. Объяснение того, как работает процессор внутри компьютера, мы считаем одним из лучших среди книг на подобные темы.
Если вы только начинаете разбираться в программировании, компьютерах и том, как это работает, читайте «Код».
2. Карьера программиста
Автор: Г. Лакман Макдауэлл
Книга поможет подготовиться к собеседованию почти в любой IT-компании. Автор на примерах показывает, какие вопросы могут задать, в чём их особенность и как на них лучше отвечать. Особенно интересно почитать, чем отличается подход в маленьких и крупных компаниях и на что смотрят в каждой из них.
Если у вас скоро собеседование, а книгу прочитать вы не успеваете, прочитайте нашу статью про собеседования. Она не такая большая, но тоже полезная.
3. Идеальный программист. Как стать профессионалом разработки ПО
Автор: Роберт Мартин
Роберт Мартин — это один из тех, кто придумал agile и гибкую разработку в принципе. Если вы не читали про скрам — почитайте, по этой системе работают большинство программистов в мире.
В книге «Идеальный программист» Роберт рассказывает, как программисту применять свои знания, как развивать навыки и к чему стремиться, чтобы стать профессионалом. Почти на каждое заявление автор приводит пример из своей рабочей практики, иногда неожиданный.
4. Чистый код. Создание, анализ и рефакторинг
Автор: Роберт Мартин
Книга о том, как сразу писать чистый, красивый и правильный код и чему для этого нужно научиться. В отличие от предыдущей книги, в этом полно примеров кода — и плохого, и хорошего, и как превратить один в другой.
Единственное, что нужно учесть, — все примеры автор приводит на Java. Но если вы умеете программировать на любом языке высокого уровня, вы сможете быстро понять, про что говорит автор и что делает сам код.
5. Искусство программирования
Автор: Дональд Кнут
Первая версия этой книги вышла в 1968 году, а сейчас публикуется уже третье издание, в которое добавлено много новых рабочих алгоритмов. Особенность книги в том, что все примеры приводятся на языке ассемблера, а это пугает многих современных программистов. Сам Кнут утверждал, что только так программист сможет по-настоящему понять, как работают программы внутри компьютера и что стоит за кодом на самом деле.
Билл Гейтс говорил об этой книге так: «Если вы прочитали все тома „Искусства программирования“, вам точно следует отправить мне своё резюме».
15++ классических книг для программиста
Только мастриды, и только проверенные временем — для новичков и профессионалов.
Tartila / Africa Studio / valdis torms / Julia Zavalishina / Shutterstock / Erik Karits / Gary Yost / Jack Hamilton / Byron Burns / Darko Pribeg / Unsplash / страница Brian Tracy в Facebook / Анна Рыжакова / Skillbox Media
Мы выбрали книги, которые не привязаны к конкретным языкам программирования, технологиям или инструментам. Они рассказывают об алгоритмах и структурах данных, шаблонах проектирования и рефакторинге, учат мыслить как программист, готовят к собеседованию и помогают строить успешную карьеру.
Сложность книжек мы оценили смайликами от одного 🤯 (понятно и новичку)
до 🤯 🤯 🤯 🤯 🤯 (без программистского опыта или спецподготовки будет непросто).
Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.
1. «Программист-прагматик. Ваш путь к мастерству» (2-е, юбилейное издание
к 20-летию выхода книги)
Дэвид Томас, Эндрю Хант
Перевод с английского — И. В. Берштейн
Издательство «Вильямс», 2020 год, 368 с.
Оригинальное название: The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition) by David Thomas & Andrew Hunt
Зачем читать: чтобы получить общее представление о работе программистов.
Кажется, в этой книге есть всё, что пригодится программисту: от того, как стать ответственным, до анализа ошибок в алгоритмах и шифрования данных.
Если разбирать все эти темы от и до, получился бы неподъёмный труд на 100500 томов, а не 300 страниц «Программиста-прагматика». Так что книга даёт лишь общее представление — как карта без детализации.
«Прагматик» расширяет кругозор, делает человека своим в тусовке разработчиков. В ней много классных цитат и тонкого профессионального юмора, например:
«Есть старый анекдот об американской компании, заказавшей 100 тысяч микросхем у японского производителя. В спецификации на микросхемы было, в частности, указано, что брак должен составлять 1 штуку на 10 тысяч хороших микросхем.
Заказ был доставлен через несколько недель и состоял из одной крупной коробки, содержавшей тысячи микросхем, и другой, мелкой, в которой было всего лишь десять микросхем. К этой коробке была приклеена этикетка, на которой было написано „Бракованные микросхемы“:
Хорошо, если бы и у нас контроль качества был на таком же уровне».
2. «Чистый код: создание, анализ и рефакторинг» (Библиотека программиста)
Роберт Мартин
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 464 с.
Оригинальное название: Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
Зачем читать: чтобы научиться замечать типичные ошибки и не делать их самому. Например, не пускать на самотёк именование переменных, подпрограмм и модулей, форматирование кода, обработку граничных условий — то, что по отдельности кажется мелочью, а всё вместе безбожно портит код.
Начинающим программистам иногда кажется, что раз программа заработала, то и ладно. Ни к чему с ней дальше возиться: незачем тщательно продумывать структуру классов, обрабатывать все граничные условия и уж тем более заботиться о говорящих именах переменных, полезных комментариях и других «мелочах».
Дядюшка Боб считает, что внимание к деталям, умение отличать хороший код от плохого и привычки чистюли сделают из кодера настоящего программиста.
Мартин и соавторы на примерах показывают, как грамотно проектировать архитектуру приложения и писать чистый код, а в конце перечисляют признаки «дурно пахнущего кода» — типичные ошибки.
В общем, для создания хорошего приложения нужно потрудиться — самим же потом легче будет его сопровождать.
Заметки на полях: если бы каждый разработчик в начале карьеры прочитал эту книгу, мир был бы лучше, а люди — добрее. Большинство советов Мартина актуальны последние лет двадцать — и наверняка будут полезны ещё очень долго.
3. «Совершенный код. Мастер-класс»
Стив Макконнелл
Перевод с английского — В. Г. Вшивцев
Издательство «БХВ», 2017 год, 896 с.
Оригинальное название: Code Complete by Steve McConnell
Зачем читать: чтобы узнать, как довести любую программу до совершенства. Ну или хотя бы попытаться
Грамотное конструирование — это секрет успеха. Вот основная идея автора книги. Причём в конструирование входит и планирование, и кодирование, и тестирование готовой программы.
Из книги вы узнаете:
Заметки на полях: если вы дружите с английским, то советую читать книгу в оригинале. Тогда вам не придётся подолгу гадать, о чём вообще говорит переводчик: продираться через трёхъярусный канцелярит, англицизмы и поминать редактора из «БХВ» недобрым словом. Убедитесь сами по цитате из русского издания:
«Общей чертой всех программистов, создающих высококачественное ПО, является использование высококачественных методов, ставящих ударение на качестве ПО в самом начале, середине и конце проекта».
4. «Паттерны объектно-ориентированного проектирования»
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
Перевод с английского — А. Слинкин
Издательство «Питер», 2021 год, 448 с.
Оригинальное название: Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Ralph Johnson, John Vlissides, Richard Helm
Зачем читать: чтобы узнать про шаблоны программирования из первоисточника.
Четвёрка авторов, она же «Банда четырёх», среди программистов известна не меньше, чем «Битлз» во всём мире. И знамениты они как раз тем, что первыми детально описали 23 основных шаблона проектирования — показали, как организовывать взаимодействие классов и объектов, чтобы решать типичные задачи программирования.
Многие считают, что эта книга устарела, — первое издание вышло 25 лет назад, и за это время было написано много других книг о шаблонах. Однако принципы классификации, да и сами шаблоны, до сих пор актуальны.
Заметки на полях: прочитать книгу «Банды» — всё равно что осилить Шекспира в подлиннике: сложновато, но мозг тренирует отлично. К тому же всегда можно осовременить полученные знания книгой попроще и поновее
5. «Head First. Паттерны проектирования» (обновлённое юбилейное издание)
Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 656 с.
Оригинальное название: Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman & Elisabeth Robson / Bert Bates / Kathy Sierra
Зачем читать: чтобы перестать ненавидеть шаблоны и начать, наконец, их применять на практике
Тот самый случай, когда проще — не значит хуже. В этой книге из серии Head First знаменитого издательства O’Reilly, похоже, достигнут идеальный компромисс между сложностью объясняемых концепций и простотой подачи материала.
Создать программу для работы с данными метеостанции или написать код для расчёта стоимости напитка в кофейне Starbuzz — на таких игровых задачах авторы объясняют, как применять основные паттерны проектирования, и учат достраивать архитектуру грамотно — соблюдая все важные принципы. Например, открывать классы для расширения, но закрывать их для изменений.
Заметки на полях: прочитав эту книгу, вы не просто разберётесь с шаблонами — на какое-то время вы станете их ярым фанатом и будете пугать коллег, пытаясь пропихнуть шаблон даже для самой маленькой задачи
6. «Шаблоны корпоративных приложений» (Signature Series)
Мартин Фаулер
Перевод с английского — Издательский дом «Вильямс»
Издательство «Вильямс», 2020 год, 544 с.
Оригинальное название: Patterns of Enterprise Application Architecture by Martin Fowler with contributions from David Rice et al. (Addison-Wesley Signature Series)
Зачем читать: чтобы узнать, как решают проблемы больших и очень больших приложений.
И снова про шаблоны, но уже про другие — про шаблоны высокого уровня. Корпоративные приложения автоматизируют сложные бизнес-процессы и нередко работают с довольно большими объёмами данных. При этом они, как правило, интегрируются и обмениваются данными с другими системами. Всё это порождает специфические трудности и вопросы.
Из каких слоёв может состоять приложение, как представлены данные в вебе, как управлять состоянием системы — вот несколько из десятков вопросов, на которые отвечает эта книга.
В первой части — беглый обзор типовых проблем, а во второй Фаулер рассказывает, как выбрать архитектурное решение. Автор предлагает более 40 подходов, иллюстрируя их примерами из жизни и фрагментами кода.
Заметки на полях: с первого издания книги прошло больше 10 лет, появились новые инструменты и технологии, но вот типичных проблем у корпоративных приложений не очень-то убавилось — поэтому книга всё ещё актуальна.
7. «Психбольница в руках пациентов. Алан Купер об интерфейсах»
Алан Купер
Перевод с английского — Е. Самородских
Издательство «Питер», 2018 год, 384 с.
Оригинальное название: The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper
Зачем читать: чтобы лучше понимать целевую аудиторию, что ей нужно, ну и не ругаться почём зря с коллегами-дизайнерами
Гибкая архитектура, изящные алгоритмы, паттерны и принципы именования — за всем этим программист порой забывает, что программное обеспечение должно быть не только качественным, но нужным, полезным и понятным для потребителей.
Хорошо, если в компании есть UX/UI-дизайнеры, которые анализируют потребности пользователей, сценарии их работы и проектируют грамотный интерфейс. Но иногда за эту часть работы отвечают те же программисты.
Если отнестись к проектированию слишком легкомысленно, программа может оказаться никому не нужной. Автор подтверждает это множеством историй о провале маленьких фирм и крупных корпораций. Купера стоит читать хотя бы затем, чтобы не оказаться виновником очередной такой неудачи.
Заметки на полях: книга не отнимет много времени, но зато сэкономит его всякий раз, когда нужно сделать работающую форму по краткому ТЗ — без помощи дизайнера и ещё вчера.
8. «Искусство программирования»
Дональд Кнут
У третьего (актуального) издания на английском языке семь томов. На русский переведено четыре из них: две части первого тома, второй и третий, а также том 4А.
Перевод с английского — И. В. Красиков, С. Г. Тригуб, Ю. Г. Гордиенко
Издательство «Вильямс», 2020 год, 720 + 160 + 832 + 960 с.
Оригинальное название: The Art of Computer Programming by Donald Knuth
Зачем читать: чтобы прокачаться в вычислительной математике и анализе алгоритмов.
Самый классический и самый фундаментальный труд в нашей подборке: многотомник от всемирно признанного гуру в области программирования, автора 19 монографий и более сотни статей.
Труд настолько фундаментален, что в первой книге больше математики, чем программирования: математическая индукция, степени и логарифмы, матрицы и определители — вот это всё. Попадаются задания вроде «докажите утверждение» или «найдите простую замену для сложной формулы» — Кнут считает, что, прежде чем пользоваться готовыми чужими решениями, нужно разобраться в азах.
Далее в этом и последующих томах автор учит анализировать и оценивать алгоритмы, даёт «золотые решения» классических задач (сортировка, поиск, обход деревьев) — и сравнивает, чем хорошо и плохо каждое. Всё это помогает выбирать оптимальные вычислительные стратегии в реальных проектах.
Заметки на полях: читать непросто, но нужно. Тем более что про классику алгоритмизации и вычислительную сложность до сих спрашивают на серьёзных собеседованиях. А первый том «Искусства» даже завершается цитатой Билла Гейтса:
«Если вы смогли дочитать это до конца, то определённо должны отправить мне своё резюме».
9. «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих»
Адитья Бхаргава
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 288 с.
Оригинальное название: Grokking Algorithms: An illustrated guide for programmers and other curious people by Aditya Y. Bhargava
Зачем читать: чтобы понять, что алгоритмы — это вовсе не скучно. А ещё — разобраться с оценкой их сложности, если вдруг после Кнута вы так и не поняли, как же её определить.
Эта книга тоже про алгоритмы, но читается как увлекательный рассказ. Простым языком автор пишет о графах, сортировке и поиске, жадных алгоритмах и динамическом программировании — причём со множеством примеров.
Это интересно! Глагол «грокнуть» (от англ. to grok) означает всецело разобраться, вникнуть в самую суть. А придумал его фантаст Роберт Хайнлайн для романа «Stranger in a strange land» («Чужак в чужой стране») в 1961 году.
Если вам интересно, как устроен рекомендательный алгоритм Netflix или как поисковый бот Google понимает, проиндексирована ли уже веб-страница, — прочитайте эту книгу.
Заметки на полях: осторожно! Читая книгу, можно всерьёз увлечься динамическим программированием, и тогда вам придётся искать работу там, где оно востребовано. Обычное прикладное ПО и многие сферы вроде финансовой останутся за бортом.
10. «Алгоритмы. Построение и анализ»
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
Перевод с английского — И. В. Красиков
Издательство «Вильямс», 2020 год, 1328 с.
Оригинальное название: Introduction to Algorithms by Thomas Cormen / Charles Leiserson / Ronald Rivest / Clifford Stein.
Зачем читать: книг об алгоритмах не бывает слишком много Алгоритмов и самих немало, и разобраться в них с первого раза (ладно, со второго и третьего тоже) бывает непросто.
Так что лучше черпать из всех источников: одна книга лучше объяснит сортировку, другая — жадные алгоритмы, третья — уложит в вашей голове сложные структуры данных
Книга Кормена и сотоварищей почти такая же всеобъемлющая, как труд Кнута — её можно применять как справочник по основным структурам данных и алгоритмам. Только здесь меньше математики и больше практических примеров. И «Алгоритмы» универсальнее, потому что знать конкретный язык программирования не обязательно — примеры написаны на псевдокоде.
С каждым новым изданием авторы обновляют и дополняют материал: например, в третьем появились главы об актуальных ныне многопоточных алгоритмах. Так что ищите самый свежий вариант.
11. «Мифический человеко-месяц»
Фредерик Брукс
Перевод с английского — А. В. Логунов
Издательство «Питер», 2020 год, 368 с.
Оригинальное название: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) by Frederick Brooks
Зачем читать: чтобы узнать о жизненном цикле программного проекта — понять, почему в IT так часто срываются сроки и как с этим бороться.
Эта книга будет полезна:
Но речь в книге не только об оценках. Это руководство попадает в подборки мастридов уже больше 40 лет. Оно учит решать проблемы, которыми проектные команды болеют до сих пор: нереалистичные оценки, сложности из-за разрастания команды и так далее.
Заметки на полях: помните, что книга написана давно (динозавры на обложке явно неспроста). И если вы всерьёз думаете о карьере менеджера проекта — почитайте о гибких методологиях. Тем более автор поменял мнение по некоторым вопросам — что и признаёт в девятнадцатой главе последнего издания.
12. «Рефакторинг. Улучшение проекта, существующего кода»
Мартин Фаулер
Перевод с английского — И. В. Красиков
Издательство «Вильямс», 2019 год, 448с.
Оригинальное название: Refactoring. Improving the Design of Existing Code by Martin Fowler
Зачем читать: чтобы разобраться, когда применять рефакторинг, а главное — как это делать и не развалить весь проект.
Рефакторинг — это, по сути, улучшение проекта после того, как код написан. Однако рабочее кредо многих программистов (и их начальников) звучит так: « Работает — не трогай». Они не хотят тратить деньги и время на изменение программы, если результат не виден снаружи. Так и появляются проекты с многочисленными костылями и заплатками в критичных местах, копится технический долг. Со временем всё это становится нежизнеспособным.
Фаулер пишет о типичных проблемах в коде и о том, как их исправить: шаг за шагом, начиная с написания тестов и заканчивая последовательным улучшением исходников.
Заметки на полях: это одна из тех книг, которые формируют сознание разработчика. Вердикт: читать и по возможности перечитывать.
13. «Эффективная работа с унаследованным кодом»
Майкл Физерс
Перевод с английского — И. В. Берштейн
Издательство «Вильямс», 2016 год, 400 с.
Оригинальное название: Working Effectively with Legacy Code by Michael C. Feathers
Зачем читать: чтобы исправить чужие ошибки и не наделать своих.
Прилагательное в заголовке было бы лучше оставить без перевода — legacy-код. Потому что именно в таком виде понятие знакомо любому программисту-профи. Знакомо до боли! В прямом смысле! Вызывает в памяти простыни запутанного кода, мучительные попытки понять, что там происходит, и злобное бессилие, ведь быстро внести правку или добавить фичу при таком бардаке — задачка со звёздочкой. В общем — о бессонных ночах и дёргающемся глазе
Если бы авторы «легаси» вовремя проводили рефакторинг по заветам Мартина Фаулера (о его книге мы рассказывали чуть выше), наследникам не пришлось бы заниматься генеральной уборкой на «городской свалке». Но в реальности программистам часто приходиться копаться в чужом коде и менять его. Вот Майкл Физерс и написал книгу о том, как это делать эффективно и с меньшими страданиями.
Заметки на полях: практикам можно читать книгу сразу со второй главы. Она написана в виде ответов на типичные вопросы, возникающие при реорганизации кода:
Кроме решений, которые авторы выработали в борьбе со сторонним кодом, в книге описывается, как лучше организовать рефакторинг и зачем вообще нужны все эти изменения.
14. «Идеальный программист. Как стать профессионалом разработки ПО»
Роберт Мартин
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2019 год, 224 с.
Оригинальное название: The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
Это вторая книга Роберта Мартина в нашей подборке. Многие мысли в ней выглядят банальными. Например, совет «если вы устали или не можете сосредоточиться — не пишите код» или глава о том, что за свои слова и решения нужно отвечать.
Некоторые советы кажутся спорными. Например, «в любой непонятной ситуации практикуйте парное программирование». Другие — вроде утверждения о том, что «каждый программист должен уметь работать с сетями Петри », — просто устарели.
Но эти мелочи не мешают книге служить толковым руководством для программиста-профессионала в ситуациях, когда ему нужно оценить трудоёмкость задачи или найти компромисс с менеджером — объяснить, что нельзя получить проект за день, если на реализацию его нужно две недели.
Заметки на полях: книга основана на историях из жизни дядюшки Боба — причём вполне реальных. Так что читатели узнают, как раньше писали и отлаживали программы: перфокарты, магнитные ленты — вот это вот всё.
15. «Думай как программист. Креативный подход к созданию кода. C++ версия»
Антон Спрол
Перевод с английского — Е. А. Матвеев
Издательство «Бомбора», 2018 год, 272 с.
Оригинальное название: Think Like a Programmer: An Introduction to Creative Problem Solving by V. Anton Spraul
Зачем читать: чтобы узнать о простых подходах к решению сложных задач.
Программировать — это не только выучить пару десятков ключевых слов и научиться их правильно сочетать. Разработчикам нужно уметь мыслить нестандартно, находить решения сложных творческих задач — и только потом воплощать их в коде.
В этой книге множество головоломок с решениями: есть классические вроде переправы волка, козы и капусты через реку, а есть целые группы задач — например, легко решаемых рекурсивно или на типичную обработку массивов.
Спрол учит думать как программист, использовать свои сильные и слабые стороны, находить аналогии и обязательно составлять план — прежде, чем начинать что-то делать.
Заметки на полях: автор много лет преподаёт программирование и, видимо, делает это хорошо. Книга настолько доступно написана, что подойдёт даже ребёнку, который недавно начал изучать программирование.
16. «Карьера программиста»
Гейл Лакман Макдауэлл
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 688 с.
Оригинальное название: Cracking the Coding Interview by Gayle Laakmann McDowell
Зачем читать: чтобы подготовиться к собеседованию на позицию разработчика, а заодно систематизировать знания, увидеть и устранить возможные пробелы.
Это тот самый «+1» и, возможно, самая практичная книга в нашей подборке. В ней собраны 189 вопросов из тех, что задавали кандидатам на собеседованиях в Google, Microsoft, Amazon и других крупных IT-компаниях. Конечно, с ответами.
Разбираются и соискательские темы:
Гейл разбирает типичные ошибки и стратегии подготовки к собеседованию и даже рассказывает о закулисье некоторых компаний — например, сколько и каких этапов должен пройти кандидат.
Заметки на полях: эта книга не поможет разве что при полном отсутствии базовых знаний. В остальных случаях — причешет и принарядит для потенциального работодателя как ваше резюме, так и ваши ответы.
Минутка рефлексии
Всё это лучшие и, несомненно, полезные книги. Но если бы я вдруг вернулась в прошлое, чтобы посоветовать себе самые-самые — это были бы:
Эти книги пригодились мне больше всего. Они полны дельных советов, написаны доступным языком и помогают улучшать качество кода на любом языке программирования.
Если пока не читали ничего из нашей подборки — начните с этой пятёрки. И до встречи в комментариях к коду
Так многие программисты называют Роберта Мартина (да и он себя).
Сеть Петри — вид графа для моделирования динамических дискретных систем. Была предложена немецким математиком и информатиком Карлом Петри. Подробнее в «Википедии».
Помните, многие программисты так называют Роберта Мартина? А он и рад и отзывается