Быть инженером-программистом в наши дни чрезвычайно сложно — технологии развиваются быстрее, чем когда-либо, и иногда бывает сложно не отставать! Ежедневно появляются новые технологические возможности, а количество обучающих платформ постоянно растет.

Лично я считаю, что новые обучающие платформы, такие как видеокурсы, прекрасно подходят для быстрого ознакомления с новыми темами, но там реальное сочетание качества. Книги, как правило, со временем становятся лучше, а техническое содержание углубляется. Если вы хотите поднять свои навыки на новый уровень, книги часто являются подходящим способом.

Вот несколько книг, которые я считаю наиболее полезными в моем путешествии. Этот список больше предназначен для старших инженеров, однако все эти книги по-прежнему великолепны для любых разработчиков и архитекторов. Есть смесь технических, нетехнических, управленческих и архитектурных книг.

10. Основы архитектуры программного обеспечения: инженерный подход

Это лучшая книга по общей архитектуре, которую я когда-либо встречал. Он не слишком углубляется в темы, однако дает отличное представление о большинстве типов шаблонов и процессов современной архитектуры, связанных с архитектурой решений.

9. Программная инженерия в Google: уроки, извлеченные из программирования с течением времени

Это отличная книга, чтобы почерпнуть некоторые идеи для вывода вашей инженерной команды на новый уровень. К некоторым главам нужно относиться с долей скептицизма, поскольку масштабы Google ошеломляют, однако я был удивлен тем, насколько многие из их процессов разработки применимы ко всем командам. Особенно интересными были разделы о том, что мотивирует инженеров и как улучшить масштабирование за счет согласованности и стандартов.

8. Путь менеджера: руководство для технических лидеров, стремящихся к росту и изменениям

По мере того, как мы растем как инженеры, обычно ожидается, что мы начнем наставлять и управлять. Для этого требуются другие навыки, которым нас, возможно, никогда не учили на всех наших технических путях. Эта книга предоставляет некоторые полезные инструменты и методы для управления командой и специально предназначена для инженеров-программистов. Книга работает от младшего инженера до вице-президента, начальника отдела разработки и технического директора.

7. Проектирование приложений, интенсивно использующих данные: большие идеи, лежащие в основе надежных, масштабируемых и ремонтопригодных систем

Эта книга просто чудовище, но она охватывает абсолютно все, что вам нужно знать, чтобы принимать обоснованные решения о том, какие базы данных лучше всего подходят для определенных задач. В книгах рассматриваются различные типы баз данных, первичные/вторичные методы кластеризации, шаблоны блокировки, OLTP и OLAP и многое другое.

6. Чистый Agile: возвращение к основам

Это первая книга дяди Боба, попавшая в список, он, конечно же, был одним из основателей Agile Manifesto. Пусть вас не смущает название этой статьи, а также предоставление прагматичного обзора Agile, она действительно раскрывает рекомендуемое поведение высокопроизводительных команд разработчиков программного обеспечения. Идеи о том, как лучше управлять автоматизированным тестированием, чтобы улучшить работу вашей команды, были особенно полезными.

5. Лифт архитектора программного обеспечения: новое определение роли архитектора в цифровом предприятии

Это блестящая книга для любого начинающего или опытного архитектора! Он затрагивает множество архитектурных шаблонов, но, что более важно, он предоставляет полезные инструменты, методы и процессы для того, чтобы быть и учиться быть архитектором программного обеспечения.

4. Внедрение доменно-ориентированного дизайна

Лично я большой поклонник Domain-Driven Design, и я думаю, что некоторые из концепций чрезвычайно полезны, даже если вы не переходите на полный DDD. Лучшая инкапсуляция и использование Ubiquitous Language для вашего кода делают ваши проекты более удобными в сопровождении. Я бы порекомендовал сначала прочитать «Синюю» книгу Эрика Эванса, если вы можете, однако в целом я думаю, что «Красную» книгу Вона Вернона намного легче читать, и она ближе к современным методам программирования.

3. Почему мы спим: раскрытие силы сна и сновидений

Эта книга может вас немного удивить, в ней ничего не говорится о программном обеспечении, но это одна из лучших книг, которые я когда-либо читал! Сегодня в программной инженерии люди, которые сжигают нефть в полночь, чтобы стать героями, или просыпаются каждый день очень рано, чтобы дополнительно заняться программированием/обучением, имеют тенденцию быть прославленными — и это образ мышления, которому я лично способствовал в прошлом… Общество начали принимать, что 6-7 часов сна абсолютно нормально для нашего тела и разума, но это просто неправда!

Трудно объяснить, какое влияние эта книга оказала на мое отношение ко сну, и я настоятельно рекомендую людям прочитать ее. Эта книга — не постоянный шквал предупреждений о том, что произойдет, если мы не выспимся; это объясняет, как на самом деле работают сон и сновидения и почему они нам нужны, в действительно увлекательной форме.

2. Топологии команд: организация бизнес- и технологических групп для обеспечения быстрого потока

Для тех, кто хочет создать высокоэффективную и масштабируемую команду, эта книга для вас. Книга в основном посвящена «закону Конвея»:

Любая организация, проектирующая систему, создаст проект, структура которого является копией коммуникационной структуры организации.

В книге представлены методы адаптации для работы с законом Конвея, а не против него, с использованием таких концепций, как «архитектура Team First» и платформенные команды.

1. Чистый код: Справочник Agile-программиста

Независимо от того, какой у вас опыт программиста, в этой книге есть что-то для вас! Эта книга оказала большее влияние на код, который я пишу и рецензирую, чем любая другая книга.

Есть много похожих идей и тем, освещенных в других замечательных книгах («Прагматический программист» и «Рефакторинг» Мартина Фаулера и Кента Бека), однако лично я считаю, что эта — лучшая.

Если есть какие-то другие книги, которые я пропустил или которые, по вашему мнению, должны быть в списке, я буду рад услышать от вас!