?

Log in

No account? Create an account
Me

Уползище

Убежище для тех, кто не бегает


Previous Entry Поделиться Next Entry
Me

Сетевой тетрис по-программистски

Все видели тетрис, поэтому это очень удобная метафора для описания разных реальностей. Расскажу о работе программистов.

Один программист. В стакан падают фигурки-требования. На дне стакана лежит "мусор" - недозаполненные ряды кубиков. Это код, над которым программист работает. Завершённые ряды из стакана исчезают. Иногда программист допускает баг с неожиданными побочными эффектами - тогда вместо завершённого ряда на дне образуется ещё несколько рядов мусора. У программиста есть кнопка "рефакторинг" - если нажать на неё, то можно переставлять мусорные ряды вверх-вниз, авось по-новому станет удобнее. Пока программист рефакторит мусор, фигурки продолжают падать. Скорость падения увеличивается не с количеством уложенных рядов, а по мере приближения к очередному дедлайну, потом уменьшается снова.

Это редкий по нынешним временам идеал. Над серьёзными проектами работают команды. Выглядит это так:

Рабочая группа. Два-три-четыре программиста в локальной сети. Каждый видит не только свой стакан, но и стаканы соседей, рядышком. Чтобы заполненный ряд исчез, его нужно заполнить не в одном стакане, а во всех сразу.

Неожиданные баги. Когда программист допускает баг, мусор вылезает в любом из стаканов. Если над проектом работают несколько групп, мусор может вылезти и в стаканах другой группы.

Рабочая группа с плохой коммуникацией. Всё, как в предыдущем случае, но каждый видит только свой стакан, поэтому невозможно предугадать, когда же исчезнут заполненные ряды и откуда берётся мусор.

Рабочая группа с общим кодом. Перегородок между стаканами соседей нету. Вместо них каждый видит один и тот же общий стакан двойной-тройной-четверной ширины, в который падают две-три-четыре фигурки одновременно. Каждый старается уложить свою фигурку поудобнее. Программисты порой мешают друг другу и путаются, где чья фигурка.

Парная разработка. За каждым компьютером сидят двое. Один двигает фигурки, другой тычет пальцем в экран и даёт советы. Время от времени второй не выдерживает, вырывает у первого клавиатуру, и они меняются ролями.

Ведущий программист. Параллельно с укладыванием собственных фигурок переключается на стаканы простых программистов и показывает, как надо заполнять ряды.

Тестер. Ему в стакан падают собранные ряды, он пробует их разломать. Если получается, забрасывает полученный мусор обратно в стаканы программистам.

Менеджер проекта. У него бездонный стакан-конвейер, в который быстро и пачками сыплются фигурки от заказчика. Менеджер фигурки не крутит и не укладывает. Он видит стаканы всех подчинённых сразу и распределяет фигурки по стаканам. Поскольку подчинённых много, то картинки стаканов маленькие, нечёткие и обновляются с задержкой. Менеджер видит только примерное количество мусора в стакане каждого и не знает, кому какие фигурки сейчас были бы удобнее.

Системный аналитик-архитектор. Получает от заказчика большие куски неправильной формы, режет их на подходящие фигурки и сыпет на конвейер менеджеру.

Перераздача обязанностей. Когда число и состав программистов в команде меняются, наличный мусор из стаканов собирают, перемешивают и в случайном порядке рассыпают по новым стаканам. Плюс ещё по нескольку рядов мусора каждому.

Производители средств разработки. Время от времени выпускают фигурки новых цветов и новой формы, а также стаканы новой ширины. Старые ряды в них не помещаются, а старые фигурки не стыкуются с новыми, поэтому программисты на время играют в несколько разных стаканов одновременно, а также разгребают новый неудобный мусор. Потом старые стаканы убирают, и программисты восклицают: "Как стало хорошо!"

Заказчик. Ему нет дела до тетриса - он играет в военную стратегию. Нетерпеливо кликает по фабрике, требуя новых бетонных полосок для дороги и крепостной стены. Фабрика отвечает индикатором прогресса и непонятными жалобами на нехватку прямых палок по четыре и избыток левых зюк. Заказчик закрывает окошко с бесполезными значками и кликает снова. Противник вот-вот прорвётся к столице!

Клиент заказчика. Он смотрит киношку, фэнтезийный боевик о битве за столицу. Простите, сейчас не смотрит. Он отошёл от телевизора в туалет, потом переключится на футбол, так что исход битвы никто уже не увидит. Потом допьёт пиво и ляжет спать - завтра с утра ему опять надо на работу, играть в тетрис...


  • 1
konstansa July 1st, 2009
Это вы сами написали?) класно!
хочу утащить в свой недавний пост "Словарь юзера". можно?

andrzejn July 1st, 2009
На здоровье. Со ссылками на источник у меня можно утаскивать что угодно.

(Сам я утаскиваю тоже со ссылками, так что если ссылки нету - значит, сам сочинил.)

konstansa July 1st, 2009
ну я всегда ссылки даю) как же без них)
уже утащила, спасиб)

shet July 1st, 2009
По-моему тестер - это не так. Тестер смотрит через плечо и кричит: "У вас дырка на второй строчке на 4м блоке справа! Вы что, вообще ослепли?! Из-за этого мы не можем отдать её заказчику! Закройте немедленно! Сверху еще 4 строчки с дырками? Да я вам про них когда еще говорил! " Потому что тестер никак не меняет код ;)

hildisvini July 2nd, 2009
Нене, все правильно. Во всяком случае, для инженера тестинга - в самую точку!

ludenus July 2nd, 2009
во-во..
- чуваки, это говно не работает
- поздно, уже зарелизили

helxen July 1st, 2009
Великолепно!

gressus July 1st, 2009
))

кстати насчет менедежров я тоже эту метафору применяю

amarao_san July 2nd, 2009
гениально.

спасибо.

ludenus July 2nd, 2009
> Тестер. Ему в стакан падают собранные ряды, он пробует их разломать.

тестеру падает мусор, по халатности программистов принятый за собраный ряд

nec_p1us_u1tra July 2nd, 2009
+1

alexartukov July 2nd, 2009
С душой написано! Спасибо!

vgarnick July 2nd, 2009
Класс!

Сразу захотелось поиграть (или написать и поиграть) в такой сетевой тетрис :-)

kuroi_kaze_85 September 13th, 2009
Есть tetrisfriends.com :)

  • 1