Тот, кто придумал термин mob programming, явно не спец в маркетинге. Кто захочет вступить в банду? Слово mob вызывает образы разбитого стекла и разграбленных магазинов — население Спрингфилда выстроилось в ряд с вилами и факелами.
Действительно, банда или толпа — это нечто противоположное тому, какой хочется видеть успешную сессию программирования. Толпа дезорганизована, склонна к опрометчивым решениям, злится и не желает идти на компромисс. Но групповое программирование не имеет к этому отношения.
Так что же такое групповое программирование?
Что такое групповое программирование? Попросту говоря: это три (или более) разработчика и одна клавиатура. Нет, это не те странные вещи, которые вы видели в интернете. Речь идет о совместной работе и выпуске высококачественного программного обеспечения.
Поскольку большинство программистов бросает в пот от одной мысли о совместной работе с другими людьми, то более подробно расскажу, как это выглядит. Представьте, что у нас есть разработчик Стив. Он работает над приложением, где пользователи могут просматривать рецепты. Однажды Стиву поручено добавить в приложение функцию «Избранное». С помощью этой функции пользователи могут сохранять рецепты в собственном списке под названием «Моё избранное». Если они хотят посмотреть сохранённый рецепт, то просто открывают список «Избранного» и выбирают его.
Стив хочет использовать групповое программирование для реализации своей функции, поэтому бронирует переговорную и просит своих коллег Джона и Сару присоединиться к его группе. Джон и Сара появляются на встречу с ноутбуками, готовые к работе над реализацией функции «Избранного».
В данный момент Стив должен установить определённые правила (да, у мобов есть правила). Они могут быть примерно такими:
- В любой момент времени один человек является «водителем» (driver). Это человек с клавиатурой и мышью. Единственный, кому разрешено изменять код.
- Все остальные берут на себя роль «штурманов» (navigator). В то время как водитель тратит много времени на физический набор текста, у штурманов есть всё необходимое время, чтобы обдумать, просмотреть, обсудить, описать. И это именно то, что они должны делать.
- Все часто меняются местами. Нет, это не какие-то игры, как в детском саду. Если люди слишком долго сидят в одной роли, то могут устать. Если же у них есть любимая роль, то могут заскучать без неё.
И это всё — теперь вы знаете, что такое групповое программирование. Добавьте его в свое резюме.
Хорошо, я понял, что это такое, расскажи больше
Если вы дочитали досюда, то вероятно думаете: «Почему этот парень объясняет групповое программирование? Google и так выдаёт 500 объяснений». Ну просто я занимаюсь этим каждый день в течение пяти месяцев. И вот что я узнал:
Это действительно неплохо
Помню, когда впервые узнал о групповом программировании. Мне было 19, в комнате толпилась куча студентов, не пользующихся дезодорантом, в здании, которое выглядело так, словно оно предназначено под снос (забавно, но так оно и вышло). Профессор только что закончил объяснять курс по структурам данных. В конце он пошутил: «Вы можете работать в одиночку или в группе — в индустрии все работают в группах, они называют их мобами». Боже мой, подумал я, и во взрослой жизни есть групповая работа.
Удивительно, но каждый раз, когда я объясняю концепцию группового программирования новому человеку, кажется, то же чувство страха пробегает по его лицу. Оставь себе свою групповую работу.
Но вот плохая новость — вы уже занимаетесь групповой работой. На работе у вас есть коллектив, вы обращаетесь к коллегам за помощью, они рассматривают вам код. Требуется сочетание всех усилий для определения, будет проект успешным или нет.
И тогда можно понять, что такое групповое программирование. Это не больше групповой работы, а столько же. Разница в том, что все взаимодействия с коллегами станут очень лёгкими — больше никогда не придётся гадать, чем они занимаются, никогда.
Групповое программирование помогает лучше узнать своих коллег
Если вы когда-нибудь оторвёте глаза от монитора, то можете обнаружить вокруг других людей. Оказывается, у них тоже жизнь! Если серьёзно, если взаимодействовать с коллегами с утра до вечера, то узнаете их намного лучше.
Поскольку программирование — это работа, а не клуб по интересам, мы должны быть более практичными. Хорошо взаимодействующие команды лучше справляются с работой. Это факт, отсюда все эти упражнения по тимбилдингу и выезду на природу. Командам в мобах не нужен тимбилдинг, потому что они уже хорошо работают вместе.
Удалённость — не причина уклониться
«Но я работаю удалённо, меня никогда нет в офисе, чтобы вступить с кем-то в моб». Плохие новости, приятель, я всё время работаю удалённо. Оказывается, в этой штуке под названием 21-й век приложений для удалённой работы вагон и маленькая тележка. Мой любимый — видеозвонок Slack. Там есть все необходимые функции: вы можете расшарить экран, когда выступаете в роли водителя, и говорить голосом в роли штурмана. Может, ваша компания не использует Slack, а что-нибудь вроде WebEx, где организация звонка занимает три года работы научно-исследовательской группы. В этом случае просто открой сессию в Appair.in и кончать искать причины отлынивать от продуктивной работы.
Я больше времени программирую, потому что меньше туплю
Как выглядит программирование в одиночестве
Итак, я собираюсь сделать признание — я плохо разбираюсь в CSS. И не просто плохо, а конкретно ПЛОХО. Так что можете представить, если я работаю над проектом, скажем, над своим сайтом (скоро), то часами стучусь головой о стену, пытаясь понять, почему мои div'ы не выравниваются (правда, почему?).
В групповой работе всё иначе: я не застреваю на CSS, потому что всегда есть вторая и третья пара глаз, чтобы помочь. Значит, я меньше времени стучусь головой о стену и больше времени уделяю решению проблем.
Нет такого понятия, как «мой кусочек» кода
Позвольте рассказать историю ужасов, историю конкретного фрагмента кода. Ну вы знаете такие. Изначально его написал Фрэнк, просто Фрэнк. Когда находились баги, Фрэнк их исправлял. Когда нужны были новые функции, Фрэнк их добавлял. Никто другой в команде не знал, как работает код. Только то, что он должен делать. Если он не делал что надо, рядом есть Фрэнк. Ну вот, однажды Фрэнка не оказалось рядом. Он нашёл новую работу и получил большую прибавку к зарплате, молодец. А вы остались с куском системы, который никто не понимает и никто не хочет трогать, наслаждайтесь.
Группы работают сообща, так что никогда в коде не останется тайн и загадок. Если загадочный фрагмент есть сейчас, то натравите на него группу программистов с автором этого кода — и они положат тайне конец.
В качестве вывода
Итак, вот это я узнал (пока) о групповом программировании. Честно говоря, меня по-настоящему удивило, насколько это приятный способ для работы и решения сложных технических проблем. Вероятно, сейчас вы обеспокоены, что я упустил один важный положительный (или отрицательный) момент — к счастью, для этого есть раздел комментариев.
Автор: m1rko