andrzejn: (Default)
[personal profile] andrzejn
Все видели тетрис, поэтому это очень удобная метафора для описания разных реальностей. Расскажу о работе программистов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Date: Wednesday, 1 July 2009 18:27 (UTC)
From: [identity profile] konstansa.livejournal.com
Это вы сами написали?) класно!
хочу утащить в свой недавний пост "Словарь юзера". можно?

Date: Wednesday, 1 July 2009 18:41 (UTC)
From: [identity profile] konstansa.livejournal.com
ну я всегда ссылки даю) как же без них)
уже утащила, спасиб)

Date: Wednesday, 1 July 2009 19:58 (UTC)
From: [identity profile] shet.livejournal.com
По-моему тестер - это не так. Тестер смотрит через плечо и кричит: "У вас дырка на второй строчке на 4м блоке справа! Вы что, вообще ослепли?! Из-за этого мы не можем отдать её заказчику! Закройте немедленно! Сверху еще 4 строчки с дырками? Да я вам про них когда еще говорил! " Потому что тестер никак не меняет код ;)

Date: Thursday, 2 July 2009 06:32 (UTC)
From: [identity profile] hildisvini.livejournal.com
Нене, все правильно. Во всяком случае, для инженера тестинга - в самую точку!

Date: Thursday, 2 July 2009 08:07 (UTC)
From: [identity profile] ludenus.livejournal.com
во-во..
- чуваки, это говно не работает
- поздно, уже зарелизили

Date: Wednesday, 1 July 2009 20:21 (UTC)
From: [identity profile] helxen.livejournal.com
Великолепно!

Date: Wednesday, 1 July 2009 20:39 (UTC)
From: [identity profile] gressus.livejournal.com
))

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

Date: Thursday, 2 July 2009 02:56 (UTC)
From: [identity profile] amarao-san.livejournal.com
гениально.

спасибо.

Date: Thursday, 2 July 2009 08:05 (UTC)
From: [identity profile] ludenus.livejournal.com
> Тестер. Ему в стакан падают собранные ряды, он пробует их разломать.

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

Date: Thursday, 2 July 2009 09:56 (UTC)

Date: Thursday, 2 July 2009 11:44 (UTC)
From: [identity profile] alexartukov.livejournal.com
С душой написано! Спасибо!

Date: Thursday, 2 July 2009 17:15 (UTC)
From: [identity profile] vgarnick.livejournal.com
Класс!

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

Date: Sunday, 13 September 2009 21:44 (UTC)
From: [identity profile] kuroi-kaze-85.livejournal.com
Есть tetrisfriends.com (http://www.tetrisfriends.com/) :)

Profile

andrzejn: (Default)
Андрій Новосьолов

May 2025

M T W T F S S
    1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Thursday, 22 May 2025 16:10
Powered by Dreamwidth Studios