среда, 3 ноября 2010 г.

Pragmatic Podcast с Робертом Мартином

Pragmatic PodcastsУ меня неоднозначное отношение к техническим подкастам. С одной стороны, если вы хорошо знакомы с темой, то вы вряд ли узнаете много нового, а если тема для вас нова, то, познакомиться с ней нормально за час аудиоматериала весьма сложно. Кроме того, далеко не каждую тему из области разработки ПО возможно описать без примеров кода, диаграмм и рисунков. Но тем не менее, время от времени попадаются достаточно интересные подкасты, в которых рассказывается о новинках в той или иной области, или проводится интервью с интересным и, зачастую, известными товарищами, которые даже в столь жестких рамках умудряются поведать много чего интересного.

Вот и мне совсем недавно попался “прагматичный” подкаст с Робертом Мартином, "товарищем" достаточно известным, автором принципов S.O.L.I.D. (точнее этой аббревиатуры), нескольких книг, ну и вообще человеком с более чем сорокалетним стажем в нашей с вами области. Поскольку немалая толика этой известности приходится именно на аббревиатуру S.O.L.I.D. не удивительно, что в каждом интервью с участием "дядюшки" Боба ему задается этот вопрос. Но в данном случае мой интерес вызвало не то, что Роберт все таки помнит об этих принципах, а то, что этим принципам уже без малого 20 лет. По словам Роберта этот термин появился где-то в 1993 году в результате общения в USENET. Получается, что самому понятию понадобилось без малого десятилетие на то, чтобы обрести известность.

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

Боб считает (и я с ним согласен), что такие повторноиспользуемые части систем можно скорее "вырастить" (или развить), а не разработать с нуля специально. При этом при разработке системы достаточно пользоваться известными общепринятыми принципами проектирования. Не зря Эрик Липперт (да и многие другие специалисты) одной из главных проблем ПО считает преждевременное обобщение (premature generalization), когда в угоду потенциальным выгодам принимаются неоправданно сложные дизайнерские или архитектурные решения, в результате которых мы не то что повторное использование не получаем, мы даже одну систему до ума довести не можем. В результате получается переусложненная система, которая начинает сыпаться под собственным весом и тут уже начинаются другие заботы: как бы вообще свести концы с концами и хоть как-то довести текущий проект до ума.

Еще, Боб Мартин раскрывает секрет поиска квалифицированных кадров: чтобы найти высококлассных специалистов, к их поиску достаточно привлечь ... высококлассных специалистов. Такая постановка вопроса напоминает известный философский вопрос о том, что первично, курица или яйцо. Но тем не менее, как показывает практика, высококвалифицированным специалистам гораздо легче найти себе единомышленников в лице специалистов такого же уровня. Да что и говорить, процесс подбора людей все еще остается делом сложным, а оценка уровня кандидата - крайне субъективной, но тем не менее, у вас мало шансов получить в свое распоряжение профессионала, если его будет собеседовать новичок. Ведь как в этом случае определить, человек реально что-то знает или у него просто подвешен язык и он классно умеет байки травить.

Это далеко не весь перечень вопросов, о которых беседовали Роберт Мартин с Майелсом Форестом (это так ведущего зовут). В подкасте также обсуждали роль бизнес-аналитиков, обучение и наставничество, функциональное программирование и динамические языки, SICP и многое другое. Так что я тут не раскрыл всех карт и слушать все равно должно быть очень интересно.

Вот еще несколько подкастов, которые я периодически слушаю (список не полный, но может кого заинтересует):
1. Pragmatic Podcasts. Здесь вообще подкастов не много и большинство из них посвящено книгам, вышедшим из рук (или из чего там книги выходят) издательства Pragmatic Bookshelf. Так что темы там разные и нужно выбирать, что конкретно вас интересует. Но некоторые из них, как мне кажется заинтересуют достаточно широкую аудиторию.
  1.1. Robert Martin interview
  1.2. Andy Hunt on Pragmatic Wetware
  1.3. Dave Thomas on Pragmatic Publishing

  2. Software Engineering Radio. Это одни из самых серьезных и популярных подкастов и он по праву должен идти первым в этом списке. Спектр тем там весьма широк и, думаю, каждый найдет подкасты, посвященные интересной для него области.

3. Code Cast. Хотя эти подкасты и называются "Code Cast - The Late Night Show for .NET Developers", там можно найти много чего полезного не только .Net-программисту, поскольку перечень тем, которые там поднимаются, достаточно широк: начиная от PowerShell и Iron Python, заканчивая принципами SOLID, языком UML и разработкой под iPhone.

Комментариев нет:

Отправить комментарий