dimrub: (Default)
[personal profile] dimrub
А что вы думаете о различных методиках, проходящих под лозунгом agile development? Наверное, чтобы разговор был содержательным, предпочтительно высказываться на основании реального опыта знакомства с этим делом.

on 2008-10-28 08:27 pm (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Test-driven development - это очень правильная штука. К сожалению, её очень тяжело последовательно применять.

on 2008-10-28 08:28 pm (UTC)
Posted by [identity profile] dimrub.livejournal.com
Да, это, пожалуй, наиболее бесспорный аспект agile.

on 2008-10-28 08:45 pm (UTC)
Posted by [identity profile] object.livejournal.com
У нас нет хрестоматийного применения методики. И тем не менее очень благотворно сказались следующие изменения:

1. Continuous build. По идее надо continuous integration, но у нас для начала билд. Как кто чек-ин делает, все сейчас же собирается на специальном сервере, и если билд не удался, виновник должен все бросить и его починить.

2. Nightly unit tests with code coverage. Опять же, если есть возможность, тесты надо гонять все время, но наши заниимают больше часа. Поэтому гоняем ночью. В разных бранчах.

3. Мы редко пишем unit test first, но как правило в source control код кладется уже с тестами. Это очень хорошо сказывается на качестве кода.

4. Релиз раз в месяц. Короткие итерации.

on 2008-10-28 08:52 pm (UTC)
Posted by [identity profile] dimrub.livejournal.com
1. В Майкрософте была еще очень классная вещь - BAT (build acceptance test). Это просто мечта, потому что в рамках чекина не просто строится билд (автоматически, ДО собственно чекина), но и запускается этот самый BAT, который ничто иное, как подмножество regression. Очень полезная вещь, жаль, сделать ее времени не хватит.

Книгу, кстати, нашел на работе, сейчас читаю.

on 2008-10-28 09:19 pm (UTC)
vitus_wagner: My photo 2005 (Default)
Posted by [personal profile] vitus_wagner
Хорошо микрософту - у них одна платформа. А как на дюжину платформ распространить исходники кроме как через source control?

on 2008-10-28 09:30 pm (UTC)
Posted by [identity profile] dimrub.livejournal.com
Так уж у меня сложилось, что за всю карьеру я ни разу не работал над consumer software - только над solutions, где portability является не требованием, а довольно тяжелым и ненужным бременем.

on 2008-10-28 10:01 pm (UTC)
Posted by [identity profile] irene221b.livejournal.com
У нас Scrum уже пару лет. Мне очень нравится. Сильно уменьшилось количество micro-management со стороны начальства, они как-то поддались воспитанию на месяц оставить нас в покое.
Ну и так там всякие психологические трюки, которые делают жизнь приятнее.

on 2008-10-28 10:13 pm (UTC)
Posted by [identity profile] mikkim08.livejournal.com
Мне в этом скраме сразу не понравилось, что нужно всем садиться каждый день в кружок и говорить "что я сделал вчера/сегодня" и "что я собираюсь делать сегодня/завтра". Детский сад какой-то.

Ну и кроме того ориентированнось на бизнес-фичи (а именно, что в конце каждого спринт'а должно быть сделано что-то, что можно показать заказчику/бэклог-оунеру) тоже далеко не для всех вещей подходит.

Короче, через некоторое время я забил на это дело.

on 2008-10-28 10:30 pm (UTC)
Posted by [identity profile] irene221b.livejournal.com
"что я сделал вчера/сегодня" и "что я собираюсь делать сегодня/завтра". Детский сад какой-то.

У нас это вынуждает разбивать задачу на куски, которые можно закончить за день-два. То есть исчезает проблема "закончено на 90%!", и так 2 недели подряд.

Но я же говорю, это все психологические уловки, и если к ним возникает неприязнь, то и не сработает.

on 2008-10-28 10:43 pm (UTC)
Posted by [identity profile] mikkim08.livejournal.com
Мне просто трудно представить людей, у которых этот подход НЕ вызывает неприязнь. В моем случае это была пара-тройка несчастных гастарбайтеров, которым вероятно надо было как-то высидеть грин-карту.

on 2008-10-29 06:30 am (UTC)
Posted by [identity profile] ilya-dogolazky.livejournal.com
Мой опыт говорит, что проблема "закончено на 90%" не то чтоб исчезает, но просто перестаёт проблемой быть ;)

on 2008-10-29 07:55 am (UTC)
Posted by [identity profile] chrobin.livejournal.com
зачастую бывает, что "закончено на 90%" в рамках скрама есть просто знак того, что определение понятия "закончено" отсутствует

on 2008-10-29 07:57 am (UTC)
Posted by [identity profile] chrobin.livejournal.com
садиться не надо, на то он и stand-up meeting

on 2008-10-29 07:56 am (UTC)
Posted by [identity profile] chrobin.livejournal.com
а можно про психологические трюки поподробнее?

on 2008-10-29 09:07 am (UTC)
Posted by [identity profile] irene221b.livejournal.com
Ну вот тут в соседнем треде у человека промелькнуло, что скрам-мастер отвечает за успех. Что, конечно, сразу выдает, что у них просто переименовали тим-лидера в скрам-мастера. Потому что за успех отвечает вся команда.

И перед спринтом никто не распределяет "один человек-один бэклог-айтем", самые плодотворные наши спринты получались, когда удавалось совместно работать над чем-то.

on 2008-10-29 09:40 am (UTC)
Posted by [identity profile] mikkim08.livejournal.com
Ну вот тут в соседнем треде у человека промелькнуло, что скрам-мастер отвечает за успех. Что, конечно, сразу выдает, что у них просто переименовали тим-лидера в скрам-мастера. Потому что за успех отвечает вся команда

Ну,"скрам-мастер" все-таки все время меняется. И я имел в виду, что он занимается координацией и озабочен тем, чтоб "спринт-екзит" был хорошим.

И перед спринтом никто не распределяет "один человек-один бэклог-айтем"

Это я упростил немного: "бэклог-айтемы" бьются на мелкие "таски", а "таски" уже распределяются между людьми в команде динамически.

on 2008-10-28 10:44 pm (UTC)
Posted by [identity profile] mikkim08.livejournal.com
Я работал некоторое время по Скраму. В итоге мне не понравилось, и я так работать не хочу, но справедливости ради надо сказать, что в этом подходе возможно что-то есть.

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

Временной единицей разработки является "спринт" (~2 недели). В течение "спринта" должны быть сделаны один или несколько "бэклог-айтемов". В конце "спринта" всегда бывает ""спринт екзит". Это демонстрация на живой аппликации "бэклог-айтемов", сделанных в течение данного спринта. Т.е. получается мини-релиз каждые 2 недели.

Перед началом спринта известны "бэклог-айтемы", которы должны быть сделаны, и кто из команды за какой айтем отвечает. Каждый рабочий день в один и тот же час происходит "скрам-митинг". Вся команда садится в кружок, и каждый отвечает на 3 вопроса, что он сделал вчера/сегодня, что собирается делать сегодня/завтра и что ему мешает выполнить свой айтем.

Оперативным управлением командой в течение "спринта" занимается "скрам-мастер". Он отвечает за успех/неуспех "спринта" целиком. Он же ведет "спринт-екзит" и проводит демонстрацию новой версии в конце спринта. Роль "скрам-мастера" переходящая. То есть каждый в команде успевает работать "скрам-мастером".

on 2008-10-28 11:08 pm (UTC)
Posted by [identity profile] dumalkin.livejournal.com
попробовал себе представить применительно к нашему проекту:

1.у нас нету комнаты совещаний куда влезут одновременно все разработчики
2."Все что надо сделать" - это спецификация системы, которую писали в общей сложности с год. И продолжают писать уже после начала кодирования. Написание, поддержка в приличном состоянии, проверка что нету внутренних противоречий - это группа системных инженеров (3 человека, плюс им периодически помогают свободные программисты).
3. "Релиз" у нас проверяется (внутренние проверки) около месяца, плюс еще месяц интеграции и еще месяц финальные проверки перед передачей заказчику. Они проверяют еще месяц-два :) Наш "спринт" - это полгода :)
4. Размер "айтема" в среднем - около недели, и контроль что и когда делается иерархически - нач. группы докладывает руководителю разработки. Происходит это "совещание-статус" раз в неделю. Собирать ежедневно 15 человек (а то и больше) смысла нет.
5. командой управляет руководитель разработки (на макро-уровне). Техническое управление и надзор - на группе архитекторов (под ними - нач. групп). Есть ответственный интегратор (человек на профессиональном уровне архитектора). Но он отвечает только за качество и отсутствие багов, не за написание новых фичей. Его роль постоянная, ибо требует очень хорошее знание всего, и довольно специфический склад ума. Демонстрация новой версии в нашем случае означает прохождение соответствующей версии STD, проведенное тестерами и заверенное SQA (software quality assurance).

Это все не критика, просто материал для сравнения как такой метод (в котором есть неплохие идеи) может быть без фанатизма адаптирован к проектам вроде нашего.

on 2008-10-28 10:53 pm (UTC)
Posted by [identity profile] dumalkin.livejournal.com
У нас - билд сервер запускающий и все юнит тесты
Новая "фича" пишется одновременно с юнит тестом который ее проверяет (я называю юнит тестом все что технологически запускается из NUnit. Многие юнит тесты тестируют процессы затрагивающие многие модули системы.) Полное покрытие кода (за исключением так называемых "проверок на всякий случай") юнит тестами.
Короткие релизы - но в масштабах нашего проекта это раз в полгода :)
Код ревью - нач. группы в обязательном порядке делает на 100% кода, с документированием и сохранением отчета. Делается обычно 2-3 раза "в жизни модуля" - в промежутке от версии к версии.
Первые месяцы в момент создания скелета проекта и приучения команды к стилю работы все чек-ин проходили только после обязательного и 100% код ревью одного из архитекторов.
Создание (недешевое) среды симуляции позволяющей симитировать как возможные, так и невозможные ситуации в которых может оказаться система.
Написание утилит для полу/автоматической проверки особо темных углов - вроде скорости/точности вычисления различных интегралов при разной точности/модели поведения измеряемых величин после каждого прогона программы.
Нерешенные проблемы - тестирование юзер интерфейса. QTP и иже с ними возможно будут использованы, но в похожих проектах они себя показали не с лучшей стороны.

on 2008-10-29 05:17 am (UTC)
Posted by [identity profile] ilya-dogolazky.livejournal.com
Скайп это сила, да! ;-)

on 2008-10-29 07:53 am (UTC)
Posted by [identity profile] chrobin.livejournal.com
а что о них думать? можно либо делать ватерфолл либо не делать ватерфалл. если не делать ватерфолл, можно делать "agile", можно делать хаос, можно делать хаос и называть его "agile". понимая основные постулаты, доморощенную "agile" методологию можно взрастить на колене, не понимая — загнать формальную методологию в истерию и бюрократию.

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

или все-таки речь об инженерных практиках?

on 2008-10-29 07:55 am (UTC)
Posted by [identity profile] dimrub.livejournal.com
Ну, я о конкретных вещах. Скажем, важность TDD почти все понимают. А вот другие постулаты agile (типа "code is the documentation" и прочее) - вопрос.

on 2008-10-29 03:26 pm (UTC)
Posted by [identity profile] chrobin.livejournal.com
тут надо четко разделять инженерные практики и методологию менеджмента. тдд и прочее это не постулаты agile, это постулаты экс-пи. в скраме никакого тдд нет и в помине.

постулаты agile — итеративное создание value, приоритеты заказчика выше приоритетов инженерной группы, неприменимость понятие value add, смещенный баланс треугольника срок-фичи-бюджет и так далее. тдд без этих базовых вещей нисколько не agile.

on 2008-10-29 05:59 pm (UTC)
Posted by [identity profile] mikkim08.livejournal.com
приоритеты заказчика выше приоритетов инженерной группы

Это да, это-то и раздражает :)

on 2008-10-30 07:44 am (UTC)
Posted by [identity profile] chrobin.livejournal.com
да, architecture astronautics, решение выдуманных проблем, взятие на себя чужих рисков — все это всегда было для программистов самой интересной работой

on 2008-10-29 08:33 pm (UTC)
Posted by [identity profile] br0mberg.livejournal.com
Работал по скраму и по XP - мне лично понравилось. Во-первых, есть ощущение прогресса, понятно двигаемся мы или нет, во-вторых, контакт с заказчиком. Он уж не отвертится, что чего-то не знал. ;) Правда работу парой в XP мы применяли не всегда, очень выматывает, хотя и действительно ускоряет работу.

on 2008-10-30 06:15 am (UTC)
Posted by [identity profile] ilya-dogolazky.livejournal.com
У меня вчера такой знатный "реальный опыт знакомства с этим делом" получился, что аж не удержался и постинг написал ;-)

on 2008-10-30 06:18 pm (UTC)
Posted by [identity profile] malaya-zemlya.livejournal.com
Применимость методик сильно зависит от того, чем занимаешься. Методики в большинстве своем были изобретены консультантами работающими на вертикальный рынок. Соответсвенно, на вертикальном рынке они более всего и применимы. И наоборот, в компаниях, которые пишут софтвер, который продается в магазинах, к методикам относятся довольно скептически: Когда программируешь видео-игру, о каком взаимодействии с заказчиком может идти речь?

that said, какие-то идеи "из методологий" вполне универсальны: continuous build, unit-tests (если с умом), refactoring там и сям...

Profile

dimrub: (Default)
Adventures of a somewhat curious character

September 2013

S M T W T F S
12 345 67
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 05:11 pm
Powered by Dreamwidth Studios