? ?
Me

Уповзище

Психолог, психотерапевт, барефутер, літератор. Панда, змій, кіт, ондатр, равлище. Такі справи.

Previous Entry Share Flag Next Entry
Сетевой тетрис по-программистски
Me
andrzejn
Все видели тетрис, поэтому это очень удобная метафора для описания разных реальностей. Расскажу о работе программистов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

))

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

гениально.

спасибо.

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

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

(Deleted comment)
С душой написано! Спасибо!

Класс!

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

  • 1