Роберт Мартин
Комментарий к книге Чистая архитектура. Искусство разработки программного обеспечения
Рецензия на книгу Идеальный программист. Как стать профессионалом разработки ПО
stupin
Однажды увидел в книжном магазине эту книгу. Полистал. Меня заинтересовали в первую очередь байки из жизни автора. Решил почитать и заказал книгу в веб-магазине.
После прочтения оказался несколько разочарованным. Дело в том, что баек, заинтересовавших меня, в этой книге не так уж и много. Конечно, в книге есть и много другого интересного материала, но книга закончилась быстрее, чем я удовлетворился полученной информацией. Наверное дело в том, что у Роберта Мартина свои собственные представления об идеальном программисте. Я бы сказал, что идеальным программистом он считает профессионального программиста. И вот что он вкладывает в это понятие. В его понимании профессиональный программист помимо 40 рабочих часов в неделю должен тратить ещё 20 часов в неделю на самообучение. Профессиональный программист не обещает сделать то, для чего ему придётся пренебречь процедурами привычного для него цикла разработки. По его мнению, досрочно работу можно выполнить либо урезав необходимый функционал, либо работая сверхурочно. Сверхурочная работа может длиться не более двух недель непрерывно и не должна проводиться в ущерб семье. Если нет возможности отбросить часть функционала и нет возможности работать сверхурочно, то профессионал должен ответить твёрдым отказом. Ни в коем случае нельзя пытаться выполнить работу досрочно в ущерб качеству кода. Роберт Мартин является ярым сторонником подхода к разработке через тестирование и, в частности, заявляет о том, что ни в коем случае не будет отказываться от этого подхода в угоду срочности. Разработка через тестирование увеличивает эффективность работы и поэтому отказ от этого подхода будет равносилен признанию, что этот подход не приносит никакой пользы, а только затягивает разработку.
Кроме достаточно известного подхода к разработке через тестирование, в книге встречаются и несколько необычных мыслей. Одна из таких мыслей заключается в том, что в процессе работы нужно избегать состояния потока. В состоянии потока работается легко и можно проработать много часов подряд. Кажется, что это самое продуктивное состояние, но автор считает, что в этом состоянии притупляется острота ума и можно легко увлечься реализацией плохо продуманного решения. Поэтому состояния потока нужно избегать. Лучшим способом избежать состояния потока Роберт Мартин считает парное программирование. Кроме того, парное программирование позволяет находить выходы из тупиков, учиться у коллег их образу мыслей и их приёмам работы, а также знакомиться с чужим кодом.
Самый необычный совет, который я встретил в этой книге - это выполнение упражнений по программированию. Вы спросите, а что же тут необычного? Необычно тут то, что автор предлагает выполнять время от времени одни и те же упражнения. Смысл упражнения в этом случае заключается не в поиске решения, которое ранее уже было найдено, а в том, что при выполнении упражнения тренируются навыки использования инструментов и языка программирования. Короткие упражнения, выполняемые в одиночку, называются "ката". В паре можно выполнять упражнения "вадза". В этом случае один напарник пишет тест, а другой пишет код, который пройдёт тест. Потом напарники меняются местами. В группах больше двух человек можно выполнять упражнения "рандори". В этом случае первый человек пишет тест и передаёт упражнение следующему участнику, чтобы тот написал код для этого теста и новый тест для следующего участника. Названия "ката", "вадза" и "рандори" взяты из дзюдо.
Автор пользуется и рекомендует другим использовать для разработки следующие инструменты:
- IntelliJ - интерактивная среда разработки,
- git - система контроля версий,
- Pivotal Tracker - система учёта задач,
- XUnit - инструмент модульного тестирования,
- FitNesse - инструмент интеграционного и компонентного тестирования, автором которого является сам Роберт Мартин,
- Jenkins - система непрерывной интеграции.
В отличие от книг "Программист-фанатик" и "Путь программиста", в этой книге нет советов вести блог или подкаст, участвовать в конференциях, нет советов обрести финансовую независимость или советов, как распоряжаться деньгами инвестора при реализации нового проекта. В общем, мне показалось, что книга ориентирована в первую очередь на программистов, работающих в больших компаниях. Им нет необходимости быть известными, чтобы найти работу получше или иметь возможность запросить зарплату побольше при устройстве на новую работу. Они не стеснены в деньгах настолько, чтобы искать дополнительные источники заработка. Формирование требований и продвижение нового продукта в большой фирме - не задача программистов. Поэтому в этой книге, выражаясь фигурально, нет советов по маркетингу и финансам.
Отличная книга программиста, который рассказывает о своем опыте разработки программного обеспечения начиная с 60х годов. В книге рассказывается о том, что такое архитектура программного обеспечения и какая она бывает. Уклона в какие либо языки нет, поэтому будет полезна для любого программиста.