топ 10 книг для начинающих программистов
Топ-10 книг для разработчика
Совершенствоваться в сфере разработки — это не только писать хороший код, но и читать о том, как его писать.
Привет, хабр! Продолжаю делиться полезными подборками. Совсем недавно я опубликовал 2 поста с перечнем Github репозиториев: Часть1 и Часть2. На этот раз предлагаю вашему вниманию подборку полезных книг для разработчиков. Кому интересно — добро пожаловать под кат.
Помимо всех благ современного мира — подкастов, видео, блогов и т. д., чтение хорошей книги — это то, что все еще пользуется спросом. Я прочитал много хороших книг, посвященных технологиям и разработке ПО, и до сих пор читаю, чтобы быть в курсе новых шаблонов и лучших практик.
Найти отличные книги для разработки программного обеспечения — непростая задача, так как экосистема меняется настолько быстро, что многие вещи устаревают в короткие сроки. Особенно это касается тех книг, в которых описана определенная версия языка программирования.
Тем не менее, существуют “вечные” книги: они посвящены мета-темам, шаблонам проектирования или общим представлениям.
Следующая подборка состоит из самых популярных и самых читаемых книг. Книги, которые все еще актуальны сегодня и которые опытные разработчики часто рекомендуют начинающим специалистам. Я знаю, что время драгоценно, особенно для разработчиков. Но если вам удастся прочитать некоторые из этих книг, это определенно поможет вам и вашей карьере. Обратите внимание, что книги из списка не расположены по степени значимости — они все одинаково рекомендованы к прочтению.
1. Cracking the Coding Interview или Карьера программиста
Настоятельно рекомендую эту книгу всем тем, кто хочет основательно подготовиться к интервью. Автор, Г. Лакман Макдауэлл, опытная инженер-программист, была и интервьюером, и кандидатом. Она научит вас находить скрытые детали в вопросах, разбивать проблемы на небольшие куски, а также поможет улучшить навык обучения.
Кроме того, автор предоставляет нам 189 реальных вопросов на интервью и их реальных решений, чтобы вы могли хорошо подготовиться к следующему интервью.
2. Code Complete или Совершенный код
Эта книга Стива Макконнелл — одна из тех книг, которую каждый программист, скорее всего, листал хотя бы раз в жизни.
Это всесторонний анализ проектирования программного обеспечения, хорошо написанный и востребованный в отрасли. В книге освещаются такие темы как дизайн, написание кода, отладка и тестирование.
Эта книга, вероятно, станет самым окупаемым вложением для разработчиков с профессиональным опытом от одного до трех лет. Но я также рекомендую издание и новичкам, так как оно помогает на старте разработки ПО.
Основной вывод: разработчики должны управлять сложностью и писать код, который легко поддерживать и читать как самому себе, так и другим.
3. Clean Code или Чистый код
Книга Роберта Мартина (или дяди Боба) “Чистый код” — одна из самых популярных книг по программированию. Она была написана для обучения инженеров-программистов принципам написания чистого программного кода. Книга содержит множество примеров, показывающих, как выполнять рефакторинг кода с целью сделать его более читабельным и поддерживаемым. Но учитывайте то, что издание ориентировано именно на Java. Хотя некоторые из шаблонов и техник распространяются на общее программирование и на другие языки, основной аудиторией книги являются Java-разработчики.
Следует также отметить, что книга вышла в 2008 году. Некоторая информация, например, форматирование кода, сегодня менее актуальна из-за доступных инструментов и IDE сред. Но все же, это отличная книга.
4. Refactoring или Улучшение проекта существующего кода
Второе издание книги Мартина Фаулера объясняет, что такое рефакторинг на самом деле, впрочем, как и первое издание, выпущенное 20 лет назад. После прочтения книги вы найдете ответы на следующие вопросы:
5. Head First Design Patterns или Паттерны проектирования
Эта книга, у которой сразу 4 автора, учит вас шаблонам проектирования и лучшим практикам, используемым другими разработчиками для создания функционального, повторно используемого, и гибкого ПО. В издании много наглядных представлений, которые помогут вам легче освоить новые концепции.
Если вы хотите узнать о таких вещах, как фабрики, синглтоны, внедрение зависимостей и т.д., эта книга — отличный выбор. Примеры написаны на Java, поэтому было бы неплохо знать этот, либо любой другой объектно-ориентированный язык.
6. Patterns of Enterprise Application Architecture или Шаблоны корпоративных приложений
Еще одна отличная книга Мартина Фаулера, посвященная разработке корпоративных приложений. После краткого руководства Мартин предлагает вам более 40 шаблонов в качестве решения распространенных проблем при разработке корпоративных приложений. В книге вы найдете большое количество UML визуализаций и примеров кода, написанных на Java или C#.
Прочитав книгу, вы сможете разделять корпоративные приложения на уровни, знать основные подходы к организации бизнес-логики, использовать MVC шаблоны для организации веб-приложений и управлять параллельной обработкой нескольких транзакций.
Однако, книга довольно старая, поэтому современные концепции, например REST, cloud или JSON, не упоминаются. Это хороший материал для изучения, но все же будьте к нему критичны.
7. Working Effectively with Legacy Code или Эффективная работа с унаследованным кодом
В книге автор предлагает стратегии для работы с большими, непокрытыми тестами базами legacy-кода. Вы можете подумать: “На дворе 2020 год. Legacy-код больше не проблема, ведь у нас есть чистый, поддерживаемый код и микросервисы.” Позвольте мне заверить вас, что это ошибочное представление. Legacy-код по-прежнему является одной из самых сложных проблем для многих компаний.
Прочитав эту книгу, вы сможете понять общие механизмы изменения программного обеспечения, например: добавление функций, исправление багов, оптимизация производительности и улучшение проектирования. Кроме того, вы узнаете, как подготовить унаследованный код к тестированию и определить, где его необходимо изменить.
В книге приведены примеры, написанные на Java, C ++, C и C #, а также в ней есть советы по работе с legacy-кодом, который не относится к объектно-ориентированному.
8. The Clean Coder или Идеальный программист
Еще одна книга дядюшки Боба, которая учит методам, практикам и инструментам настоящего мастерства в области программного обеспечения. Она содержит практические советы по оценке проектов, написанию кода, рефакторингу и тестированию.
Прочитав эту книгу, вы научитесь справляться с конфликтами, плотным графиком и нерациональностью менеджеров; научитесь бороться с постоянным давлением и избегать выгорания; узнаете, как управлять своим временем, как писать качественный код и способствовать созданию среды, в которой разработчики и команды могут успешно развиваться.
Эта книга довольно популярна, но я думаю, что не все в ней — чистое золото. Она содержит много историй из жизни и гипотетических разговоров, которые в большинстве случаев приводят к выводу, что разработчик в конечном счете несет ответственность за то, что он делает. Иногда такие отрывки заходят слишком далеко: в одном из таких отрывков разработчику, чей код породил ошибку, предлагается компенсировать компании финансовые потери.
Поэтому я советую прочесть эту книгу внимательно и с долей критики.
9. Introduction to Algorithms или Алгоритмы: построение и анализ
Это издание — не что иное, как обязательное руководство к алгоритмам различного типа. Книга очень широкого профиля и подойдет как начинающим, так и профессионалам. Материал изложен четко и раскрывает саму суть вопроса. Но в то же время, книга не совсем простая.
Она охватывает такие темы, как структуры данных, быстрые алгоритмы, полиномиальные алгоритмы для труднорешаемых задач, теория графов, вычислительная геометрия и многое другое. Хотя книга и содержит несколько примеров псевдокода, на мой взгляд, она очень “теоретическая”.
10. The Pragmatic Programmer или Программист-прагматик
Это одна из самых серьезных книг, которые я когда-либо читал. Издание полно как технических, так и профессиональных практических советов, которые помогли мне во многих проектах, а также помогли мне стать лучше как разработчику.
Книга очень актуальна даже в 2020 году, особенно последнее издание. Здесь автор анализирует, что значит быть современным разработчиком, исследуются различные темы: от личной ответственности и карьерного роста до архитектурных приемов.
Прочитав книгу, вы поймете, что такое непрерывное обучение и насколько оно важно; изучите, как писать гибкий, адаптируемый и динамический код, как решать проблемы конкурентности, как стоять на страже безопасности, как тестировать “безжалостно и эффективно”, и многое другое.
Если бы я должен был выбрать только одну книгу, которую вам посоветовать, я бы выбрал именно эту!
Заключение
Это был список одних из самых популярных книг для разработчиков. Лучшая из списка, на мой взгляд, — “Программист-прагматик” Э.Ханта и Д.Томаса. Книги Роберта С. Мартина востребованы и нравятся многим разработчикам, но я бы посоветовал быть критичным при их чтении, так как я не согласен с дядей Бобом во многих вопросах.
Наверняка, многие из этих книг вы уже читали или хотя бы держали их в руках, или хотя бы видели на просторах интернета. Как выразился автор статьи, это “вечные” книги, которые посвящены основам. Если у вас есть чем дополнить список — делитесь в комментах, думаю, всем будет полезно.
15 лучших книг по программированию с нуля
Где научиться программированию, если не хочется тратить 4 года на скучные лекции? Запишитесь на курсы программирования, там вас быстро обучат азам. После этого совершенствуйтесь хоть всю жизнь, в чём помогут книги из подборки 😉
Роберт Мартин. «Чистый код»
Если ваш код работает, это ещё не значит, что он хороший. Думаете, что название переменных — это мелочь, которая ни на что не влияет? Как же вы ошибаетесь!
Стив Макконнелл. «Совершенный код»
Это именно та книга, которую раз в жизни должен прочитать каждый программист. Да, возможно некоторые моменты здесь устарели, но книга рассказывает о незыблемых истинах. Здесь каждый программист найдет что-то для себя.
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн. «Алгоритмы: построение и анализ»
Книга, которая позволит начинающим лучше понять компьютерные алгоритмы. Вы узнаете о сотнях работающих алгоритмов, с пояснениями принципов их работы без излишней математической строгости.
Хант Эндрю, Томас Дэвид. «Программист-прагматик. Путь от подмастерья к мастеру»
Почему-то сегодня большинство книг по программированию сконцентрировалось исключительно на каких-то технических составляющих, забывая о внутренней составляющей. Поверьте, она не менее важна!
Дональд Кнут. «Искусство программирования»
Монография, которая успела стать классикой в кругу программистов. Изучив все 4 тома серии, вы ознакомитесь со всем, что нужно для освоения профессии.
Юрий Родичев. «Нормативная база и стандарты в области информационной безопасности»
Вы думаете, что программирование — это только код? Как бы не так! Если вы хотите стать настоящим профи, то без изучения стандартов безопасности и чтения профильной литературы не обойтись. Маст-рид для программиста в 2019!
Андрей Бирюков. «Информационная безопасность: защита и нападение»
Книга, которую должен прочесть каждый айтишник и все, кто задействован в вопросах защиты корпоративных ресурсов. Лучшая защита — это нападение. А значит вам нужно «думать, как преступник» и понимать, какими методами можно взломать вашу «неприступную систему».
Том ДеМарко, Тимоти Листер. «Вальсируя с Медведями»
Авторы рассказывают, как идентифицировать риски, управлять ими и извлекать выгоду из рисков. Вы должны рисковать в каждом проекте по разработке, иначе стагнируете.
Избегать рисков — дело проигрышное.
Игорь Савчук. «Отъявленный программист. Лайфхакинг из первых рук»
Это не классический учебник по программированию — здесь собраны мнения звезд IT-индустрии, где каждый поделился личными методами достижения успеха. И пусть эти люди совершенно разные, но их объединяет одно — любовь к программированию!
Чарльз Петцольд. «Код. Тайный язык информатики»
Если вам интересна история информатики — обязательно ознакомьтесь с этой книгой. Чарльз Петцольд создал настоящую азбуку компьютерных технологий, где раскрыта вся история IT: с самых первых попыток программирования до портативных технологий сегодняшнего дня.
Эрик Фримен, Элизабет Робсон. «Паттерны проектирования»
Решили стать Java-программистом? Без понимания паттернов проектирования вы застрянете на повторении упражнений из учебника. Обязательная книга для Java программиста в 2019 году.
Марейн Хавербек. «Выразительный JavaScript»
Ещё одна книга по обучению Java-программированию. Здесь вы найдете основную информацию про выбранный язык программирования, при этом автор не будет перегружать лишней информацией. Идеальная книга для старта.
Брайан Холл. «Beej’s Guide to C Programming»
Этот гайд предназначен для тех, кто только начинает изучать программирование сокетов и ищет точку опоры. Брайан Холл разложил всю информацию по полочкам настолько подробно, что её поймет начинающий программист.
Бьярне Страуструп. «Программирование: принципы и практика использования C++»
Интересуетесь языком C++, но нет опыта программирования? Здесь вы узнаете всю информацию о C++, так как автор книги и придумал этот язык программирования!
Мажед Маржи. «Scratch для детей»
Это один из самых понятных и интересных языков программирования, которому можно научить даже ребенка. Забудьте про зазубривание форм и алгоритмов: программировать так же просто, как сделать башню из конструктора!
ТОП-10 книг по программированию для начинающих
Решили стать программистом и войти в IT? Новички обычно теряются перед большим количеством материалов и не знают, с чего начать. В этой статье были собраны лучшие книги по программированию для начинающих с нуля.
Чистый код: создание, анализ и рефакторинг. Роберт Мартин
Эта книга не просто о том, как научиться кодить, а о том, как делать это «чисто» и профессионально. На примере реальных проектов будет рассмотрен код с различных точек зрения. Книга поможет сформировать понимание того, как выглядит хороший исходный текст программы, а как плохой.
В первой части рассказывается о приемах и принципах написания «чистого» кода, во второй содержатся практические сценарии по нарастающей сложности. В третьей — описание пути человеческого мышления в процессе чтения или написания кода.
Фундаментальная книга, которую должен прочитать каждый разработчик на старте карьеры в IT.
Идеальный программист. Роберт Мартин
В этой книге Роберт Мартин постарался объяснить, что значит быть профессиональным программистом. Основываясь на личном опыте, он рассказал о методах, инструментах и практике разработки «идеального» программного обеспечения.
Автор максимально насытил книгу советами касательно разных аспектов программирования: от оценки проекта до тестирования ПО.
Легкий способ выучить Java. Брайсон Пэйн
Java считается одним из самых востребованных языков программирования в мире, но при этом он достаточно сложный для изучения. Практикующий программист Брайсон Пэйн разработал собственный метод изучения языка Java.
После прочтения новички ознакомятся со средой разработки, научатся находить и исправлять ошибки в коде, создавать простые игры. Хороший самоучитель для начинающего айтишника.
Код: тайный язык информатики. Чарльз Петцольд
Автор в развлекательной и простой форме объясняет, как устроен компьютер. Чарльз Петцольд устроил экскурс в историю техники, дойдя до самых первых моделей. В процессе чтения становится понятно: чем дальше в прошлое, тем проще технологии. Поэтому некоторые особенности работы ПК гораздо проще объяснить на примере старых образцов.
Чарльз основательно объясняет принцип работы компьютера. Он рассказывает о микросхемах, работе процессора, ОС и о многом другом. По истине культовая книга.
Кодеры за работой. Питер Сейбел
Программисты — не публичные личности, поэтому самые интересные аспекты их работы остаются за кадром. Питер Сейбел взял интервью у 15 высококлассных разработчиков, среди которых: Джо Армстронг, Кен Томпсон, Дуглас Крокфорд и многие другие.
На основе личного опыта они рассказывают, как проектировать ПО, как выбор языках программирования влияет на продуктивность и т.д. Также профессионалы поделились своим мнением касательно будущего IT. Особенно интересно для новичков будет узнать, как начинали современные гуру программирования.
Путь программиста. Джон Сонмез
Эта книга поможет начинающим программистам лучше понять свою профессию и коллег. Автор рассказывает, что нужно для того, чтобы стать успешным IT-специалистом и всегда оставаться «на плаву», как продолжать свое развитие и получать от своей работы настоящее удовольствие.
Джон Сонмез честно рассказывает о трудностях, с которыми столкнутся все новички. Программисты чаще многих других подвержены стрессам из-за дедлайнов. А технологии так быстро развиваются, что IT-специалисты должны постоянно следить за трендами и самосовершенствоваться.
Программист-фанатик. Чед Фаулер
Эта книга — сборник практических советов и рекомендаций, касающихся ситуаций, с которыми на каком-то этапе может столкнуться каждый программист. Сюда можно отнести: отсутствие мотивации, плохие отношения с коллегами и руководством и т.д.
Понимание, как преодолеть такие проблемы, приходит лишь с многолетним опытом. И Чед Фаулер в своей книге делится полученными знаниями. Он рассказывает, как построить успешную карьеру в IT-сфере.
Джоэл о программировании. Джоэл Спольски
Джоэл простым языком пишет о сложных вещах, приправляя это отличным юмором. Автор дает полезные советы о том, как написать хороший код. Также он рассказывает, как писать спецификацию и составлять план работы.
Джоэл Спольски делится способами поиска багов, их устранения и рассказывает о важности использования своего программного обеспечения.
Алгоритмы для чайников. Джон Поль Мюллер, Лука Массарон
В книге авторы пишут о том, как алгоритмы влияют на повседневную жизнь человека. Она для тех, кто хочет понять, как научиться использовать алгоритмы для решения реальных задач.
Авторы рассматривают широкий спектр вопросов, касающихся алгоритмов: стандарты сортирования, поиск, работа с объемными данными и даже поднимается вопрос искусственного интеллекта. Все это будет подкреплено демонстрацией реализации алгоритмов на конкретных примерах на языке Python.
Самоучитель PHP 7. Игорь Симдянов, Максим Кузнецов
Учебник по основам программирования для чайников. Опытные разработчики рассказывает о нововведениях языка и вытекающих изменениях в разработке веб-сайтов. В книге делается упор на объектно-ориентированное программирование, генераторы, шаблоны проектирования и взаимодействие с базами данных.
В конце глав приведены задания, позволяющие закрепить материал и освоить разделы языка, которые не вошли в книгу.
Знаете другие хорошие книги для начинающих программистов для изучения IT технологий? Есть свое мнение по приведенном списку? Пишите их в комментариях!
С каких книг можно начать изучать программирование (Python, C#, C++, Java, Lua, …)
Здравствуйте дорогие читатели.
Данная статья посвящена вопросу, который волнует большинство начинающих программистов и робототехников (именно тех робототехников, кто готов постичь премудрости сложных систем и достич конструкторских решений как в Boston Dynamics).
Для начинания есть несколько путей:
запись в кружок или на курс
обучаться по книгам и документации
обучаться по видеороликам
Выбираем кружки и курсы
Мой совет использовать и сочетать все три варианта. Какой курс или кружок выбрать необходимо решать исходя из того что вы уже знаете.
Если вам мало лет и вы не знаете ничего из робототехники и механики и автоматики, то вам подойдут курсы, где необходимо постичь основы сборки механических конструкций и применение простой автоматики для реализации работы механизма.
Есть также краткосрочные курсы как очные так и дистанционные, которые помогают взрослым окунуться в мир программирования и робототехники. Огромное их количество для определённого вида профессий — учителей и воспитателей. Но никто не мешает записаться на данный курс человеку другой профессии.
Я часто записываюсь на дистанционные курсы. Для начинающих лучше попробовать бесплатные. Например на Stepik есть огромное количество курсов.
Курсов там огромное количество выбирай на свой вкус.
Если вы хотите создавать игры, то можете воспользоваться электронной версией книги Создание игр в Blender.
Выбираем книги для обучения программированию и робототехники
Второй вариант — это обучаться по книгам. Для начала, я рекомендую обзавестись энциклопедиями по таким разделам, как математика и физика.
Почему энциклопедии? Это связано с тем, что энциклопедии содержат достаточно полную информацию о всех направления науки и неплохое разъяснение по той или иной теме кратко, но доступно. Например, я пользуюсь энциклопедиями по математике и физике для детей Аванта+.
Не забывайте про справочники по данным дисциплинам. Это фундамент и для изучения программирования и для изучения робототехнике, так как эти две дисциплины очень тесно связаны.
Из книг по программированию рекомендую начать с основ. Например, Джейсона Бриггса «Python для детей».
Данный язык программирования достаточно универсален для обучения как самому программированию, так и программированию роботов.
В качестве продолжения, могу рекомендовать данные книги по программированию. Все они связаны с математикой, 3D координатами, списками, функциями и классами 1 из 2.
Как уже и писал ранее python универсален и подойдёт для изучения в робототехники.
Последняя книга охватывает процесс создание модели устройства. Поэтому, перед тем как создавать устройства из материала, необходимо создать модель в том числе и виртуальную. Для этого нам понадобятся книги по 3d моделированию и визуализации физики.
Если вам необходимо отработать навыки в механике и программировании сложных процессов в устройстве, то можно воспользоваться данной книгой.
Есть книга для самых маленьких, которым предстоит знакомится с устройствами 1 из 2.
Если вам будет под силу все эти книги, то можете смело приступать к более сложным вещам: компьютерное зрение и машинное обучение.
Все эти книги я активно использую в своей работе и они мне неоднократно помогали.
Если же вам нравятся языки со статической типизацией, то можно взять что по C++.
Данная книга для студентов
Также есть хорошие книги по Delphi:
Эта книга немного устарела, но коды рабочие для новых версий.
Если ваша мечта касается создания игр, то можно изучить C# на базе Unity.
Всё в ваших руках. Если вы горите этой идей, то вы обязательно достигните своей цели.
И напоследок, моё видео о выборе книг для программирования.