Автор этой статьи, Клаудио Бернаскони, поделился собственным списком лучших по его мнению книг, которые стоит прочесть разработчику, пишущему на C. Он решил, что таким образом этот список пригодится не только ему самому, но и сообществу. Представляем вам перевод списка.
C# для профессионалов
Автор — Джон Скит. Название книги в оригинале — «C# in Depth».
Как эту книгу ни похвали, все равно будет мало. Джон Скит известен своим активным участием в сообществе StackOverflow. Его труд «C# in Depth» впервые был опубликован в 2008 году, а в настоящее время вы можете купить уже четвертое издание.
Джон знаменит своим умением объяснять сложные материи очень простым и понятным языком. Могу сказать, что большей частью своих знаний о работе C# и о том, как использовать различные особенности этого языка, я обязан именно этой книге.
Книга «C# для профессионалов» структурирована таким образом, чтобы осветить все доступные функции C# хронологически — в порядке их появления в версиях C, начиная со 2-й и заканчивая 7-й. Таким образом читатель, независимо от того, когда он вошел в мир .NET, может проследить развитие языка.
Лично у меня книга во втором издании. Я прочитал ее дважды от корки до корки и извлек много пользы. Так что я рекомендую эту книгу каждому серьезному C-разработчику, желающему поглубже погрузиться в изучение этого языки и платформы .NET.
Чистый код
Автор — Роберт Сесил Мартин. Название книги в оригинале — «Clean Code».
Эта книга не о C. Она предназначена для разработчиков вообще и ориентирована на качество кода. Собственно, данная книга уже стала классикой, впервые она вышла еще в 2008 году. Свой экземпляр я купил в 2012 году и к настоящему времени прочел его уже многократно.
Роберт С. Мартин освещает базовые и продвинутые способы улучшения качества кода ваших программ. Некоторые из принципов, упоминаемых в книге, уже внедрены в самых популярных IDE, другие в среде опытных разработчиков считаются просто проявлением здравого смысла.
Тем не менее, есть также темы и техники, применять которые мне не доводилось, но я узнал о них, прочтя эту книгу. Я бы рекомендовал труд Роберта С. Мартина всем начинающим и даже опытным программистам, заинтересованным в написании поддерживаемого и высококачественного кода.
Хотя этой книге уже больше 10 лет, советы из нее все еще применимы в современной разработке программ. К тому же, ее материал не ограничен каким-то одним языком.
Программист-прагматик
Авторы — Эндрю Хант, Дэвид Томас. Название книги в оригинале — «The Pragmatic Programmer».
Эта книга была выпущена в 1999 году. И это одна из моих любимых книг прошлого века, содержание которых до сих пор вполне применимо в разработке.
Главной темой книги авторы выбрали мастерство разработчика. В своем произведении они дали много ценных советов на предмет того, как можно улучшить разработку, какие подходы следует применять. Хант и Томас учат вещам, которым не учат в традиционной образовательной системе, в том числе в университетах. Это книга для практиков.
«Программист-прагматик» это книга более высокого уровня, чем «Чистый код». Она освещает все темы, касающиеся разработки ПО, включая разработку спецификаций, отношения с заказчиками, управление командой, инструменты разработчика и процедуру тестирования.
Идеальный программист
Автор — Роберт Сесил Мартин. Название книги в оригинале — «The Clean Coder».
Книга «Идеальный программист» была выпущена как продолжение супер-популярной книги «Чистый код». Первая книга главным образом освещает качество кода и такие вещи как нейминг и структурирование кода, а вторая должна служить в качестве руководства для профессионального программиста.
Вышла эта книга в 2011 году. На момент написания этой статьи она входит в топ-10 книг в категории разработки ПО на Amazon.
Роберт С. Мартин пишет о дисциплинах, техниках, инструментах и мастерстве в целом. В книге есть главы об улаживании конфликтов, о том, как работать с нерациональными менеджерами, как бороться с творческим кризисом и как избежать выгорания.
Из этой книги я почерпнул много вещей, которые активно применяю в своей повседневной жизни.
Когда я искал свою первую работу разработчика, я фокусировался только на качестве своего кода. Эта книга помогла мне понять, что разработка программ это не только код. Это люди, команды и коммуникация между ними. Коммуникация имеет ключевое значение для создания функциональных команд, способных производить высококачественное ПО.
Я рекомендую эту книгу каждому, кто хочет поближе познакомиться с процессом разработки программ и улучшить свои коммуникационные навыки, чтобы доводить проекты до конца, работать в здоровой среде и продвигаться по карьерной лестнице.
Чистая архитектура
Автор — Роберт Сесил Мартин. Название книги в оригинале — «Clean Architecture».
Я хотел бы заявить, что Роберт С. Мартин не выступает спонсором этой статьи, и я клянусь, что это последняя его книга в моей подборке.
Я просто не мог не упомянуть эту книгу. В ней разбирается тема крупных систем. Прочитав ее, вы узнаете, как создавать такие системы с нуля и как осуществлять рефакторинг уже существующих систем, чтобы привести их в соответствие с современными правилами. Также из этой книги вы узнаете, каким образом все рекомендованные в ней подходы помогают улучшать качество программ в целом.
Обсуждаемые в книге концепции относятся к объектно-ориентированным языкам программирования, но некоторые из них также могут применяться и в функционально-ориентированных.
В книге «Чистая архитектура» вы найдете определения дизайна ПО и архитектуры ПО, а также пояснение различий между ними. Далее, там описываются различные парадигмы структурного, объектно-ориентированного и функционального программирования.
Принципы дизайна, описанные в книге, включают все принципы SOLID.
В фокусе этой книги — подход под названием «кричащая архитектура»: архитектура должна быть видима для разработчика, когда он работает над проектом.
Я считаю, что «Чистая архитектура» это книга продвинутого уровня, так что рекомендую ее опытным разработчикам, которые уже посвятили несколько лет разработке программ. Начинающим будет очень сложно понять описываемые в ней высокоуровневые принципы.
В целом, я советую читать книги Мартина именно в таком порядке, в каком они здесь изложены: сначала «Чистый код», потом «Идеальный программист», а уж затем «Чистая архитектура».
C# Smorgasbord
Автор — Филип Экберг.
«C# Smorgasbord» это первая книга Филипа Экберга.
Книга предназначена для опытных C-разработчиков, желающих добиться более глубокого понимания внутренней работы C# и узнать, как лучше всего использовать фреймворк .NET.
В книге есть главы, посвященные parallel extensions, написанию модульных тестов и применению их для ускорения разработки. Также есть отличная глава об асинхронном программировании с async и await, а также о динамическом программировании.
Во второй части разбирается использование Reflection. Также есть базовая информация о платформе Roslyn.
Книга была выпущена довольно давно, и часть ее контента уже устарела. Но я все равно считаю, что она полезна для C-разработчиков, стремящихся получше разобраться в указанных темах.
Паттерны проектирования
Авторы — Эрик Фримен, Элизабет Робсон. Также в создании книги принимали участие Кэти Сьерра и Берт Бейтс. Название в оригинале — «Design Patterns» (серия «Head First»).
Большинство разработчиков знакомы с шаблонами проектирования по книге «Приемы объектно-ориентированного проектирования. Паттерны проектирования» (авторы — Эрик Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес).
Должен признаться, что мне эта книга не нравится. Мне не по вкусу ни стиль ее написания, ни иллюстрации, ни примеры.
А вот «Паттерны проектирования» освещают эту тему куда понятнее. Эта книга хорошо передает саму цель применения паттернов и поясняет, когда нужно их использовать. И, что более важно, — когда их НЕ нужно использовать, т. е., в каких случаях паттерн не подходит для решения проблемы.
Эту книгу я купил еще во время стажировки и думаю, что это единственная книга (из тех, что я тогда покупал), стоившая заплаченных за нее денег.
Примеры кода в книге «Паттерны проектирования» написаны на Java, но их можно с легкостью применить ко всем объектно-ориентированным языкам, включая C.
Если вы хотите узнать больше о паттернах проектирования или узнать что-то новое, например, познакомиться с каким-то необычным паттерном, я настоятельно рекомендую приобрести книгу Фримена и Робсон.
Путь программиста
Автор — Джон Сонмез. Название книги в оригинале — «Soft Skills: The Software Developer’s Life Manual».
Джон Сонмез, автор книги, сам прошел через все описанное в ней. Он работал на разных должностях в сфере разработки, занимался консультированием, вел блог и канал на YouTube, создавал курсы.
Основное отличие книги Сонмеза в том, что он говорит не только о том, как повысить качество кода. Он рассказывает, как разработчику «продавать себя», управлять своими финансами, инвестировать деньги, заниматься фитнесом, а также говорит о здоровье и об отношениях.
Цель книги — помочь читателю улучшить те сферы своей жизни, которые обычно не на слуху, но очень важны, если вы хотите стать успешным разработчиком. Эту книгу отличает широта тем, а также жизненные примеры, приводимые автором для их раскрытия.
К этой книге я возвращался не единожды, перечитывая отдельные главы. Могу смело рекомендовать ее каждому разработчику, желающему добиться большего профессионализма и получить большую степень свободы в своей карьере.
Искусство автономного тестирования
Автор — Ошероув Рой. Название книги в оригинале — «The Art of Unit Testing».
Рой Ошероув обновил свою популярную книгу и опубликовал ее второе издание в конце 2013 года.
Книга представляет читателю процесс создания автоматизированных тестов, с написания первого теста и до поддержки надежных наборов тестов. Рой дает определения многих широко используемых терминов, касающихся модульного тестирования, включая mock-и и stub-ы.
Также есть отдельные главы, посвященные использованию тестовых фреймворков, таких как Moq, FakeItEasy и Typemock Isolator. Книга включает много примеров кода, написанных на C, что делает ее очень понятной и подходящей для начинающих.
Я купил себе еще первое издание и проштудировал его от корки до корки. Временами я возвращаюсь к этой книге и перечитываю главы, касающиеся моих рабочих задач, или когда хочу убедиться, что использую в моих наборах тестов наилучший подход.
Советую эту книгу всем, кто хочет побольше узнать о TDD (разработке через тестирование) и автоматизированном тестировании, и, конечно же, всем C#-разработчикам.
Эффективное программирование на C. 50 способов улучшения кода
Автор — Билл Вагнер. Название книги в оригинале — «Effective C: 50 Specific Ways to Improve Your C».
В третьем издании своей книги Вагнер освещает широкий спектр тем как начального, так и продвинутого уровня, а также дает много советов.
Во вступлении к книге Вагнер говорит, что его целью было дать 50 рекомендаций, которые помогут профессиональным разработчикам использовать C# более эффективно.
Чтобы извлечь пользу из данной книги, нужно иметь определенный уровень понимания языка C. Читатель должен быть знаком с базовыми функциями языка и платформой .NET.
В книге описываются идиомы языка, которые можно использовать в своем коде. Есть советы по управлению ресурсами, работе с дженериками и LINQ.
Этой книги у меня нет, я читал ее в университетской библиотеке. Могу сказать, что хотя некоторые базовые приемы и были мне уже известны, из книги я почерпнул много новых, более продвинутых.
Очень рекомендую эту книгу каждому C-разработчику.
Вот и все, спасибо за внимание! Надеюсь, мой список поможет другим разработчикам подобрать хорошую книгу себе, на подарок другу или просто чтобы поставить на полку в офисе, чтобы произвести впечатление на коллег.