Книги, которые в 2019 году должен прочесть каждый разработчик-джуниор

0
10738
views

Перевод статьи «Books that Junior Developers should read in 2019».

Книги для джуниоров

Будь вы начинающим разработчиком или достаточно опытным программистом, рано или поздно вы начинаете понимать, что количество лет стажа не определяет объема знаний и навыков в программировании (ага, «скажите это рекрутерам»).

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

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

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

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

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

1. Clean Code («Чистый код», автор – Роберт Сесил Мартин (Дядя Боб))

Чистый код, автор - Дядя Боб

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

Помните, когда вам в последний раз приходилось видеть подобный код?

function calculateIt (a, b) {
if (a.delta < b.element.x) {
var x = b.element.x;
return x - b.delta.x
} else {
var y = b.next.y;
var h = b.element.y * 2;
return y - h
}
}

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

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

«Чистый код» Дяди Боба учит нас определять, как выглядит чистый код, отличать его от плохого кода и превращать плохой код в хороший. Большинству людей может показаться, что подобная задача довольно тривиальна. Но если вы последуете советам этой книги и переведете некоторые принципы проектирования ПО в разряд собственных привычек, это поможет вам писать куда более профессиональный и масштабируемый код.

Создание приложения, в принципе, не слишком отличается от постройки дома. Нужно уделять внимание деталям, иначе их придется исправлять позже, причем это уже обойдется дороже.

2. The Clean Coder («Идеальный программист. Как стать профессионалом разработки ПО», автор – Роберт С. Мартин (Дядя Боб))

Идеальный программист

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

В книге «Идеальный программист» полно практических советов по оценке необходимого количества времени и ресурсов, рефакторингу, тестированию, разрешению конфликтов, составлению расписаний, предотвращению профессионального выгорания и многим другим темам. Это надежные советы от человека, который десятки лет всем этим занимался.

Одна из лучших вещей, которым учит эта книга, – знание того, когда нужно сказать «нет», и умение это сделать.

Это книга о профессионализме.

3. Refactoring («Рефакторинг. Улучшение существующего кода», автор – Мартин Фаулер)

Рефакторинг

Мартин Фаулер это один из моих любимых авторов. И первая причина для такой любви – его веселость. Его стиль написания книг очень выделяет его из общего ряда. Другая причина – Фаулер невероятно хорош в объяснении сложных тем. Он делает это очень простым языком, не утомляя читателя.

Создатель Ruby on Rails однажды сказал о книге «Рефакторинг», что ее «стоит прочитать, прежде чем писать следующую строчку кода».

В своей книге Фаулер проводит вас по пути рефакторинга простого приложения, знакомя со многими техниками, которые он сам собрал и каталогизировал за годы работы.

Фаулер показывает, как переключаться с написания кода на рефакторинг, как часто нужно делать коммиты и когда писать тесты. Очень советую вам почитать эту книгу. Последняя версия книги была обновлена: в нее были включены примеры на JavaScript, что лично для меня было дополнительным «плюсом», поскольку это мой любимый язык.

4. Design Patterns: Elements of Reusable Object-Oriented Software («Приёмы объектно-ориентированного проектирования. Паттерны проектирования», авторы – Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес)

Приёмы объектно-ориентированного проектирования. Паттерны проектирования

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

Хорошее знание шаблонов проектирования также позволяет вам эффективно коммуницировать с другими разработчиками относительно ваших решений.

Да, книга старая. Но она по-прежнему является одной из лучших по данной теме. Если хотите почитать что-то поновее и «подружелюбнее», я также могу посоветовать «Head First Design Patterns: A Brain-Friendly Guide» («Паттерны проектирования» из серии Head First) Эрика Фримена.

5. Domain-Driven Design: Tackling Complexity in the Heart of Software («Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем», автор – Эрик Эванс)

Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем

Чтобы крупные кодовые базы имели возможность масштабирования, нам нужно логически разбивать код на отдельные части. Идея в том, чтобы делить ваш код таким образом, чтобы над разными частями системы могли независимо работать разные команды.

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

Эрик Эванс вводит понятие «общего языка» ( “Ubiquitous Language”), под которым подразумевается создание общего, всеобъемлющего языка, понятного разработчикам, экспертам отрасли и любым пользователям в этой отрасли. Использование общего языка гарантирует, что все самые важные концепции будут правильно поняты и смоделированы в программе.

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

6. Soft Skills: The Software Developer’s Life Manual («Путь программиста», автор – Джон Сонмез)

Путь программиста

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

Книга «Путь программиста» посвящена вещам, не связанным напрямую с написанием кода, но имеющим большое значение. Сюда относятся продуктивность, карьерные цели, личные финансы. Сонмез также затрагивает тему инвестиций, рассказывает, как он вышел на пенсию в 33 года, дает советы относительно здорового образа жизни и поддержания хороших отношений с людьми. То есть, говорит о вещах, редко упоминаемых в сообществе разработчиков.

Главы книги можно читать по отдельности, просто выбирая наиболее актуальную для вас на этом этапе.

7. Clean Architecture («Чистая архитектура. Искусство разработки программного обеспечения», автор – Роберт С. Мартин (Дядя Боб))

Чистая архитектура, автор - Роберт С. Мартин

Что, опять?! Да, Дядя Боб пишет хорошие книги.

В учебных заведениях больше внимания уделяется алгоритмам и меньше – принципам проектирования программ. Я думаю, это скорее минус, ведь в реальности вы не так уж часто встречаетесь с алгоритмическими задачами. Гораздо чаще перед вам встает необходимость структурировать свой код таким образом, чтобы он был модульным, гибким, читаемым и позволял вам быстро добавлять новый функционал по мере изменения требований.

Книга «Clean Architecture» посвящена основным принципам проектирования и шаблонам, которые вы сможете применять для решения указанных выше проблем.

Лучшие идеи из этой книги – стоимость зависимостей, стабильный и нестабильный код, а также принципы SOLID. Все это помогает писать более понятный, гибкий и поддерживаемый код.

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

Эта книга хорошо сочетается с «Domain-Driven Design», поскольку предметно-ориентированное проектирование становится возможным благодаря использованию «Многоуровневой архитектуры» или, как называет ее Дядя Боб, «Чистой архитектуры». Отличная книга для каждого, кто хочет усовершенствовать свои приемы работы и узнать, как эффективно проектировать систему на высоком уровне.

8. The Effective Engineer («Справочник эффективного инженера», автор – Эдмонд Лау)

Справочник эффективного инженера

Время это наш самый ценный актив в жизни, поэтому мы должны распоряжаться им как можно эффективнее. Но увязнуть в бесконечном исправлении багов и напрасной трате усилий бывает очень легко. Книга «The Effective Engineer» посвящена умению делать больше за меньшее количество времени и устранению повторяющихся операций.

9. The Pragmatic Programmer («Программист-прагматик. Путь от подмастерья к мастеру», авторы – Эндрю Хант, Дэвид Томас)

Программист-прагматик

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

Плодом подобных упражнений в самоанализе стала книга «Программист-прагматик». В ней изложены идеи, которых разработчикам следует придерживаться в своей карьере. Например, принцип «делать единожды или автоматизировать».

В этой книге вы найдете простые, но подробные советы, которыми стоит вооружиться, прежде чем писать следующую строчку кода или начинать новый проект.

Заключение

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

Это лишь несколько из лучших книг, которыми мы располагаем в 2019 году! Ни одну из них нельзя назвать новой, но это связано с тем, что лучшие подходы и идеи в программировании складываются и поддерживаются годами. Будучи профессором, я однажды сказал: «В этой индустрии вы можете заработать много денег, и все что нужно – читать чертовы мануалы».

А вы читали какие-то из этих книг? Что о них думаете? Возможно, список стоит дополнить? Поделитесь своими мыслями в комментариях!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here