<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>developers.org.ua &#187; Алексей Кривицкий</title>
	<atom:link href="http://www.developers.org.ua/archives/author/krivitsky/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.developers.org.ua</link>
	<description>сообщество программистов</description>
	<pubDate>Mon, 08 Sep 2008 09:44:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Гибкий подход разработки ПО – Scrum</title>
		<link>http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/</link>
		<comments>http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 06:38:18 +0000</pubDate>
		<dc:creator>Алексей Кривицкий</dc:creator>
		
		<category><![CDATA[Статьи]]></category>

		<category><![CDATA[Управление проектами]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[Scrum]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/index.php?p=1394</guid>
		<description><![CDATA[И как всё это касается меня – разработчика?]]></description>
			<content:encoded><![CDATA[<p>И как всё это касается меня – разработчика?</p>
<div style="margin-left:75px;">
<p>Вам нравится разрабатывать фичи, которые никто не будет использовать?</p>
<p>Вам нравится работать по проектному плану, в который вы не верили с самого начала?</p>
<p>Вам нравится кодировать архитектуру, которую кто-то продумал до вас, и в которой вы видите множество недостатков?</p>
<p>Вам нравится работать в группе людей, где вы чувствуете себя одиночкой?
</p></div>
<p>Я пишу это для тех, кто отрицательно ответил на перечисленные вопросы.</p>
<p>В Рунете вы можете найти множество статей и обзоров гибкой разработки, в частности XP и Scrum. Это ещё одна. Чем же она отличается?</p>
<p>Отличается она тем, что нацелена на аудиторию разработчиков, которым как мне подсказывает мой опыт объяснить выгоды от применения гибких подходов (или agile software development) намного сложнее, чем менеджерам проектов или представителям стороны заказчиков.</p>
<p>Ещё она отличается тем, что написана по просьбе моих друзей специально для <a href="http://www.developers.org.ua/">developers.org.ua</a>.</p>
<p>Так, хватит воды. Перехожу к сути.</p>
<p>Кстати, на счёт воды&#8230; Подходы ведения проектов, которые ставят в сравнение с гибкими подходами называют водопадными (или каскадными). Их так называют потому, что артефакты таких проектов перетекают от отдела к отделу как вода на каскадах водопада. Очевидно, что пересогласование требований или перерисовка архитектуры в таком проекте тем сложнее, тем больше утекло воды с момента написания такого документа. Признаками такого проекта являются горы документов, функциональная разбивка компании (отдел разработки, отдел тестирования&#8230;), заранее принятые решения и далеко идущие (и уже возможно устаревшие) планы.</p>
<p>Всё это не так плохо, если помогает эффективной работе. Часто же ей это вредит. Лучшее враг хорошего?</p>
<p>Давайте теперь разберёмся с аджайлом и в частности Скрамом.</p>
<p><strong>Скрам</strong> – это подход управления проектами (при чём не только по разработке ПО), который предлагает каркас, в рамках которого вы можете строить свой agile процесс, адаптирую его части по ваши нужды. Это не конструктор, но цельный набор хороших практик, с которого часто легче начать, нежели с нуля.</p>
<p>Приходилось ли вам учить новый язык программирования или какой-то API, начиная с примера в мануале и переделывая его по ходу под ваши нужды?  В итоге в конечном коде возможно не останется ни одной строки, которая была в начальном примере. Тем не менее использовать за основу простой работающий пример было удобно. То же самое и со Скрамом. Примените, отладьте, поломайте, почините, потом смело меняйте на ваш вкус.</p>
<p>Итак, Скрам – это термин из регби, означающий так называемую «свалку», когда все члены команды собираются в кучу.</p>
<p>Гибкая разработка ПО по принципу свалки&#8230;.</p>
<p>Давайте лучше называть это Скрамом или «командным подходом».</p>
<p><strong>Правила</strong> просты для озвучивания (но зачастую не так просты в реализации):</p>
<p><strong>1.</strong> У вас должен быть один человек в проекте, который уполномочен принимать решения о том, какую фичу стоит разрабатывать раньше, какую позже.</p>
<p>«Кто платит, тот и музыку заказывает».</p>
<p>Обычно этот человек работает на стороне заказчика. Или является бизнес аналитиком. Или быть может синхронизирует взгляды различных заинтересованных в разрабатываемом продукте заказчиков.</p>
<p>В любом случае разработчикам проще, если такой человек есть, он доступен, и он такой один на проект (во избежание конфликтов).</p>
<p>Его называют «Product Owner» (оставим без перевода)</p>
<p><strong>2.</strong> Product Owner поддерживает список требований-пожеланий к продукту. Этот список он сортирует (приоритезирует) по принципу «ценное сверху, менее ценное снизу».</p>
<p>Такой список называется «Product Backlog» (без перевода).</p>
<p><strong>3.</strong> Собираясь на планирование короткой фазы проекта (итерации или «спринта» – дословно забега на короткую дистанцию), команда (а это все те, кто влияют на разрабатываемый продукт – архитекторы, дизайнеры, разработчики, тестировщики) выбирают из Product Backlog ту верхнюю часть, которую они считают, что реально начать и закончить (!) за этот короткий выделенный период. </p>
<p>Так как часто для принятия подобных решений требуется пожертвовать детализацией фич, Product Owner принимает активное участие в подобном планировании.</p>
<p>Таким образом заказчик и команда принимают удовлетворяющие всех решения: заказчик ожидает получить некий ценнейший набор функционала за довольно короткое время, команда же получает план, в который верит.</p>
<p><strong>4.</strong> По истечению оговоренного срока команда и заказчик встречаются для просмотра и обсуждения результатов. Это называется демонстрацией («де-монстрация» – изгонение монстров из софта).</p>
<p>На выходе такого митинга мы имеем а) уменьшенные риски, за счёт доказательства работоспособности команды, технологий и требований; б) новые идеи по развитию нашего продукта (вряд ли он готов к продаже после двухнедельной работы); в) доверие заказчика и команды к друг другу. </p>
<p><strong>5.</strong> После всей перечисленной тяжёлой работы команда собирается и обсуждает серию экспериментов и задач, которые она думает ей помогут более эффективно работать в течение следующей итерации (спринта).</p>
<p>Это называется ретроспектива (дословно «просмотр прошедшего»; или что-то в этом роде –  лингвисты поправят).</p>
<p><strong>6.</strong> Забыл сказать – во время спринта членам команды скорее всего придётся синхронизировать свои усилия и помогать друг другу для более слаженной работы и достижения общего результата. Говорят, что хорошо это делать раз в день в течение 10-15 минут в присутствии всех членов команды. Это и называется Скрамом.</p>
<p><strong>7.</strong> Во время подобного обсуждения члены команды могут пожаловаться на проблемы, которые они не в силах устранить (падает сервер, пропадает интернет, слишком тёплое пиво&#8230;) Эти проблемы помогает устранить так называемый ScrumMaster – человек, который понимает принципы и тонкости Скрама, командной работы и «нежного лидерства». Он делает всё, чтобы команда максимально эффективно общалась с заказчиком, между собой и достигла своих обещаний и целей.</p>
<p>Такие вот правила. Или скорее хорошие практики, которые, работая вместе, помогают достичь отличных результатов, построить хорошие и честные отношения с заказчиками и в команде, получить удовольствие и удовлетворение от работы. Они, как мне кажется, дают шанс каждому разработчику подняться на ещё одну ступеньку профессионализма.</p>
<div style="margin-left:75px;">
<p>Вам нравится разрабатывать фичи, которые никто не будет использовать?<br />
<em>У нас нет такой проблемы. В Скраме мы разрабатываем только наиболее важные с точки зрения заказчиков и конечных пользователей фичи. Очень вероятно, что наш проект успешно завершится до того момента, когда в беклоге останутся только низкоприоритетные фичи. Тем лучше!</em></p>
<p>Вам нравится работать по проектному плану, в который вы не верили с самого начала?<br />
<em>У нас нет такой проблемы. В Скраме мы работаем по плану, который мы сами обговорили с заказчиками и в который сами верим. К тому же, мы строим наши планы на довольно короткие интервалы. Так что если что-то и пойдёт не так, как мы думали, то у нас будет возможность внести коррективы и успешно сдать проект. Да, кстати, разработчики у нас на проекте сами выбирают задачи, над которыми им работать.</em></p>
<p>Вам нравится кодировать архитектуру, которую кто-то продумал до вас, и в которой вы видите множество недостатков?<br />
<em>У нас нет такой проблемы. В нашем Scrum-проекте наш архитектор постоянно доступен и сидит с нами в одной комнате, так что у нас всегда есть возможность повлиять на принятие решений. К тому же, благодаря таким практикам как refactoring и unit-testing, нам не приходится продумывать все архитектурные решения наперёд – мы знаем, что сможем ввести в код практически любые изменения без поломок продукта и существенных задержек в отладке.</em></p>
<p>Вам нравится работать в группе людей, где вы чувствуете себя одиночкой?<br />
<em>У меня нет такой проблемы. Мне всегда готовы прийти на помощь, как в прочем и я. Мы все ежедневно обсуждаем чем друг другу помочь. У нас же общая цель! Какие там одиночки.</em></p>
<p><em>9 июля 2008<br />
Алексей Кривицкий для <a href="http://www.developers.org.ua/">developers.org.ua</a><br />
<a href="mailto:alexey@scrumguides.com">alexey@scrumguides.com</a><br />
<a href="http://www.scrumguides.com/">www.scrumguides.com</a> – тренинги и эффективное внедрение Scrum</em></div>
<br/><a href="http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/308?ref=dou_rss">Senior .NET Developer, EPAM</a>
  (EPAM Systems, Kiev, Kharkov, Lviv, Dnepropetrovsk)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Велик и могуч&#8230; термин «agile»</title>
		<link>http://www.developers.org.ua/archives/krivitsky/2007/04/05/agile-what/</link>
		<comments>http://www.developers.org.ua/archives/krivitsky/2007/04/05/agile-what/#comments</comments>
		<pubDate>Thu, 05 Apr 2007 15:48:33 +0000</pubDate>
		<dc:creator>Алексей Кривицкий</dc:creator>
		
		<category><![CDATA[Статьи]]></category>

		<category><![CDATA[Управление проектами]]></category>

		<category><![CDATA[Учеба]]></category>

		<guid isPermaLink="false">http://www.developers.org.ua/archives/krivitsky/2007/04/05/agile-what/</guid>
		<description><![CDATA[Из серии «Об agile по-русски».
Прозрачность и осознанность – одни из чуть ли не главных особенностей agile-подходов в разработке программного обеспечения, поэтому наличие адекватного русского термина сделало бы очевидным их преимущества над другими подходами и методологиями.
Но начнем пока с «начала».
&#8220;Начало начал&#8221;. Притча.
Сначала программистов было мало, их ценили. Но также ценили компьютерное время, так как компьютеров было [...]]]></description>
			<content:encoded><![CDATA[<h2>Из серии «Об agile по-русски».</h2>
<p>Прозрачность и осознанность – одни из чуть ли не главных особенностей agile-подходов в разработке программного обеспечения, поэтому наличие адекватного русского термина сделало бы очевидным их преимущества над другими подходами и методологиями.</p>
<p>Но начнем пока с «начала».</p>
<h2>&#8220;Начало начал&#8221;. Притча.</h2>
<p>Сначала программистов было мало, их ценили. Но также ценили компьютерное время, так как компьютеров было ещё меньше, чем программистов. Поэтому так важно было не отпускать программиста далеко от себя, общаясь с ним, выясняя и проясняя требования к программному продукту по ходу его разработки, чтобы таким образом уменьшить количество подходов к компьютеру, сэкономив компьютерного и программистское время. Это были время, когда программисты работали тесно с заказчиками.</p>
<p>По мере увеличения числа компьютеров и программистов, ценность компьютерного времени, а также и личного времени программистов упала. Заказчики стали все реже общаться с программистами, и в самых экстремальных случаях это свелось к описанию требований в бумажном варианте. Эти изменения в отношениях привели к осложнению кооперации между программистами и заказчиками, и вылились в тяжелые переговоры в начале проекта по согласованию всех требований и сроков.</p>
<p>Появились контракты.</p>
<p>Программиста обязали разрабатывать программные продукты так, чтобы продукт отвечал всем функциональным и нефункциональным требованиям, обговоренным до подписания проекта, дать точные оценки времени и, к тому же, выполнить свои обещания по требованиям и срокам. Программисты в свою очередь, зная изменчивость желаний заказчиков и пытаясь обезопасить свои обещания, стали требовать того, чтоб заказчики подписывались под тем, что они не будут вносить изменений в требования.</p>
<p>Таким образом ситуация пошла против природной нестабильности требований к ПО.</p>
<p>И.. и вместо того чтобы попытаться не терять связь с заказчиком и попробовать вернуть ситуацию в адекватное русло, большинство проектных команд стали усложнять контракты, растягивая фазы согласования требований, и в самых экстремальных случаях это свелось к тому, что требования устаревали ещё не будучи согласованными.</p>
<p>Так пришла эпоха тяжеловесных методологий, как их теперь называют, базирующихся на финализированных спецификациях и подписанных контрактах.</p>
<p>Так работало множество проектных команд. Проекты закрывались, погрязнув в согласованиях и уточнениях спецификаций, так ничего полезного в итоге и не разработав.</p>
<p>Но было и меньшинство, которое пыталось адаптировать процесс разработки под динамику рынка, сохранив тесные и конструктивные отношения с заказчиками. Эти команды понимали ценность подобного подхода, ибо в условиях развития рынка, повышения конкурентной борьбы, усложнении технологий и требований к ПО, гибкость и динамичность в согласованном принятии решений были единственным выходом.</p>
<p>Прошло 20 лет, технологии усложнились на порядки; толерантность к стабильности требований уменьшилась и стала измеряться неделями; глобализация 21-го века заставила команды стать распеделенными&#8230; Эти и прочие факторы повлияли на увеличение популярности подходов, которые в противовес контрактам, спецификациям, долгосрочному планированию, сложным метрикам оценки качества и прогресса ставили во главу угла кооперацию, профессионализм, доверие к людям и конечный результат труда - сам программный продукт.</p>
<p>Необходимость тесного общения стала ещё острее за последнее десятилетие в рамках оффшорной разработки, где эти методы уже успели доказать свою компетентность.</p>
<h2>В поисках крепкого словца&#8230;</h2>
<p>Сегодня на территории русскоговорящих стран работают сотни команд, которые ценят и следуют вышеописанным принципам и подходам, поэтому наличие термина, который бы охарактеризовывал ценности agile-подходов (дабы этот смысл не был утерян) был бы весьма полезен.</p>
<p>Если попробовать охарактеризовать разные стороны этих подходов, то выйдет нечто следующее:</p>
<p>«Облегченность» (или «Легковесность»)</p>
<p>Agile подходы – облегченные подходы в сравнении в тяжеловесными методологиями, которые базируются на различных спецификациях, планах, протоколах, отчетах, утяжеляя тем самым и без того нелёгкую работу проектных команд.</p>
<p>«Гибкость»</p>
<p>Agile подходы гибки, потому что, вместо выставления порой невыполнимых условий по замораживанию требований к продукту, они принимают неустойчивость требований как факт и делают все, чтобы заказчик в любой момент мог изменить курс проекта, базируясь на оценке эффективности финансовых вложений.</p>
<p>«Адаптивность»</p>
<p>Эти подходы адаптивны (в противовес детерминированным подходам), потому как они не пытаются предсказать все наперед, оградив себя от реальности, – они принимают далёкое будущее как неизвестность, ограничивая горизонт принятия решений до обозримых сроков, чаще всего измеряемых от пары недель до пары месяцев. Они прокладывают себе дорогу в будущее короткими но контролируемыми перебежками, учась на своих ошибках и адаптируя общее понимание проблем и решений под наиболее острые сегодняшние нужды.</p>
<p>«Прозрачность»</p>
<p>Из-за акцентирования внимания участников проекта на ощутимых результатах вместо замыливания внимания различными моделями, расчетами, статистикой, эти подходы делают прогресс проекта видимым и понятным, давая заказчикам полный контроль над курсом проекта ради оптимизации финансовых выходов. Проблемы и риски становятся видимыми, позволяя быть вовремя решёнными совместными усилиями проектных команд и заказчиков.</p>
<p>«Проворность»</p>
<p>Они проворны, расторопны, шустры и подвижны, так как в отличие от предопределенных процессов, которым порой нужны долгие месяцы для решения сложных и порой весьма абстрактных задач, они прикладывают все усилия команды и заказчика на решение наиважнейших задач, демонстрируя реальные результаты в максимально короткие сроки.</p>
<p>«Осмысленные»</p>
<p>Весь процесс принятие решений в этих подходах базируется только на здравом смысле. Устаревшие планы, обещания, политические прения – все это вытесняется здравыми решениями, базирующимися на реальных данных.</p>
<h2>Итого</h2>
<p>«Облегченногибкие адаптивнопроворные прозрачныеосмысленные методологии разработки программного обеспечения»&#8230;</p>
<p>Похоже тяжело найти подходящий термин в русском языке (я не говорю, что это невозможно), который бы передал все ценности и значения, вкладываемые в слово «agile» в контексте подходов к разработке ПО.</p>
<p>Но если пока не существует адекватного термина, который бы напоминал о многосторонней сути agile-подхода, то, следуя «здравому смыслу, который базируется на реальных данных», стоит использовать существующее множество терминов, варьируя различные аспекты agile для той или иной ситуации.</p>
<p>Вы хотите помочь команде, которая тонет в бюрократии и бумагообороте, не сдвигаясь с места в разработке ПО? Попробуйте объяснить преимущества agile-подхода, базируясь на аспекте «облегченности».</p>
<p>Вам жалуются на то, что команда отклоняет изменения в требованиях, ссылаясь на контракт и указывая на утвержденную процедуру change request management, из-за чего разрабатываемых продукт не будет максимально полезен заказчикам и пользователям? Поговорите с ними об аспекте «гибкости».</p>
<p>Вам говорят, что нужно все предусмотреть сразу и спланировать наперед, иначе наступит хаос? Адаптивность – возможно самый важный аспект, который нужно понять данной команде, чтобы осознать преимущества agile.</p>
<p>У заказчиков проблемы с пониманием прогресса проекта - команда говорит, что разрабатывает какой-то «каркас» и сможет перейти к запрошенной функциональности только к концу квартала? Проворность подхода, пожалуй убедит заказчиков попробовать что-то другое.</p>
<p>Заказчики жалуются на задержки в поставках со стороны команды, которые становятся известны не раньше, чем за день до согласованной даты? Прозрачность agile-подходов поможет предотвратить похожую ситуацию в будущем.</p>
<p>Команда жалуется на отсутствие логики в решениях заказчика – применения agile-подходов придаст осмысленности всем принимаемым решениям, решения станут базироваться на реальных данных, известных всем.</p>
<h2>P.S.</h2>
<p>Нахождение адекватного термина в русском языке – это дело времени. Но важность сохранения многосмысловой нагрузки agile-подходов останется задачей, которая пожалуй будет актуальной всегда.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Автор: Кривицкий Алексей, <a href="http://www.krivitsky.com/2007/02/blog-post.html">alexey@krivitsky.com</a><br />
Опубликованно также на <a href="http://www.krivitsky.com/2007/02/blog-post.html">http://www.krivitsky.com/2007/02/blog-post.html</a></p>
<br/><a href="http://www.developers.org.ua/archives/krivitsky/2007/04/05/agile-what/#ratings">Оценить статью на сайте</a>.

<hr/>
<strong>Новое:</strong> мы запустили 
<a href="http://www.developers.org.ua/forum/">ФОРУМ</a>!
<hr/>
Свежая вакансия:


<a href="http://www.developers.org.ua/jobboard/747?ref=dou_rss">Программист-разработчик .NET/ MSSQL</a>
  (codasystems)

]]></content:encoded>
			<wfw:commentRss>http://www.developers.org.ua/archives/krivitsky/2007/04/05/agile-what/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
