<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6255636852442610102</id><updated>2011-07-30T22:55:48.790-07:00</updated><category term='Балдеющие от адреналина'/><category term='Agile'/><category term='Trowling'/><category term='User Stories'/><title type='text'>Шогин Михаил</title><subtitle type='html'>ПОСТРОЙТЕ ПЛАН ПРОФЕССИОНАЛЬНОГО РАЗВИТИЯ И СЛЕДУЙТЕ ЕМУ. МЫ ДОЛЖНЫ БЫТЬ ПРОФЕССИОНАЛАМИ В ТОЙ ОБЛАСТИ В КОТОРОЙ МЫ РАБОТАЕМ. МЫ НЕСЕМ ОТВЕТСТВЕННОСТЬ ЗА ВСЕ ЧТО МЫ СОЗДАЕМ. БУДЬТЕ ЧЕСТНЫ САМИ С СОБОЙ!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-4821962893657219146</id><published>2010-01-31T15:32:00.000-08:00</published><updated>2010-01-31T15:43:39.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trowling'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='User Stories'/><title type='text'>User Stories Applied : Собираем Истории..</title><content type='html'>&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;Классическая модель сбора историй говорит о том, что все истории необходимо собрать в начале проекта.&lt;span style=""&gt;  &lt;/span&gt;В некоторых случаях сбор историй может тянуться недели, и даже месяцы. В отличии от традиционного процесса сбора историй, &lt;span style="" lang="EN-US"&gt;Agile&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;процесс говорит о том что мы не понимаем что все истории собрать не можем. Будем собирать истории авансом, даже в том случае если они описаны на высоком уровне детализации. Дополнительным фактором этого, является то ,что &lt;span style=""&gt; &lt;/span&gt;детализированные истории устаревают со временем и теряется их актуальность. Поэтому высокий уровень истории позволяет нам сделать детализацию в тот момент, когда история берется на разработку.&lt;span style=""&gt;  &lt;/span&gt;К тому же, мы экономии время и можем быстро создать прототип для оценки размера проекта на ранних стадиях разработки.&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;Сбор историй можно представить себе как ловлю рыбы. Мы берем сеть с разным размером ячеек и отлавливаем истории нужных нам размеров. Таким образом, мы можем закидывать разные сети для отлавливания историй разных размеров. &lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;При таком способе выявления требований, мы сталкиваемся с рядом проблем:&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt;мы закидываем сеть сегодня, а требование может появиться завтра.&lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt;мы прекрасно осведомлены тем, что мы не сможем выловить абсолютно все требования&lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt;необходимо знать, где ловить &lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;Для сбора историй используются техники, как традиционного сбора требований, так и прогрессивные методы. &lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Интервьюирование&lt;/span&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt; Анкетирование&lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt; Наблюдение&lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt; Семинары по написанию требований&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" face="trebuchet ms"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="trebuchet ms"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;Интервьюирование&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;  &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" face="trebuchet ms"&gt;Эта техника включает в себя личное общение с пользователями. Главным фактором успеха собеседования является грамотный план. План собеседования должен включать в себя открытые, контекстно-независимые вопросы.&lt;/p&gt;  &lt;p class="MsoNormal" face="trebuchet ms"&gt;Открытость вопроса заключается в том, что вопрос не направляет мысль человека, а инициирует мыслительный процесс. Остается только собирать мысли человека. &lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" face="trebuchet ms"&gt;Контекстная независимость – это отсутствие ответа в постановке вопроса. Пример:&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt;&lt;/span&gt;Контекстно-зависимы вопрос: Должна ли система делать автосохранение каждые 15 минут?&lt;/li&gt;&lt;/ul&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style=""&gt; &lt;/span&gt;Контекстно-независимы вопрос: Какого поведения ожидает пользователь от системы в случае экстренного завершения приложения?&lt;/li&gt;&lt;/ul&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Анкетирование&lt;/span&gt;&lt;/span&gt;  &lt;p class="MsoNormal" face="trebuchet ms"&gt;Полезно в случае большого количества пользователей и большом количестве вопросов. В этом случае применяя методы статистики, мы можем выявить, с большой точностью, необходимые пользователям фичи истории. &lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;Практично в случае определения характеристик новой функциональности, заложенной в истории.&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;Помогает расставить правильные приоритеты характеристик. В этом случае пользователи сами выбирают то что им действительно необходимо в настоящее время, а что может подождать.&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;Наблюдение&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;Полезная практика, когда разработчики наблюдают за действиями пользователей в процессе работы с продуктом. В этом случае все неудобные, неуместны, не нужные действия выявляются максимально быстро. &lt;span style=""&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;Одним из вариантов наблюдения является обратная связь. Пользователи пользуются продуктом и в случае каких либо проблем используют средства обратной связи, для оповещения о проблемах. Проблемная информация накапливается, обрабатывается, и команда может быстро реагировать на поступающие заявки. В настоящее время очень трудно найти продукты не использующие средства обратной связи.&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p face="trebuchet ms" class="MsoNormal"&gt;&lt;b style=""&gt;&lt;i style=""&gt;&lt;span style="font-size:100%;"&gt;Семинары по написанию историй&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p face="trebuchet ms" class="MsoNormal"&gt;По моему мнению, одна из самых лучших практик. Собрать всех действующих лиц, связанных с продуктом, и совместными усилиями им устроить мозговой штурм для выявления требований и написания пользовательских историй. В результате работы такого семинара, мы получаем готовый прототип системы, который устраивает всех заинтересованных лиц, покрытый пользовательскими историями.&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;На сегодняшней встрече, посвященной этой главе, было предложена вариация практик анкетирования , наблюдения и семинара. Член команды, выполняющий роль аналитика, готовит анкету по новой функциональности, которая будет заложена в продукт, рассылает все заинтересованным лицам. После получения обратной связи устраивается семинар для мозгового штурма по поводу истории(ий). Обратная связь используется в качестве оценки построения анкеты. Таким образом, на каждой итерации построения анкеты, мастерство этого построения увеличивается. Можно завести &lt;span style="" lang="EN-US"&gt;check&lt;/span&gt;-&lt;span style="" lang="EN-US"&gt;list&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;с критериями построение анкеты.&lt;/p&gt;&lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;Послушать оригинал подкаста можно по адресу &lt;a href="http://study-group.rpod.ru/139752.html"&gt;http://study-group.rpod.ru/139752.html&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;Все подкасты по User Stories Applied можно найти на &lt;a href="http://agileguru.ru/index.php?option=com_content&amp;amp;view=category&amp;amp;id=17"&gt;AgileGuru.Ru -&gt; User Stories &lt;/a&gt;&lt;/p&gt;&lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;На этом думаю все. &lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;Всегда с Вами, &lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;Михаил Шогин&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-4821962893657219146?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/4821962893657219146/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2010/01/user-stories-applied_31.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4821962893657219146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4821962893657219146'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2010/01/user-stories-applied_31.html' title='User Stories Applied : Собираем Истории..'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-1362141996079211094</id><published>2010-01-27T15:40:00.000-08:00</published><updated>2010-01-27T15:45:54.973-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='User Stories'/><title type='text'>User Stories Applied : Начало.</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Привет. Решили, в рамках &lt;/span&gt;&lt;a href="http://study-group.net/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Agile Study Group&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; (http://study-group.net/) освоить книгу  Майка Кона - &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;User Stories Applied: For Agile Software Development&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Долго выбирали, какую книгу взять, и решили взять классику по User Stories.  Что понравилось: книга построена систематично, покрыты вопросы выявления и сбора требований,  планирования итераций, изобилует примерами, и что немало важно, имеются упражнения для размышления и обсуждения. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Может возникнуть резонный вопрос: Для чего нужны эти Ваши &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;User Stories&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;? &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Первое с чего начинается проект – это сбор требований к конечному продукту. Этот процесс подразумевает под собой взаимодействие всех членов команды. Основная проблема,  с которой сталкивается команда в процессе сбора требований - это проблема коммуникаций.  Проблемы возникают в том случае, когда происходит дисбаланс  «лагерей»: бизнес «лагеря» и технического «лагеря».  В такой ситуации преобладание одной из сил над другой отражается на проекте. Преобладание технической составляющей приводит к преобладанию технической составляющей в бизнес области, как пример, бизнес задачи описываются на техническом жаргоне.  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Что такое&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; user story&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; - это просто история, продукт методологии. Путь создания этого продукта,  причем правильный путь, как раз и позволяет соблюсти баланс сил и повысить  качество коммуникации. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Каждая User Story содержит в себе небольшую часть функциональности системы и включает в себя три аспекта:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;написание истории&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;обсуждение истории и указании напоминаний&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;тестирование истории.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Пример User Story может быть такой:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Пользователь может отправить тестовую смс-рассылку.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Просто, не правда ли? Возникают резонные вопросы:  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;А где же детали?  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Должен ли пользователь быть зарегистрирован и авторизован?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Как выглядит тестовая рассылка?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ответы на большинство этих вопросов, как ни странно, так же являются &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;User Stories&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Что же получается, мы разбиваем все наши большие истории на маленькие. Согласитесь, маленькую задачу проще и быстрее реализовать и получить feedback, нежели большую. Правда нет необходимости разбивать большие истории на маленькие до бесконечности, всему есть придел.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;После принятия истории, мы можем указать какие либо напоминания, которые критичны для этой истории, и перейти к следующей.  Главный конек этого процесса, заключается в том, что мы вернемся к деталям user story, тогда когда настанет час ее реализации.  Получается простая, гибкая и удобная схема: бизнес выбирает историю на итерацию, разработчик берет историю и идет к заказчику, обсуждаются детали истории, с учетом измененных требований. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Если мы вспомним аспекты присущие user story, то вспомним третий пункт – тестирование.  Помимо напоминаний, каждая карточка истории содержит приемочный тест для этой истории. Как правило тест записывается на оборотной стороне карточки. Тест помогает разработчику не уйти от основной линии функциональности и остановится в нужный момент – тест зеленый. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;В начале статьи было отмечено, что у нас есть два «лагеря» - бизнес и it. Оба лагеря участвуют в сборе требований – мозговом шторме, но писать истории – это ответственность заказчиков. Все дело в том, если доверить написание истории it отделу, то мы получим историю, описанную техническим жаргоном. Такую историю будет тяжело понимать людям не связанным с технической областью. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;После того как истории написаны, можно перейти к планированию релизов. К этому моменту, технический отдел выставил каждой истории стоимость(velocity). Бизнес отдел выставляет истории приоритеты (запрещается ставить приоритет без стоимости истории ) и принимает решение о том, какая история попадет в текущую итерацию. В зависимости от выбора историй, технический отдел может менять стоимость ( такая ситуация может возникнуть, когда стоимость истории была оценена с учетом истории, которая еще не выполнена).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Закончим наше начало на приемочном тестировании.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Приемочное тестирование это процесс проверки того, что user story реализована так, как задумывалась. Приемочное тестирование должен делать заказчик истории: только он обладает полной информацией об истории. Рекомендуется писать приемочный тест до окончания итерации. Раннее написание теста позволяет сократить доработки истории в будущем.  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Подводя итоги, скажем о некоторых плюсах использования user stories:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;акцентируют внимание на живом общении, взамен письменному взаимодействию&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;позволяют разбить  реализацию на небольшие шаги, достаточные для построения плана проекта&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;работают в итеративном процессе&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;используются для планирования итерации.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;В дальнейших статьях, постараюсь покрыть затронутые вопросы глубже.  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ссылка на подкасты&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://agileguru.ru/index.php?option=com_content&amp;amp;view=article&amp;amp;id=54:userstoryapplied1&amp;amp;catid=17:userstoriesapplied"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;User Stories Applied - 1. Введение&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-1362141996079211094?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/1362141996079211094/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2010/01/user-stories-applied.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/1362141996079211094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/1362141996079211094'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2010/01/user-stories-applied.html' title='User Stories Applied : Начало.'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-4498410344170447071</id><published>2009-12-26T17:05:00.001-08:00</published><updated>2009-12-26T17:05:36.681-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Балдеющие от адреналина'/><title type='text'>Балдеющие от адреналина и зомбированные шаблонами. Паттерн 2</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Всем привет. Продолжаю рассматривать книгу балдеющие от адреналина. И сегодня рассмотрим второй паттерн. Называется он &amp;laquo;На старт&amp;raquo;. В лучших традициях по названию не возможно понять смысл паттерна. В паттерне рассматриваются проектные или командные собрания. &lt;span&gt;&amp;nbsp;&lt;/span&gt;Как у Вас проходят собрания? Все ли Вам нравится? Принимаются ли решения? Принимаются ли конкретные шаги для решения вопроса?&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Есть команды, которые начинают реализовывать принятые на собрании решения, еще до окончания собрания. Это как правило, те шаги которые легко решаются с помощью современных технологий. К этому же классу задач относятся те задачи, которые дешевле &lt;span&gt;&amp;nbsp;&lt;/span&gt;решить , чем перенести и поставить напоминание. Например, списаться с&lt;span&gt;&amp;nbsp; &lt;/span&gt;кем-нибудь, поправить приоритеты, что-нибудь в этом духе.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Чаще же, оперативная команда, &lt;span&gt;&amp;nbsp;&lt;/span&gt;начинает реализовывать принятые решения, сразу же по окончании, собрания. &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Не надо, конечно же, превращать собрание в &lt;span&gt;&amp;nbsp;&lt;/span&gt;место, в котором все принятые решения, сразу же исполняются,&lt;span&gt;&amp;nbsp; &lt;/span&gt;просто надо понять, что команда приступает у работе сразу же.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Оперативные команды обладают характерными чертами:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- в таких командах не принято переносить задачи. В отсрочках эти команды видят реальную угрозу проекту.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Они стремятся выводить продукт настолько быстро, насколько это возможно, при сохранении должного качества. Сразу же появляются аналогии с &lt;span lang="EN-US"&gt;GTD&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;техниками. Если кто не знает, может послушать курс подкастов. В GTD есть техника разбора всей приходящей информации. Мы начинаем разбирать приходящие, не зависимо от приоритетов. Т.е. если мы взяли какую-то информацию, то не имеем права ее отложить и должны принять по этой информации конкретное решение. Что мы имеем на практике? А ничего, если нет состоявшейся команды, то один человек может внести сомнения по поводу рассматриваемой задачи и этим самым повлиять на перенос или отсрочку.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;- в таких командах верят в возможности каждого в отдельности и &lt;span&gt;&amp;nbsp;&lt;/span&gt;команды в целом. Под этим подразумевается уверенность в правильности командных и индивидуальных решений. Тут главное не переборщить и не переоценить свои силы. В границе команды, переоценить силы трудоемкая задача, если, конечно же, рассматриваемая команда не сборище балдеющих от адреналина. В случае индивидуальной уверенности, то требуется хорошая интуиция и большой опыт, что бы реально&lt;span&gt;&amp;nbsp; &lt;/span&gt;оценивать свои возможности. Однако желать сделать лучше, чем ты реально можешь, &lt;span&gt;&amp;nbsp;&lt;/span&gt;будет способствовать достижению больших результатов.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Поговорив о плюсах, было не честно не сообщить об антипаттернах.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Иногда мы не можем принять решения, так как думаем, что нам не хватает информации, для принятия гарантированно правильное решение.&lt;span&gt;&amp;nbsp; &lt;/span&gt;Боязнь этого, приводит к тому что на совещании принимается решение о поиске дополнительной информации по рассматриваемому вопросу. Такое ситуация приводит к затормаживанию всего процесса.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Следующий антипаттерн, это ситуация когда на совещаниях обсуждения перескакивают от вопроса к вопросу. Темы поднимаются одна за другой, но ни одна не закрывается. Этот процесс может длится месяцами, а задачи так и будут висеть мертвым грузом. При чем, постепенно забывается ситуация которая породила задачу.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Часто Вы присутствовали на совещании, и кто-то начинал рассказывать байки? В моем опыте это самое распространенное ведение совещаний. Постоянно происходит отклонение от линии. Все совещание сводится к воспоминаниям и случаям из практики, либо анекдотам и историям.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Далее хотелось бы упомянуть об архитектуре. Если на собрании присутствует человек, который любит об этом говорить, то собрание превратится к обсуждению архитектуры. Каждый рассматриваемый вопрос будет вести к дискуссиям о проектировании и архитектуре.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;И самый большой антипаттерн, это совещание для назначения дополнительного совещания. Такая вот бесконечная рекурсия.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Резюмируя, хочется сказать, что&lt;span&gt;&amp;nbsp; &lt;/span&gt;команда должна жаждать сделать дело и приступать к реализации&lt;span&gt;&amp;nbsp; &lt;/span&gt;сразу же после принятия решения.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" title="mshogin в интернете" href="http://mshogin.bestpersons.ru/invite86584"&gt;&lt;img border="0" src="http://in1.bestpersons.ru/service/infoimimg/mshogin" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-4498410344170447071?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/4498410344170447071/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2009/12/2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4498410344170447071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4498410344170447071'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2009/12/2.html' title='Балдеющие от адреналина и зомбированные шаблонами. Паттерн 2'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-7293252229202446505</id><published>2009-12-22T17:02:00.001-08:00</published><updated>2009-12-22T17:02:45.435-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Балдеющие от адреналина'/><title type='text'>Балдеющие от адреналина и зомбированные шаблонами. Начало</title><content type='html'>&lt;p class="MsoNormal"&gt;Давно меня не было в эфире. Все как-то в работе да в работе. Но тут случилось беспрецедентное событие. Я нашел отличную книгу. Не со своей помощью, конечно, с помощью одного &lt;span lang="EN-US"&gt;agile&lt;/span&gt;-&lt;span lang="EN-US"&gt;guru&lt;/span&gt;. Книга называется Балдеющие от адреналина и зомбированные шаблонами. Автор книги Том Демарко , Тимости Листер и другие соавторы. Книга включает в себя 86 паттернов командного поведения. В русском переводе издана в издательстве Символ.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Том Демарко и Тимоти Листер известны как авторы книги Человеческий фактор. Книга была издана еще в далеком 87 году, но как ни странно до сих пор имеет место быть . Мой хороший знакомый менеджер &lt;span lang="EN-US"&gt;IT&lt;/span&gt; проектов, недавно начал ее читать и был просто поражен содержанием. А когда я сказал что книга 87 года изадния…. Ну вы понимаете что было дальше .&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Вернемся к балдеющим от адреналина. Авторы книги говорят что у ней собран опыт 150 лет командных разработок. Отличные отзывы дали такие монстры &lt;span lang="EN-US"&gt;IT&lt;/span&gt; мира как Алистер Коберн, Эд Йордон и многие другие.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Во введение авторы рассуждают о том что нас с вами делает людьми и отличает от всего остального. Я конечно не философ, всех рассуждений не знаю, но думаю что это мне подойдет для дальнейшей жизни. Так что же это? Оказывается все очень просто. Сугубо человеческое свойство – это абстрактное мышление. Что же такое абстракция и почему она сугубо человеческая? На эти вопросы лучше ответят философы, если конечно хватит сил выслушать все, что они скажут. Однако краткую притчу я все же процитирую: «Когда-то давным-давно, в доисторические времена, далекий предок человека уставился на что-то смутно знакомое – и вдруг его озарило: «Эге!.. Да это же опять тот-самый-какбишь-его!». Вот и все! Вот и появился человек!&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;А животные не могут это сделать. Хотя можно сказать: «Как же так, собака отлично распознает момент когда Вы пойдете с ней гулять». А например моя кошка отлично знает момент когда можно попросить пить (у нее форма морды приплюснутая, она не может пить из блюдца, потому пьет из крана, а кран надо открыть) . Однако, даже при такой способности распознавать ни моя кошка, ни Ваша собака не могу обобщить: «Эге!.. Да это же опять тот-самый-какбишь-его!». Для этого требуется абстрактное мышление.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;А теперь собственно первый паттерн. Кстати интересное замечание прочитал о слове паттерн.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;С английского паттерн переводится как шаблон. Понятие Шаблон устоялось в литературе, посвященной шаблонам проектирования в программировании. Означает буквальное воспроизведение тех или иных практик. В тоже время слово паттерн, находится в компетенции психологов, и означает узнаваемые в общих чертах совокупности признаков. Хотя последнее время, когда мы говорим о шаблонах проектирования, мы чаще используем слово паттерн. Если посмотреть на способы реализации шаблонов &lt;span lang="EN-US"&gt;GoF&lt;/span&gt;, то можно увидеть, множество различных вариантов, зависящих как от технологии, так и от человека. И в конечном итоге мы получаем узнаваемые в общих чертах совокупности признаков.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Итак. Первый паттерн.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Звучит он просто «Балдеющие от адреналина!»&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Буквально это означает – «Перманентный факап!» Определяется тем, что абсолютно все зачади в проекте мега-срочные. Не срочных проблем просто нет. Если появляется проблема, то она имеет два пути:&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;1 – перводится в статус «Мега срочная» и остается жить&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;2 – ставится статус «не срочная» и умирает до следующего случайного обнаружения&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;В таком проекте, отсутствует стратегическое мышление, и как правило даже минимальный среднесрочный план. Приоритеты постоянно меняются, задачи идут постоянным потоком, сроки выполнения задач – «все нужно вчера».&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Балдеющие от адреналина убеждены, что лучший подход это не планирование, а что есть силы бежать вперед, не зависимо от качества. Самое ужасное, что такая отчаянная спешка расценивается как эффективность.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;У большинства балдеющих от адреналина есть очень слабое место – это герой (без него ни как), который принимает все решения при разработке, является единственным источником требований, определяет всю архитектуру проекта, грубо говоря берет на себя все.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Лирическое отступление. Я когда прочитал этот отрывок, я был просто в шоке, я увидел себя в нем. Еще каких то 8-9 месяцев назад, я вел себя именно так. Потом, по счастливому случаю, я нашел &lt;span lang="EN-US"&gt;&lt;a href="http://study-group.net/"&gt;http&lt;span lang="RU"&gt;://&lt;/span&gt;study&lt;span lang="RU"&gt;-&lt;/span&gt;group&lt;span lang="RU"&gt;.&lt;/span&gt;net&lt;/a&gt;&lt;/span&gt;, познакомился с умными, профессиональными людьми. Узнал что такое &lt;span lang="EN-US"&gt;Agile&lt;/span&gt;, начал читать книги, занимался одно время с ребятами. И стал понимать, что мое поведение – как то не очень накладывается на то что называется «лидер», «команда», «профессионал». Стал читать еще больше. Сейчас я могу смело сказать что в профессиональном плане я сильно изменился, и уже стараюсь избавится от вредных профессиональных привычек. Но дается это тяжело. Кстати, подкасты это один из самых действенных способов поменять свое мышление. Почему? Потому что записывая подкаст, ты тщательно прорабатываешь материал, осознаешь его еще больше и он откладывается у тебя в подсознании. Получается само-программирование. Да и к тому же, твои коллеги всегда могут тебя отправить слушать твой же подкаст, если ты ведешь себя не так как говоришь.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Отступление закончилось )) Конечно, балдеющие от проекты вполне могут быть успешными, есть некоторые примеры. Но надо понимать, что если проект останется рабочим и будет иметь успех, то рано или поздно порядок в нем наводить придется. И насколько это будет болезненно, предсказать трудно.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Такие проекты не мыслят а реагируют. В результате чего, в проекте нет ничего постоянного. Все устаревает в тот же момент как создается, а пересоздается, и пересоздается еще раз.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Такая ситуация является болезнью проекта и эта болезнь не лечится, = разве что попробовать избавится от адреналиноголиков и заменить их на руководителей которые понимают что работа наиболее эффективна только тогда ,когда не находится в чрезвычайном положении.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Опять отступление. В нашем проекте мне повезло тем, что я начал сам применять попытки изменится и у нас появился руководитель. Он начал менять проект, процесс и честно говоря, эти изменения пошли на пользу как проекту так и людям.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;И в заключении: «Пока на смену срочности не придет расстановка приоритетов и сдержанность, тягу к адреналину вряд ли удастся истребить.&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Оригинал подкаста можно послушать здесь http://personal-agile.rpod.ru/134648.html&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-7293252229202446505?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/7293252229202446505/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2009/12/blog-post.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/7293252229202446505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/7293252229202446505'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2009/12/blog-post.html' title='Балдеющие от адреналина и зомбированные шаблонами. Начало'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-6494594588581815430</id><published>2009-11-21T06:50:00.001-08:00</published><updated>2009-11-21T06:50:51.966-08:00</updated><title type='text'>Надо бросать курить</title><content type='html'>&lt;table width="250" height="143" cellpadding="0" cellspacing="0" border="0" style="background: url(http://vid-1.rian.ru/ig/smoke/back2.gif) center no-repeat;"&gt;&lt;tr align="center"&gt;&lt;td style="padding: 10px 0 0 0; font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#000; font-size: 16px;" colspan="3"&gt;&lt;b&gt;Если я брошу курить сегодня,&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="82" align=" right" style="padding: 7px 0 0 0; font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#000; font-size: 14px;"&gt;то за&lt;/td&gt;&lt;td width="71" align="center" style="font-family: Georgia, Times, serif; color:#000; font-size: 34px;"&gt;45&lt;/td&gt;&lt;td width="97" style="font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#000; font-size: 14px;"&gt;лет&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td colspan="3" style="padding: 10px 0 0 0; font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#000; font-size: 14px;"&gt;сэкономлю&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td colspan="3" style="padding: 0 0 5px 0; font-family: Georgia, Times, serif; color:#863d1d; font-size: 34px;"&gt;492750&lt;span style="font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#863d1d; font-size: 14px;"&gt;  руб.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center"&gt;&lt;td style="padding: 0 0 10px 0; font-family: Myriad Pro, Arial, Helvetica, sans-serif; color:#000; font-size: 14px;" colspan="3"&gt;&lt;a href="http://www.rian.ru/infografika/20091119/194497431.html" style="color: #863d1d;" title="Узнай, сколько сэкономишь ты!"&gt;Сколько можно заработать, отказавшись от курения&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-6494594588581815430?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/6494594588581815430/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2009/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/6494594588581815430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/6494594588581815430'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2009/11/blog-post.html' title='Надо бросать курить'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6255636852442610102.post-4846849248825902820</id><published>2009-07-19T04:25:00.000-07:00</published><updated>2009-07-19T04:59:17.111-07:00</updated><title type='text'>Календарик одним sql запросом</title><content type='html'>Помнится, когда я устраивался на работу, мой бывший начальник на собеседовании попросил написать запрос - получить календарь. Насколько помню, я сразу честно сказал - что на данном этапе знания sql - это просто impossible.&lt;br /&gt;&lt;br /&gt;Через некоторое время пришлось столкнуться с календариком - и как то я его нарисовал ;). Сегодня полез в пакет и наткнулся на то, что у меня тогда получилось ))&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;select &lt;br /&gt;    mon, tue, wed, thu, fri, sat, sun &lt;br /&gt;from (&lt;br /&gt;    select&lt;br /&gt;          lv4group,&lt;br /&gt;          max(mon) mon,&lt;br /&gt;          max(tue) tue,&lt;br /&gt;          max(wed) wed,&lt;br /&gt;          max(thu) thu,&lt;br /&gt;          max(fri) fri,&lt;br /&gt;          max(sat) sat,&lt;br /&gt;          max(sun) sun&lt;br /&gt;    from (&lt;br /&gt;          with tr as (&lt;br /&gt;                 select add_months(sysdate, 0) base from dual&lt;br /&gt;         )&lt;br /&gt;         , month_days as (&lt;br /&gt;                 select&lt;br /&gt;                      mod(lv,7) lv4weekday,&lt;br /&gt;                      case &lt;br /&gt;                          when mod(lv, 7) = 0 &lt;br /&gt;                          then lv/7 -1 &lt;br /&gt;                          else floor(lv/7) &lt;br /&gt;                      end lv4group,&lt;br /&gt;                      case&lt;br /&gt;                         when &lt;br /&gt;                              curd between trunc(base, 'mm') &lt;br /&gt;                                      and last_day(base)&lt;br /&gt;                         then curd&lt;br /&gt;                         else null&lt;br /&gt;                      end mthd&lt;br /&gt;                  from (&lt;br /&gt;                       select&lt;br /&gt;                            level lv,&lt;br /&gt;                            base,&lt;br /&gt;                            mind + level - 1 curd&lt;br /&gt;                       from (&lt;br /&gt;                            select&lt;br /&gt;                                  base,&lt;br /&gt;                                  trunc(trunc(base, 'mm'), 'd') mind,&lt;br /&gt;                                  trunc(last_day(base), 'd') maxd&lt;br /&gt;                            from tr&lt;br /&gt;                       ) t&lt;br /&gt;                       connect by mind + level &lt;= maxd + 7&lt;br /&gt;                  ) t&lt;br /&gt;          )&lt;br /&gt;          select&lt;br /&gt;               lv4group,&lt;br /&gt;               decode(lv4weekday, 1, mthd) mon,              &lt;br /&gt;               decode(lv4weekday, 2, mthd) tue,&lt;br /&gt;               decode(lv4weekday, 3, mthd) wed,             &lt;br /&gt;               decode(lv4weekday, 4, mthd) thu,&lt;br /&gt;               decode(lv4weekday, 5, mthd) fri,&lt;br /&gt;               decode(lv4weekday, 6, mthd) sat,&lt;br /&gt;               decode(lv4weekday, 0, mthd) sun&lt;br /&gt;         from  month_days&lt;br /&gt;    )&lt;br /&gt;    group by lv4group&lt;br /&gt;    order by lv4group&lt;br /&gt;); &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6255636852442610102-4846849248825902820?l=shogin-michael.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://shogin-michael.blogspot.com/feeds/4846849248825902820/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://shogin-michael.blogspot.com/2009/07/sql.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4846849248825902820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6255636852442610102/posts/default/4846849248825902820'/><link rel='alternate' type='text/html' href='http://shogin-michael.blogspot.com/2009/07/sql.html' title='Календарик одним sql запросом'/><author><name>Шогин Михаил</name><uri>http://www.blogger.com/profile/14369966185004546420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='http://2.bp.blogspot.com/_z78QvFOum_E/SeoKvhcv2mI/AAAAAAAAAAM/dpIpt6-GnvE/S220/joni.jpg'/></author><thr:total>0</thr:total></entry></feed>
