Home

Advertisement

Customize
December 2009   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Декларативное планирование: презентация

Posted on 2009.05.21 at 23:56
Tags: , , , ,
Как и обещал, выкладываю презентацию к своему докладу.

http://files.rsdn.ru/20496/Auftragsplanning%20pre-final.pptx
Краткое содержание.

Текущее состояние дискуссии о процессах разработки - специалисты разбились на два лагеря. defined process (CMMI), empiric process (Agile).

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

empiric - соблюдение технологии не может гарантировать повторяемого результата. Акцент на итеративность и быструю обратную связь.

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

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

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

Truth is out there. Как на проблему глядят военные. Более практичный взгляд.

Auftragstaktik vs Beheflstaktik. Приказ в терминах действий. Приказ - миссия.
- как отдавать приказы
- как исполнять приказы, тип подчиненного, и корпоративная культура.
- Behefldtaktik как микроменедмент.

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

Как решается проблема планирования. Сетевое планирование = befehlstaktik. Потому и плохо работает. Активности -> цели = решение проблем = auftragstaktik = разработка ПО. Альтернатива традиционному подходу к группировке задач. Разработка плана от конечной цели. Свойства предлагаемой модели.

Паттерны в планах = "процессы". То, что будет часто встречаться в ваших планах. Цикл разработки RUP - как общий процесс решения проблем. Как обходится с итеративной активностью. Как выражается параллельная активность, и "параметрические" планы (aka процессы). Семантика "декларативного" плана и его связь с активностями.

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

Comments:


kmmbvnr
[info]kmmbvnr at 2009-05-22 03:20 (UTC) (Link)
Закачал на slideshare
Anatoli Stoyanovski
[info]skyer at 2009-05-22 06:39 (UTC) (Link)
Таки вывод - TDD? Думайте больше о конечных задачах ПО, а не блуждайте в архитектуре?
Gaperton
[info]gaperton at 2009-05-22 07:52 (UTC) (Link)
Cкорее TDP, то есть test-driven planning. :)

А в TDD как минимум что-то есть.
Gaperton
[info]gaperton at 2009-05-23 17:34 (UTC) (Link)
Но общий фокус получается - да, именно такой. А именно - думать в первую очередь о конечных задачах, а во вторую - об архитектуре.

Хотя, говоря о хайтеке и инновациях, такая стратегия не всегда хороша. Я имею в виду, можно сначала придумать действительно крутую штуку, не особо озадачиваясь ее применением, и исходя из проблем технологии, а уже потом - придумать, как ее прикрутить к бизнесу. В Интеле по слухам взаимодействие разработки и маркетинга происходит именно так :).

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

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

Пример. Решали техническую проблему - как удобно и просто писать тестовые сценарии к серверу компьютерной телефонии. Инженерам, однако, было скучно, и поэтому они решили проблему так - прикрутили к медиаподсистеме (которая гонит голос) движок JavaScript, а в него запустили легкую многозадачность на базе виндовых файберов. Потому, что это круто и интересно. Ну, и тесты на этом писать удобно.

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

Этот результат никто не заказывал. Вот вам и планирование от конечной цели. :) Хотя... Если как следует думать, и цели формулировать по настоящему декларативно, то подобный креатив будет скорее стимулироваться, чем подавляться. Ведь задание на разработку тестового фреймворка былj сформулировано грамотно, в лучших традициях auftragstaktik :).
[info]bogdanov_m at 2009-05-22 09:30 (UTC) (Link)
Очень естественный способ планирования, по-моему.
Gaperton
[info]gaperton at 2009-05-23 17:43 (UTC) (Link)
По моему тоже :). Топ-менеджмент просто вынужден так планировать, как мне кажется. Вариантов других особо нет. Ставятся, например, цели на квартал или на месяц. И проверяются, соответственно, раз в квартал или в месяц. И "технические" детальные планы, понятные только инженерам, на этом уровне никого не интересуют, надо простым человеческим языком объяснять.

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

Это было ужасно. Учитывая, что отчеты снизу приходили в терминах действий, а так как у нас хайтек - эти действия постоянно менялись в зависимости от текущих проблем разработки. И я решил с этим покончить. :)
podovan
[info]podovan at 2009-06-27 19:40 (UTC) (Link)
Правильно сделали. Но, не завидую я вам :)
Как успехи, кстати?
Не могли бы вы описать процесс "перезагрузки" тимлидов?
ИМХО было бы намного полезнее и интереснее, чем разжёвывание очевидного требования планировать по целям.
Gaperton
[info]gaperton at 2009-06-27 22:05 (UTC) (Link)
> Как успехи, кстати?

Нормально успехи.

> Не могли бы вы описать процесс "перезагрузки" тимлидов?

Весь процесс состоит в их привлечении к составлению планов. И все. Принцип люди схватывают моментально на примерах, остальное приходит с опытом. Никаких дополнительных плясок с бубном и пассов руками делать не нужно, достаточно просто приступить к работе. Так и должно быть, вообще-то.

> ИМХО было бы намного полезнее и интереснее, чем разжёвывание очевидного требования планировать по целям.

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

Как пример - первый же вопрос из зала был, "вот я дал задание сотруднику провести юзабилити тестирование, а он...". На вопрос, в не видит ли он какой-либо очевидной проблемы с формулировкой этого задания, он сказал, что не видит. Вопрос описать критирий успешного завершения этого задания его озадачил. Единственное что он смог сказать - "чтобы мне понравилось". Зал от души веселился.
Процессное управление на практике
[info]manage_process at 2009-06-27 23:26 (UTC) (Link)
:) незнание некоторыми людьми SMART ещё не повод для "изобретения" новой методики.
Gaperton
[info]gaperton at 2009-06-27 23:48 (UTC) (Link)
Неумение некоторых лиц подметать плац ломом вовсе не повод использовать метлу.
Gaperton
[info]gaperton at 2009-06-28 00:54 (UTC) (Link)
Кстати, хозяйке на заметку. За переходы на личности я баню. Здесь вечеринка частная, и тех, с кем мне не хочется общаться, я без долгих дискуссий выставляю за дверь. И у меня чешутся руки забанить кого-нибудь за особо глупые комментарии. Особенно, когда это идет в сочетании c завуалированным переходом на личности - вроде вашего. Этого мне вполне достаточно. Имейте это в виду, когда будете писать следующие комментарии.
Процессное управление на практике
[info]manage_process at 2009-06-28 06:48 (UTC) (Link)
Забаньте, а то у меня сомнения оставались по поводу вашей методики, сейчас они уже отпали. :)
http://manage-process.livejournal.com/5152.html
Gaperton
[info]gaperton at 2009-06-28 10:54 (UTC) (Link)
Я у себя баню не за сомнения, а за переходы на личности и пионерский стиль дискуссии. Первое меня раздражает, второе надоело, ибо есть по сути бесполезный словесный онанизм и подростковые попытки самоутвердиться. За сомнения-то зачем банить. Сомневатесь себе на здоровье.
Gaperton
[info]gaperton at 2009-06-28 11:48 (UTC) (Link)
Да, кстати, может кто из читателей моего блога не поймет глубину Вашей мысли. Так мы им поможем.

Не пугайтесь, уважаемые читатели, SMART это не более чем мнемоника для запоминания критериев правильной формулировки целей - например, проекта (в проектном управлении) или личных целей для подчиненных (в MBO, откуда и пришла). Самостоятельным методом не является. По большей части используется в русскоязычной сети, чтобы ввести на ровном месте наукообразие. Ибо стоит за ней довольно нехитрая мысль. См., собственно, википедию.

http://en.wikipedia.org/wiki/SMART_(project_management)

Только есть нюансы. There is no clear consensus about precisely what the five keywords mean, or even what they are in any given situation. Это во-первых. Мнемоника-то мнемоника, но вот касательно того, что буквы означают, согласия нет. :) Более того:

Choosing certain combinations of these labels can cause duplication; such as selecting Attainable and Realistic; or can cause significant overlapping as in combining Measurable and Results; Appropriate and Relevant etc. Agreed is often used in management situations where buy-in from stakeholders is desirable.

Еще, кроме SMART, иногда встречаются DUMB и SMARTER, которые по сути представляют собой те же яйца, только в профиль. :) Все подобные баззворды означают примерно одно и то же, и в массе своей пришли к нам из Management by Objective.

Штука кстати, интересная, и заслуживающая внимания. По духу и принципам близка к предлагаемой методике, но сама по себе немного о другом - она в большей степени фокусируется на people management. An important part of the MBO is the measurement and the comparison of the employee’s actual performance with the standards set. И этим все сказано. Дополнительной информации полно в сети.
Pavel Egorov
[info]xoposhiy at 2009-05-22 16:23 (UTC) (Link)

Ассоциация сработала

Уже не помню у кого в докладе про проектирование систем была такая забавная мысль:
"Линии важнее прямоугольников" :-)
Идея в том, что если прямоугольниками обозначать на диаграмме подсистемы, а линиями взаимодействия, то гораздо важнее описать формат взаимодействия, чем саму подсистему. Хотя людям привычно делать в точности наоборот.

Тут, что-то похожее получается. Прямоугольники — это активности, "межпрямоуголье" — цели. Опять же людям привычно мыслить в терминах активностей-прямоугольников, хотя гораздо правильнее вывернуть все наизнанку и мыслить в терминах целей.
Gaperton
[info]gaperton at 2009-05-23 16:26 (UTC) (Link)

Re: Ассоциация сработала

Любопытная формулировка. В ней определенно что-то есть.
russian_sla
[info]russian_sla at 2009-05-22 16:37 (UTC) (Link)
А почему Agile не defined? Методы Agile очень даже определены. "Scrum самодостаточен, его не требуется изменять" или как-то так (цитату полностью не помню). Это например.
Gaperton
[info]gaperton at 2009-05-23 16:25 (UTC) (Link)
Потому, что "defined process" и "empiric process" так определены. По ним можно и нужно гуглить. Это специальные термины, а не мои метафоры, иначе они были бы на русском языке.

http://www.controlchaos.com/old-site/debate.htm
The question, Defined or Empirical, was put to process automation scientists at DuPont's Advanced Research Facility. They inspected some of the leading systems development processes and concluded that it is no surprise that most development projects don't reach their planned conclusion. Systems development is an empirical, unpredictable process.

Applying concepts from industrial process control to the field of systems development, methods can be categorized as either "defined" (theoretical) or "empirical" (black box). Correctly categorizing a process is critical to its successful implementation.

Очевидно, Ваш вопрос о том, почему Agile не defined, надо в первую очередь адресовать DuPont's Advanced Research Facility. А во вторую очередь - специалистам по Agile, которые классифицируют Agile как "empiric".

Textbooks like Craig Larman's "Agile and iterative development" state that "A defined process has many predefined and ordered activities to be followed during development [...] Empirical processes [...] are based frequent measurement and dynamic response to variable events.
russian_sla
[info]russian_sla at 2009-05-23 16:32 (UTC) (Link)
За ссылки и аргументированный ответ - спасибо.
Действительно, вопрос мой надо адресовать авторам соответствующей терминологии.

Я просто буду настаивать, что Agile defined в степени не меньшей, чем CMMI (а CMMI даже :) гибче).
Gaperton
[info]gaperton at 2009-05-23 17:18 (UTC) (Link)
Когда Вы будете настаивать - вы defined будете понимать в каком из смыслов? :)
Gaperton
[info]gaperton at 2009-05-23 21:49 (UTC) (Link)
> Я просто буду настаивать, что Agile defined в степени не меньшей, чем CMMI (а CMMI даже :) гибче).

Ага, я понял мысль. Agile точно определен, в то время как CMMI достаточно гибок. То есть, употребляются нормальные слова русского и английского языка без дополнительного смысла :). Ну что ж, тут низя не согласится. Ибо Agile действительно определен достаточно точно, а CMMI, который есть набор критериев зрелости процесса, а не сам процесс, по этой причине ацки гибок. :)

Вы это хотели сказать? :)
russian_sla
[info]russian_sla at 2009-05-25 19:50 (UTC) (Link)
Да, практически так. :)
Процессное управление на практике
[info]manage_process at 2009-06-27 20:34 (UTC) (Link)
Посмотрел - http://www.slideshare.net/gaperton/auftragsplanning-pre-final-1479467

Есть одна БОЛЬШАЯ проблема - Подход к составлению плана от функций и тестов (со слайда 30).
Слайд 30 - "...как я могу составить план, если я не знаю, как будет устроена моя программа?" - проблема не решена! Планирование на основе функций и тестов предполагает наличие готовой архитектуры приложения. Разработка архитектуры должна быть включена в план. В итоге выполнение части плана, определяет состав другой части плана - планирование провалено.
Gaperton
[info]gaperton at 2009-06-27 22:13 (UTC) (Link)
Нет. Акцент с архитектуры при составлении плана смещается на требования и тесты. Это предполагает наличие фичлиста, и некоторого (не обязательно совсем детального) понимания, как данные фичи будут работать. И все.

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

Представлять архитектуру и структуру приложения полезно, но не обязательно. Во всяком случае, требования к детальности этого понимания СЕРЬЕЗНО расслабляются.
Процессное управление на практике
[info]manage_process at 2009-06-27 23:31 (UTC) (Link)
Если у вас нет детальной архитектуры, то откуда возьмутся детальные требования к тестам? А если планировать +- мильён, то это все и так уже умеют :)
Gaperton
[info]gaperton at 2009-06-27 23:51 (UTC) (Link)
Детальные требования к тестам для плана не нужны. И кроме того, для разработки тестов black box архитектура не нужна, как бы не были они детальны.

> А если планировать +- мильён, то это все и так уже умеют :)
Очень заметно.
Gaperton
[info]gaperton at 2009-06-27 22:18 (UTC) (Link)
Кстати, разработка архитектуры и структуры действительно часто вставляется в план. :) Только планирование от этого не проваливается, его вообще нельзя "провалить". Все просто - либо у вас хватает информации для составления плана, либо вы делаете вид, что ее хватает :).

В тяжелых случаях я могу составить параметрический план, и детализировать его в процессе работ. На раннем этапе происходит именно это. Обратите внимание на слайд, где есть черточка со звездочкой слева. Он задает "процесс", который определяет правило сшивки нескольких планов в единый.
Процессное управление на практике
[info]manage_process at 2009-06-27 23:34 (UTC) (Link)
либо вы делаете вид, что ее хватает этот приём мне известен, вопрос то не в этом.

В тяжелых случаях я могу составить параметрический план
не проблема когда финансирование по факту, а если проект продуктовый? Опять планируем риски на мильён? :)
Gaperton
[info]gaperton at 2009-06-28 00:02 (UTC) (Link)
> этот приём мне известен, вопрос то не в этом.

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

>> В тяжелых случаях я могу составить параметрический план
> не проблема когда финансирование по факту, а если проект продуктовый? Опять планируем риски на мильён? :)

Оценка трудозатрат и бюджета на раннем этапе ортогональна структуре плана, и напрямую с ней не связана.
Previous Entry  Next Entry  

Advertisement

Customize