Книги — отличный источник знаний, это верно. Но как определить, где хорошая книга, а где не очень? Лучше всего воспользоваться рекомендательными сервисами либо же посмотреть обзоры на разные книги в сети. Именно поэтому сегодня публикуем подборку хороших изданий, которые в основном пригодятся начинающим разработчикам. Но, вероятно, они будут полезны и более опытным коллегам. Под катом — самое интересное! Автор: Роберт Мартин Полезная для многих разработчиков книга, к которой относятся очень по-разному. Кто-то считает её идеальной, а кто-то утверждает, что её не стоит рекомендовать никому. Собственное мнение можно, вероятно, сформировать уже после её прочтения. Как бы там ни было, основная её идея в том, что код должен быть чистым, а это значит, простым для понимания разработчиком и коллегами, понятным и поддающимся изменениям. Что касается других тем, которые затрагиваются в книге, то это ещё и: организация кода обработка ошибок паттерны проектирования и тестирование Достоинство книги в том, что она написана хорошим языком, в ней затрагиваются действительно важные темы. Если вы её ещё не читали, рекомендуем ознакомиться, лишней в библиотеке она точно не будет. Автор: Стив Макконнелл Первое издание книги многие рекомендуют в качестве достойной альтернативы предыдущему изданию. Те, кто прочитал и первую, и вторую книги из подборки, считают, что вторая всё же полезнее. Но и здесь мнения разделяются. Первое издание «Мастер-класса» вышло в 2008 году. Но не все знают, что есть и второе, которое в РФ появилось в 2017. Книга обновлена с учётом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Изложенные в книге методики и стратегии помогут разработчику: проектировать с минимальной сложностью и максимальной продуктивностью извлекать выгоду из групповой разработки применять методики защитного программирования, позволяющие избежать ошибок совершенствовать свой код применять методики конструирования, наиболее подходящие для вашего проекта быстро и эффективно производить отладку своевременно и быстро обнаруживать критические проблемы проекта, обеспечивать качество на всех его стадиях Авторы: Эндрю Хант, Дэвид Томас Книга, которая ценится многими разработчиками. Её достоинство в том, что она целиком и полностью посвящена лучшим практикам по разработке ПО. Главная идея авторов — помочь читателю стать программистом-прагматиком, который реально оценивает ситуацию. Также такой профессионал решает проблемы клиентов с максимальной для них пользой. В книге — большое количество советов для разработчиков с различным опытом, включая как создание чистого эффективного кода, так и по жизненному циклу продукта. Также в книге рассказывается о важности налаживания взаимоотношений с коллегами и клиентами. Это далеко не новая книга, некоторые технические моменты, упоминаемые в ней, устарели. Но вот базовые подходы к разработке, тестированию, взаимодействию внутри команды и с аудиторией продолжают оставаться актуальными и сейчас. Автор: Адитья Бхаргава Хорошая книга, которая помогает читателю войти в мир алгоритмов и структур данных. Она предназначена как раз для тех начинающих разработчиков, кто либо вообще не знаком с алгоритмами, либо знаком, но слабо. В книге объясняются нюансы алгоритмов и структур данных, включая алгоритмы сортировок, поиска, алгоритмы работы с графами и т. п. Есть также немало иллюстраций и практических примеров, благодаря чему материал усваивается быстро. Для того чтобы получить и практический опыт, нужно выполнять упражнения, большинство которых хорошо продуманы. Несмотря на то, что тема книги достаточно сложная, она написана понятным и простым языком. Так что у читателя не должно возникнуть сложностей при прочтении этого издания. К слову, в этой книге могут найти что-то полезное для себя и опытные разработчики. Судя по отзывам, она помогла многим специалистам.  Автор: Роберт Мартин Ещё одна книга Р. Мартина, которую можно назвать продолжением «Чистого кода». Автор в этом издании рассказывает о роли архитектуры и проектирования в процессе разработки ПО. Кроме того, он также раскрывает нюансы паттернов проектирования архитектуры для решения общих проблем, которые возникают при разработке ПО. Также есть ответы на часто возникающие у новичков вопросы об архитектуре и дизайне ПО, подробно рассказывается о принципах SOLID. Есть как теория, так и примеры, которые показываются по ходу изложения, помогая лучше понимать прочитанное. Книга рекомендуется начинающим разработчикам, хотя она может пригодиться и их более опытным коллегам. Крайне полезной она будет для системных аналитиков, архитекторов и вообще разработчиков, которые хотят повысить свой профессиональный уровень. Достоинство книги в том, что изложение простое, оно не перегружено специнформацией, нет и сложных примеров, доступных лишь избранным. К слову, книгу советуют не только разработчики для разработчиков, она может быть полезна всем, кто взаимодействует с группами разработки, для понимания происходящих процессов. Автор: Майкл Физерс Эта книга посвящена принципам работы с legacy-кодом, которого особенно много в крупных компаниях. С ним чаще всего возникают проблемы, и чем больше времени проходит, тем серьёзнее эти проблемы становятся. В книге рассказывается о том, как относительно быстро и эффективно разобраться с legacy и поменять его. В частности, автор рассказывает о важности автотестов, которые в этом случае применяются для того, чтобы убедиться в работоспособности уже изменённого кода. Солидная часть книги посвящена как раз советам по написанию тестов для legacy-кода. В книге, кроме прочих, рассматриваются такие вопросы: представление о механизмах внесения изменений в программное обеспечение, включая ввод новых свойств, устранение программных ошибок, улучшение структуры кода, оптимизацию производительности перенос унаследованного кода в средства тестирования написание тестов, препятствующих внесению новых ошибок в код применение методов, подходящих для любого языка или платформы, с примерами кода на Java, C++, C и C# точное выявление мест в коде, где требуется внести изменения работа с унаследованным кодом, который не является объектно ориентированным обращение с приложениями, у которых, на первый взгляд, нет вообще никакой структуры Авторы: Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс В книге сложные вещи рассказываются относительно простым языком. В частности, в ней говорится о наиболее важных паттернах проектирования. О том, когда и при каких условиях ими лучше воспользоваться, а также на каких принципах ООП они построены, где и как их нужно применять. Материал подаётся в виде игровых задач. Выполняя их, читатель постепенно приходит к пониманию, как применять основные паттерны проектирования и достраивать архитектуру грамотно. На этом пока всё. Но если у вас есть книга, которую вы можете порекомендовать разработчикам, расскажите о ней в комментариях, пожалуйста. Всем нам будет крайне интересно узнать что-то новое.