<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>XP Injection</title>
	<atom:link href="http://xpinjection.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://xpinjection.com</link>
	<description>Inject Agile practices for project health</description>
	<lastBuildDate>Tue, 21 Feb 2012 21:31:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Что общего у холодильника и CMMI (ISO, PMBOK, …)</title>
		<link>http://xpinjection.com/2012/02/21/refrigerator-vs-cmmi/</link>
		<comments>http://xpinjection.com/2012/02/21/refrigerator-vs-cmmi/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 21:31:58 +0000</pubDate>
		<dc:creator>Сергей Поволяшко</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[CMMI]]></category>
		<category><![CDATA[ISO]]></category>
		<category><![CDATA[PMBOK]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1826</guid>
		<description><![CDATA[Давно собирался написать рецензию на статью моей коллеги «Мифы о CMMI, или кому и зачем она нужна». Причем, основной идеей рецензии хотелось сделать известное выражение о пользовании, например, бытовыми приборами &#8211; «если ничего не помогает, то прочитайте же наконец инструкцию». Как-то долго не складывалось, но холодильник сдвинул дело. Так вот, начну с холодильника. Буквально неделю <a href="http://xpinjection.com/2012/02/21/refrigerator-vs-cmmi/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Давно собирался написать рецензию на статью моей коллеги «Мифы о CMMI, или кому и зачем она нужна». Причем, основной идеей рецензии хотелось сделать известное выражение о пользовании, например, бытовыми приборами &#8211; «если ничего не помогает, то прочитайте же наконец инструкцию». Как-то долго не складывалось, но холодильник сдвинул дело.</p>
<p>Так вот, начну с холодильника. Буквально неделю назад у моих родителей случилась какая-то беда с холодильником – мигает лампочкой – о помощи просит, и морозилка плохо морозит. Поставили регулятор на более низкую температуру – не помогает, та же картина. Холодильник, к слову сказать, относительно новый и хороший. Позвали [горе]мастера. Пришел, посмотрел, подул щеки, поморщил лоб, и сказал со знанием дела – холодильник мол плохой, и ремонтировать его тяжело, скорее всего выбрасывать надо, и вообще негодяи производители делают технику на срок службы 5-7 лет, чтобы, значит, на потребителях наживаться.</p>
<p>Не буду томить перипетиями, перейду сразу к финалу. Оказывается, если почитать инструкцию, то при пониженной температуре окружающей среды (дело было в феврале, на улице минус 20-25С, отопление не справляется, в квартире плюс 16-17С), нужно поставить регулятор температуры на более высокую температуру, и все должно быть хорошо. Так и сделали, холодильник тут же отблагодарил, отключив лампочку помощи. НО, в инструкцию-то вчиталась мама, а не [горе]мастер, которому по долгу службы надо бы знать «физику процесса»!</p>
<p>Вот и напрашиваются параллели:</p>
<ul>
<li><span style="text-decoration: underline">Холодильник</span> – хорошая, но зачастую недопонятая система, то ли CMMI, то ли PMBOK, то ли другая подобная.</li>
<li><span style="text-decoration: underline">Инструкция</span> – собственно документ, описывающий систему, который надо бы читать, и иногда больше одного раза. Но что поделаешь, мы же не в сказке, напрягаться надо для понимания и корректного применения с пользой для дела. Как и рекомендовано в статье, любую сложную систему нужно начинать понимать с прочтения более легковесных, доступных материалов. Сам так делаю, помогает <img src='http://xpinjection.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
<li><span style="text-decoration: underline">Производитель</span> – орган, который придумал и поддерживает систему. Конечно он в том числе и денег хочет заработать, так же как и производитель холодильника. Но великая-то цель – применение на практике консолидированного опыта предыдущих поколений специалистов, написанного кстати пОтом и кровью. Иначе зачем нам холодильник? Давайте лед с северного полюса возить.</li>
<li><span style="text-decoration: underline">Лампочка с регулятором</span> – необходимость и способы «заточить» (по-научному &#8211; tailoring) систему под ваши нужды, чтоб она никого не напрягала, работала и была полезна.</li>
<li><span style="text-decoration: underline">[Горе]мастер</span> – без обид, это мы, делающие суждения о «работает-неработает», «плохая-хорошая» та или иная система, не разобравшись зачем она, какая к ней инструкция, и как ее правильно настроить.</li>
<li><span style="text-decoration: underline">Мама</span> – это тоже мы, но, соответственно, разобравшиеся… И заслуживающие профессионального уважения.</li>
</ul>
<p>Да, статья и комментарии к ней <a href="http://habrahabr.ru/blogs/studiobusiness/131553/" target="_blank">здесь</a>, рекомендую потратить 10 минут, оно того стоит.</p>
<div class="shr-publisher-1826"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Frefrigerator-vs-cmmi%2F' data-shr_title='%D0%A7%D1%82%D0%BE+%D0%BE%D0%B1%D1%89%D0%B5%D0%B3%D0%BE+%D1%83+%D1%85%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0+%D0%B8+CMMI+%28ISO%2C+PMBOK%2C+%E2%80%A6%29'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Frefrigerator-vs-cmmi%2F' data-shr_title='%D0%A7%D1%82%D0%BE+%D0%BE%D0%B1%D1%89%D0%B5%D0%B3%D0%BE+%D1%83+%D1%85%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0+%D0%B8+CMMI+%28ISO%2C+PMBOK%2C+%E2%80%A6%29'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Frefrigerator-vs-cmmi%2F' data-shr_title='%D0%A7%D1%82%D0%BE+%D0%BE%D0%B1%D1%89%D0%B5%D0%B3%D0%BE+%D1%83+%D1%85%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0+%D0%B8+CMMI+%28ISO%2C+PMBOK%2C+%E2%80%A6%29'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Frefrigerator-vs-cmmi%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1826" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/21/refrigerator-vs-cmmi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Успешное выступление на онлайн конференции Auto ConfeT&amp;QA 2012</title>
		<link>http://xpinjection.com/2012/02/21/successful-talk-at-auto-confetqa-conference/</link>
		<comments>http://xpinjection.com/2012/02/21/successful-talk-at-auto-confetqa-conference/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 10:15:50 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Общие]]></category>
		<category><![CDATA[ConfeT&QA]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[webdriver]]></category>
		<category><![CDATA[автоматизация тестирования]]></category>
		<category><![CDATA[видео]]></category>
		<category><![CDATA[инженерные практики]]></category>
		<category><![CDATA[презентация]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1821</guid>
		<description><![CDATA[13-15 февраля с 17 до 19 часов по московскому времени проходила онлайн конференция для специалистов по автоматизации тестирования &#8211; Auto ConfeT&#038;QA. Организаторы собрали докладчиков из России, Украины и Беларуси, которые представили на суд слушателей 10 докладов. Уровень организации был достаточно высоким, докладчикам помогали подготовиться к выступлению, репетировали с ними доклады, делали ревью презентаций. В результате <a href="http://xpinjection.com/2012/02/21/successful-talk-at-auto-confetqa-conference/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="article-left" src="/images/articles/confetqa.jpg" alt="онлайн конференция Auto ConfeT&#038;QA" /></p>
<p><strong>13-15 февраля</strong> с 17 до 19 часов по московскому времени проходила онлайн конференция для специалистов по автоматизации тестирования &#8211; <a href="http://confetqa.ru/program-auto-2012/">Auto ConfeT&#038;QA</a>. Организаторы собрали докладчиков из России, Украины и Беларуси, которые представили на суд слушателей <strong>10 докладов</strong>. Уровень организации был достаточно высоким, докладчикам помогали подготовиться к выступлению, репетировали с ними доклады, делали ревью презентаций. В результате все выступили достойно.</p>
<p>Я тоже принимал участие в качестве докладчика с докладом <a href="http://confetqa.ru/program-auto-2012/">«TDD c помощью функциональных тестов на WebDriver»</a>. Я давно хотел выступить на данную тему и как раз представилась неплохая возможность это сделать. TDD (Test Driven Development) является популярным подходом среди разработчиков. Сначала пишется тест, а только потом на основании этого теста пишется реализация. Эта практика дает много преимуществ, позволяя сосредоточиться на небольшом аспекте функциональности и автоматизировать проверку правильности его реализации. Таким образом, разработчик сразу думает о вариантах использования и реализует минимальный необходимый функционал.</p>
<p>TDD можно применять не только на уровне модульных тестов, но и на уровне функционального тестирования. Это дает возможность задуматься о структуре и особенностях функциональности еще до ее реализации. Вам не придется мучиться в попытках протестировать приложение, которое не задумывалось для тестирования (сложные локаторы, непонятная структура страниц, запутанные связки элементов). В качестве сопутствующего эффекта, TDD позволяет сократить время на ручную проверку разработчикам и автоматизировать 100% функциональных тестов.</p>
<p>Многим понятны преимущества TDD, но они не знают с чего начать. Некоторым кажется, что написание теста до появления реализации вообще невозможно. В своем докладе я рассказал не только о преимуществах и особенностях данного подхода, но и на примерах продемонстрировал, как работать с TDD на практике. Были рассмотрены варианты распределения ролей, техники написания тестов и особенности их использования. В качестве основного инструмента для тестирования использован WebDriver.</p>
<p>Доступен слайдкаст доклада:</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/11572784" width="510" height="426" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Так как я показывал живую демонстрацию, то посмотреть доклад в полном объеме можно на видеозаписи:</p>
<p><object width="500" height="375"><param name="video" value="http://static.video.yandex.ru/lite/xpinjection/jjkrj32ta9.3320/"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="noscale"></param><param name="flashvars" value="is-hq=true"></param><embed src="http://static.video.yandex.ru/lite/xpinjection/jjkrj32ta9.3320/" type="application/x-shockwave-flash" width="500" height="375" allowFullScreen="true" scale="noscale"flashvars="is-hq=true" ></embed></object></p>
<p>Лично мне понравилось несколько докладов. Отлично выступил Алексей Баранцев на тему <a href="http://confetqa.ru/program-auto-2012/#barancev">&laquo;Разработка стратегии автоматизации&raquo;</a>. Леша очень опытный докладчик, особенно в онлайн режиме. Доклад был насыщен полезными советами, которые помогут многим начать автоматизировать и снизить риски провала.</p>
<p>Яркий и живой доклад получился также у Ольги Киселевой, которая выступала первый раз. У нее была очень спорная тема <a href="http://confetqa.ru/program-auto-2012/#kiseleva">&laquo;Можно ли писать автотесты на родном языке?&raquo;</a>, которая вызвала много споров и дискуссий. Но сам доклад никого не оставил равнодушным.</p>
<p>Еще я для себя отметил доклад <a href="http://confetqa.ru/program-auto-2012/#zhariy">&laquo;Обходные пути в автоматизированом тестировании&raquo;</a>, с которым выступал Дмитрий Жарий. Не всегда получается жить в идеальном мире и к нему приходится приспосабливаться. Именно о таких способах обходить препятствия и рассказывалось в докладе. Просто и со вкусом.</p>
<p>Остальные докладчики тоже молодцы. Спасибо всем за подготовку и потраченное время!</p>
<p>Организаторы проводили голосование среди участников за лучший доклад на конференции. <a href="http://confetqa.ru/luchshie-doklady-auto-confetqa-2012/">Результаты</a> опубликовали сегодня. С отрывом в один голос я занял второе место после Алексея Баранцева. Леша благородно отказался от приза по причине причастности к организации конференции. В результате, первый приз достался мне &#8211; <a href="http://www.ozon.ru/context/detail/id/5557107/">игровая приставка Xbox 360 + сенсор Kinect</a>. Я несказанно рад этому факту! Значит, мои усилия были интересны людям и приносят пользу. А теперь мое выступление принесло пользу и мне лично. <img src='http://xpinjection.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Я буду с удовольствием выступать в очередной онлайн конференции из этой серии &#8211; <a href="http://confetqa.ru/program-chief-2012/">Chief ConfeT&#038;QA</a>. На этот раз с докладом <a href="http://confetqa.ru/program-chief-2012/#alimenkov">&laquo;Жизнь без тестировщиков: миф или реальность?&raquo;</a>. Не подумайте, я не против тестировщиков. Наоборот &#8211; я за то, чтобы они занимались интересной работой и приносили большую пользу проекту. Подробности можно будет услышать на моем выступлении.</p>
<p>Участники задавали достаточно много вопросов после доклада. Ниже вы можете найти мои ответы:</p>
<p><strong>Вопрос: <em>Какими средствами CI докладчик пользуется (советует пользоваться) наряду с TDD?</em></strong></p>
<p>Лично я уже давно почти везде пользуюсь TeamCity (http://www.jetbrains.com/teamcity/). Отличный UI, множество уникальных фичей, отличная интеграция с различными IDE, поддержка для практически всех известных мне инструментов, классная архитектура и т.д. Бесплатная версия подойдет для большей части проектов и не вызовет проблем или нехватки чего-то. На втором месте Jenkins (http://jenkins-ci.org/). Основной аргумент за него &#8211; бесплатный с огромным сообществом, а это значит куча плагинов под все, что только можно придумать. Но UI достаточно беден и нужно конфигурировать плагины самостоятельно.</p>
<p><strong>Вопрос: <em>А если ошибки возникнут потом при эксплуатации? Те тесты, которые не предусмотрели в &laquo;чек-листе&raquo;, согласованном с клиентом?</em></strong></p>
<p>То, что мы не предусмотрели, не могло быть реализовано. Оно должно быть реализовано как отдельная доработка. А там действует все тот же TDD. На любой баг или недоработку сначала пишем тест, а потом уже начинаем работу&#8230;</p>
<p><strong>Вопрос: <em>По факту все же получается, что тест пишется паралельно с реализацией?</em></strong></p>
<p>В большей части случаев (из моего опыта) тесты написать проще, чем реализацию функциональности. Поэтому тесты появляются достаточно быстро, но не полностью до начала разработки. Зато их обсуждение происходит перед началом работ, а этого хватает для получения практически всех преимуществ.</p>
<p><strong>Вопрос: <em>А какую test management system посоветуете?</em> </strong></p>
<p>В идеале &#8211; никакую. Я уже говорил о дублировании усилий на поддержку тестов и тест кейсов. Я вижу этот процесс как полную автоматизацию, поэтому предлагаю избегать использования test management систем. Они заведомо склоняют нас к дублированию.</p>
<p><strong>Вопрос: <em>Авто тесты лучше писать до разработки приложения или после и кто должен за это отвечать?</em></strong></p>
<p>Конечно же их лучше писать до разработки. В этом и есть подход TDD. Таким образом вы сможете получить весь спектр преимуществ, о которых я упоминал в докладе.</p>
<p><strong>Вопрос: <em>Что делать если UI достался от legacy проекта?</em></strong></p>
<p>Legacy код будет проблематичным для всех, включая тестировщиков. Но TDD заставляет работать над проблемами всей командой. Разработчики будут помогать победить проблемы. Вам придется разработать с течением времени тонкую прослойку над вашим нетестируемым UI и в будущем будет на порядок легче.</p>
<p><strong>Вопрос: <em>Опиши детальнее возможности инструмента testdox.</em></strong></p>
<p>TestDox &#8211; это очень простой, но удобный инструмент. Он ставится как плагин к IDE и позволяет разбирать названия тестовых методов на слова. Таким образом можно включать гораздо больше полезных данных в название теста, причем писать просто на английском языке, избегая особенностей языка программирования (подчеркиваний, camel case и прочих). Поддерживается редактирование, список тестов, создание новых тестов. Таким образом, данный плагин приближает вас на шаг к тестам в качестве документации. Остается только подключить мозг. <img src='http://xpinjection.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Вопрос: <em>Что ты думаешь по поводу BDD?</em> </strong></p>
<p>BDD &#8211; отличная практика, которая является подмножеством TDD. Вместо тестов рекомендуется начинать с поведенческих шаблонов приложения, причем оформлять их в человеческом виде (в основном предложениями английского языка). Не всегда дополнительные расходы времени на специализированный инструмент действительно оправданы. Если никто со стороны бизнеса не заглядывает в эти тесты, то возможно стоит перейти на уровень технических тестов с DSL.</p>
<p><strong>Вопрос: <em>Прокомментируй еще раз рекомендации с чего начать.</em></strong></p>
<p>Начать стоит с того, чтобы осознать четко для себя зачем и почему стоит работать по TDD. После этого стоит донести свои мысли и идеи до всех членов команды. Причем не то, что вы собираетесь работать по TDD, а то, какие преимущества могли бы получить все от этого. Если у вас получится это сделать, то все будут хотеть применить TDD. А потом дело лишь в стратегии. Вам нужно найти удобный момент и начать внедрение. Поддержка команды поможет вам сделать это достаточно быстро (я имею ввиду начать). А дальше у вас будет освобождаться все больше времени за счет 100% автоматизации новой функциональности и вы сможете укрепить свои позиции. И не забудьте подготовиться морально к тому, что придется поломать мозг, как свой так и коллег. <img src='http://xpinjection.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Удачи!</p>
<div class="shr-publisher-1821"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Fsuccessful-talk-at-auto-confetqa-conference%2F' data-shr_title='%D0%A3%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B5+%D0%B2%D1%8B%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD+%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8+Auto+ConfeT%26QA+2012'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Fsuccessful-talk-at-auto-confetqa-conference%2F' data-shr_title='%D0%A3%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B5+%D0%B2%D1%8B%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD+%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8+Auto+ConfeT%26QA+2012'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Fsuccessful-talk-at-auto-confetqa-conference%2F' data-shr_title='%D0%A3%D1%81%D0%BF%D0%B5%D1%88%D0%BD%D0%BE%D0%B5+%D0%B2%D1%8B%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BD%D0%B0+%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD+%D0%BA%D0%BE%D0%BD%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B8+Auto+ConfeT%26QA+2012'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F21%2Fsuccessful-talk-at-auto-confetqa-conference%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1821" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/21/successful-talk-at-auto-confetqa-conference/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft SWIT 2012 в Киеве</title>
		<link>http://xpinjection.com/2012/02/20/microsoft-swit-2012-in-kiev/</link>
		<comments>http://xpinjection.com/2012/02/20/microsoft-swit-2012-in-kiev/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 14:08:17 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Общие]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[windows phone 7]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1815</guid>
		<description><![CDATA[22 и 23 марта в Киеве пройдёт крупнейшая техническая конференция Microsoft в Украине &#8211; Microsoft SWIT 2012, на которой в течение двух дней будет представлено более 50 докладов по новейшим технологиям. Доклады будут проводиться ведущими экспертами международного уровня, с которыми будет организована возможность интенсивного общения. Благодаря посещению конференции участники смогут Одними из первых узнать детальную информацию <a href="http://xpinjection.com/2012/02/20/microsoft-swit-2012-in-kiev/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><strong>22 и 23 марта в Киеве</strong> пройдёт крупнейшая техническая конференция Microsoft в Украине &#8211; <a href="http://msswit.in.ua/">Microsoft SWIT 2012</a>, на которой в течение двух дней будет представлено более 50 докладов по новейшим технологиям. Доклады будут проводиться ведущими экспертами международного уровня, с которыми будет организована возможность интенсивного общения.</p>
<h2>Благодаря  посещению конференции участники смогут</h2>
<ul>
<li>Одними из первых узнать детальную информацию о развитии, настоящем и будущем всего спектра технологий Microsoft.</li>
<li>Задать детальные вопросы и обсудить с сотрудниками Microsoft и ведущими индустриальными экспертами представленные анонсы, доклады, продукты и программы.</li>
<li>Посещая доклады,  узнать наиболее современные лучшие практики, решения и способы оптимизации использования всего спектра технологий Microsoft.</li>
<li>Общаясь на докладах и в зоне «спроси эксперта» установить полезные контакты с ведущими специалистами Microsoft, индустриальными экспертами, представителями партнеров Microsoft, а также коллегами по индустрии.</li>
<li>Посещая партнерскую выставку, ознакомиться с решениями ведущих ИТ-компаний Украины и установить деловые контакты для решения производственных задач.</li>
</ul>
<p>Это знаковое мероприятие в Восточной Европе и каждый IT-шник, причастный к продуктам Microsoft просто обязан его посетить.</p>
<h2>В  рамках конференции будут покрыты следующие темы</h2>
<ul>
<li>Облачные вычисления;</li>
<li>Языки и инструменты разработки ПО;</li>
<li>Архитектура приложений и систем;</li>
<li>Мобильная платформа Windows Phone;</li>
<li>Информационная безопасность;</li>
<li>Управление ИТ-инфраструктурой;</li>
<li>Технологии виртуализации;</li>
<li>Бизнес-решения;</li>
</ul>
<p>Один из тренеров нашего центра, <a href="/coaches#beletsky">Александр Белецкий</a>, выступит на конференции с докладом <a href="http://www.msswit.in.ua/ukr/program.html">«ASP.NET MVC 4 для разработчиков мобильных приложений»</a>. С некоторых пор, мобильные платформы являются неотемлимой частью нашей жизни. Актуальность разработки под них растет каждый день. Отвечая современным требования веб-фреймворк компании Майкрософт ASP.NET MVC версии 4 включил ряд расширений, облегчающий и расширяющий арсенал инструментов разбработки для мобильных устройств. </p>
<p>На докладе будет рассмотрена текущая реализация ASP.NET MVC 4 CTP (Community Technical Preview), которая доступна для скачивания и использования, в том числе: расширения темплейтов проектов, шаблон проекта для мобильного устройства, jQuery Mobile, режимы екранов (Display Modes), CSS3 media queries.</p>
<h2>Двухдневная программа конференции включает</h2>
<ul>
<li>Пленарный доклад о стратегии развития технологий Microsoft;</li>
<li>Более 50 докладов, сгруппированных по трекам;</li>
<li>Лабораторные классы hands-on-lab по новым программным разработкам;</li>
<li>Круглые столы с участием ведущих экспертов Microsoft и индустрии;</li>
<li>Зону &laquo;Спроси эксперта&raquo;;</li>
<li>Выставку новинок и решений от ведущих технологических компаний Украины;</li>
<li>Демо-зону стартапов BizSpark и не только.</li>
</ul>
<p>Программа конференции поделена на 4 потока. Это позволит каждому участнику найти для себя доклады по интересам. </p>
<p>Регистрация на конференцию уже открыта. Подробная информация и расписание докладов будут доступны на официальном сайте конференции &#8211; <a href="http://www.msswit.in.ua">http://www.msswit.in.ua</a>. До встречи!</p>
<div class="shr-publisher-1815"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F20%2Fmicrosoft-swit-2012-in-kiev%2F' data-shr_title='Microsoft+SWIT+2012+%D0%B2+%D0%9A%D0%B8%D0%B5%D0%B2%D0%B5'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F20%2Fmicrosoft-swit-2012-in-kiev%2F' data-shr_title='Microsoft+SWIT+2012+%D0%B2+%D0%9A%D0%B8%D0%B5%D0%B2%D0%B5'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F20%2Fmicrosoft-swit-2012-in-kiev%2F' data-shr_title='Microsoft+SWIT+2012+%D0%B2+%D0%9A%D0%B8%D0%B5%D0%B2%D0%B5'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F20%2Fmicrosoft-swit-2012-in-kiev%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1815" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/20/microsoft-swit-2012-in-kiev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Использование ASP.NET MVC валидационного механизма, без ASP.NET MVC</title>
		<link>http://xpinjection.com/2012/02/19/using-asp-net-validation-with-out-asp-net-mvc/</link>
		<comments>http://xpinjection.com/2012/02/19/using-asp-net-validation-with-out-asp-net-mvc/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 07:53:05 +0000</pubDate>
		<dc:creator>Александр Белецкий</dc:creator>
				<category><![CDATA[Общие]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1808</guid>
		<description><![CDATA[В своей практике использования фреймворка ASP.NET MVC, я очень привык к <code>DataAnnotations</code> аттрибутам, для валидации классов модели. В самом деле, это отличный подход. Аннотируешь модель соответвующими аттрибутами, всю остальную работу делает фреймворк. Простым вызовом <code>ModelState.IsValid</code> внутри екшина, можно узнать состояние модели.]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>
В своей практике использования фреймворка ASP.NET MVC, я очень привык к <code>DataAnnotations</code> аттрибутам, для валидации классов модели. В самом деле, это отличный подход. Аннотируешь модель соответвующими аттрибутами, всю остальную работу делает фреймворк. Простым вызовом <code>ModelState.IsValid</code> внутри екшина, можно узнать состояние модели.
</p>
<p>
Во время реализации одной из фич, для <a href="https://github.com/alexanderbeletsky/candidate">candidate</a> я подумал, что мне нужна похожая валидационная модель, для моих классов, но без использования самого MVC фреймворка. А именно, для класса типа <a href="https://github.com/alexanderbeletsky/candidate/blob/master/Candidate.Core/Configurations/Parts/Github.cs">Github.cs</a> я хочу знать, &laquo;сконфигурирован&raquo; он или нет. И &laquo;сконфигурирован&raquo; == &laquo;валиден&raquo;, в моем контексте. Вместо того, чтобы писать кастомный код, который бы проверял все свойства на предмет заполненности, я хотел сделать тоже, что делает ASP.NET MVC, через DataAnnotations. Самое крутое, что это оказалось возможным, причем сделать это очень просто.
</p>
<h2>Простое начало</h2>
<p>
Предположим, есть такая модель:
</p>
<pre>public class SimpleModel
{
	[Required]
	public string SomeProperty { get; set; }

	[Range(0,50)]
	public int SomeAnotherProperty { get; set; }
}
    </pre>
<p>
Если, наша цель, просто получить ответ &laquo;да&raquo; или &laquo;нет&raquo; (валидна или нет), мы можем сделать такую функцию:
</p>
<pre>public bool ValidateSimpleModel(SimpleModel validate)
{
	return Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), null);
}
    </pre>
<p>
<a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validator.aspx">Validator</a> это статический класс, находящийся в неймспейсе DataAnnotations. Он принимает целевой объект, валидационный контекст и коллекцию результатов валидации. Но в силу того, что он лишь &laquo;пытается&raquo; выполнить валидацию, почти все эти параметры могуть быть null.
</p>
<h2>Использование результатов валидации</h2>
<p>
Если нужна более специфическая информация, как &#8211; какое именно свойство невалидно, то можно использовать <code>ICollection&lt;ValidationResult&gt;</code>.
</p>
<pre>public ICollection&lt;ValidationResult&gt; ValidateSimpleModel(SimpleModel validate)
{
	var validationResults = new List&lt;ValidationResult&gt;();
	Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), validationResults);

	return validationResults;
}
</pre>
<p>
В том случае, когда объект находится в невалидном состоянии, этот метод вернет коллекцию <a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationresult.aspx">ValidationResult</a>, которая содержит всю релевантную информацию.
</p>
<h2>Оборачиваем все в екстеншн метод</h2>
<p>
Наконец-то, я сделал просто екстеншн метод, с помощью которого можно применить DataAnnotations валидацию, к любому объекту:
</p>
<pre>public static class ValidatorExtensions
{
    public static bool TryValidateObject(this object validate)
    {
        return Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), null);
    }
}
    </pre>
<p>
Теперь, модель может иметь метод IsValid() типа:
</p>
<pre>public bool IsValid()
{
 return this.TryValidateObject();
}
    </pre>
<p>
Для той простой задачи, которую я пытался решить, это сработало просто отлично!
</p>
<p>
Оригинал статьи &#8211; <a href="http://www.beletsky.net/2012/01/using-aspnet-mvc-validation-mechanism.html">http://www.beletsky.net/2012/01/using-aspnet-mvc-validation-mechanism.html</a></p>
<div class="shr-publisher-1808"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F19%2Fusing-asp-net-validation-with-out-asp-net-mvc%2F' data-shr_title='%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+ASP.NET+MVC+%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D0%B0%2C+%D0%B1%D0%B5%D0%B7+ASP.NET+MVC'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F19%2Fusing-asp-net-validation-with-out-asp-net-mvc%2F' data-shr_title='%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+ASP.NET+MVC+%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D0%B0%2C+%D0%B1%D0%B5%D0%B7+ASP.NET+MVC'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F19%2Fusing-asp-net-validation-with-out-asp-net-mvc%2F' data-shr_title='%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+ASP.NET+MVC+%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE+%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D0%B8%D0%B7%D0%BC%D0%B0%2C+%D0%B1%D0%B5%D0%B7+ASP.NET+MVC'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F19%2Fusing-asp-net-validation-with-out-asp-net-mvc%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1808" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/19/using-asp-net-validation-with-out-asp-net-mvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Новые инструменты в моем арсенале TDD</title>
		<link>http://xpinjection.com/2012/02/17/new-tools-in-my-tdd-arsenal/</link>
		<comments>http://xpinjection.com/2012/02/17/new-tools-in-my-tdd-arsenal/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 12:20:58 +0000</pubDate>
		<dc:creator>Александр Белецкий</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[инженерные практики]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1791</guid>
		<description><![CDATA[Недавно, я открыл для себя 3 новых интструмента, которыми хочу поделится с вами. Более точно, это один инструмент и два фреймворка. Посмотрим!]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Недавно, я открыл для себя 3 новых интструмента, которыми хочу поделится с вами. Более точно, это один инструмент и два фреймворка. Посмотрим!</p>
<h2>
NCrunch<br />
</h2>
<p>
<a href="http://www.ncrunch.net/">NCrunch</a> это просто потрясающее расширение к Visual Studio созданный <a href="https://twitter.com/#!/remcomulder">@remcomulder</a>. Он детектирует все тесты в вашем солюшине и перезапускает их как только исходный код меняется. Забудте про ручной запуск тестов навсегда, это просто потеря времени. Вам даже не обязятельно нажимать Ctrl + S, просто продолжаем кодить как и раньше.
</p>
<p>
Сначала, я очень скепртически относился к подобным инструментам, но NCruch изменил мое мнение. Он поддерживает все главные юнит тест фреймворки как NUnit, XUnit, MSpec etc. Кроме того, он позволяет собирать метрики покрытия (которые, отображаются прямо в VS редакторе), запуск тестов в дебаггере, поддержка многих ядер и т.д.
</p>
<p>
NCruch, это то что сделает ваш TDD более &laquo;гладким&raquo;, позволяется сфокусироваться на главных вещах и отвлечся от рутины.
</p>
<p><a href="https://lh3.googleusercontent.com/-SG_xDY5wvDo/TypXmx-VFGI/AAAAAAAAH3o/S46jODLRr5Q/s620/image-1.jpg"><br />
<img src="https://lh3.googleusercontent.com/-SG_xDY5wvDo/TypXmx-VFGI/AAAAAAAAH3o/S46jODLRr5Q/s620/image-1.jpg" alt="ncrunch" /><br />
</a></p>
<h2>
NSubstitute<br />
</h2>
<p>
На протяжении долгого времени, я был приверженцем <a href="http://code.google.com/p/moq/">Moq</a> фреймворка и не видел причин его менять. До того как появился <a href="http://nsubstitute.github.com/">NSubsitute</a>. Я с трудом представляю, что может двигать разработчиками, которые начинает делать &laquo;еще один фреймворк для моков&raquo;, кажется, что это не имеет смысла. Но <a href="https://github.com/nsubstitute">эти</a> ребята доказывают, что я не прав.
</p>
<p>
Итак, что там нового? Во-первых это очень понятный API. Никаких тебе <code>new Mock()</code> или <code>MockGenerator.GenerateMock()</code>, создание тестовых двойников это не более, чем <code>Substitute.For&lt;IEntityToMock&gt;()</code>. Мокирование свойств, возращение множественных результатов, поддержка событий и т.д. Для начала очень круто прочитать <a href="http://nsubstitute.github.com/help/getting-started/">getting started</a> материалы для старта.
</p>
<p>
Лучшая фича, как по мне, это то, что с использованием экстеншн методов они отказались от лямбд, для инициализации моков. Это делает код более читаемым и чистым. Я сделал маленький <a href="https://gist.github.com/1722396">gist</a>, в который поместил примеры использования Moq и NSubstitute вместе.
</p>
<p>
Я не могу сказать, что Rhino или Moq это гораздо хуже NSubstitute.. Нет, я могу сказать, что NSubstitute немного лучше их. Таже функциональность, но с меньшим количесвом кода, это серьезный аргумент для меня.
</p>
<pre>
[Test]
public void should_send_an_email_if_users_signs_up_nsub()
{
	// arrange
	var emailService = Substitute.For&lt;IEMailService&gt;();
	var controller = new LoginController(emailService);

	// act
	controller.SignUp(new SignUpModel { Email = &quot;a@a.com&quot;, Password = &quot;xxx&quot; });

	// assert
	emailService.Received().SendEmail(Arg.Any&lt;EmailMessage&gt;(), &quot;current&quot;);
}
</pre>
<h2>
FluentAssertions<br />
</h2>
<p>
Опять же, годами я следовал простому NUnit&#8217;s <code>Assert.That()</code> методу. Я также немного смотрел в сторону <a href="http://sharptestex.codeplex.com/">SharpTestsEx</a>, но FluentAssertions от <a href="https://twitter.com/#!/ddoomen">@ddoomen</a> изменил это.
</p>
<p>
FluentAssertions также основан на екстенш методах, и позволяет избавиться от вызова Assert.That, применяя ассерты непосредсвенно к объекту. Пару примеров:
</p>
<pre>
{
    // NUnit.Assert style..
    Assert.That(result, Is.EqualTo(3);

    // FluentAssert style..
    result.Should().Be(3);
}
</pre>
<p>
Это очень простой пример. Мощь FluentAssertions проявляется тогда, когда необходим множественный ассерт на сложных объектах:
</p>
<pre>
{
    "somestring".Should().Contain("some").And.HaveLength(10);
}
</pre>
<p>
Он также добавляет хорошую поддержку для работы с Коллекциями, Датами, Guids, Исключениями, XML и т.д. Проект размещен на codeplex, вот <a href="http://fluentassertions.codeplex.com/documentation">документация</a>.
</p>
<h2>Выводы</h2>
<p>
Очень классные инструменты, которые я осванию сейчас и пока что впечатления очень хорошие. Большое спасибо <a href="https://twitter.com/#!/skalinets">@skalinets</a>, которые покаазал мне их.
</p>
<p>
Оригинал статьи &#8211; <a href="http://www.beletsky.net/2012/02/new-tools-in-my-tdd-arsenal.html">http://www.beletsky.net/2012/02/new-tools-in-my-tdd-arsenal.html</a>.</p>
<div class="shr-publisher-1791"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F17%2Fnew-tools-in-my-tdd-arsenal%2F' data-shr_title='%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%B2+%D0%BC%D0%BE%D0%B5%D0%BC+%D0%B0%D1%80%D1%81%D0%B5%D0%BD%D0%B0%D0%BB%D0%B5+TDD'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F17%2Fnew-tools-in-my-tdd-arsenal%2F' data-shr_title='%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%B2+%D0%BC%D0%BE%D0%B5%D0%BC+%D0%B0%D1%80%D1%81%D0%B5%D0%BD%D0%B0%D0%BB%D0%B5+TDD'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F17%2Fnew-tools-in-my-tdd-arsenal%2F' data-shr_title='%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5+%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%B2+%D0%BC%D0%BE%D0%B5%D0%BC+%D0%B0%D1%80%D1%81%D0%B5%D0%BD%D0%B0%D0%BB%D0%B5+TDD'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F17%2Fnew-tools-in-my-tdd-arsenal%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1791" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/17/new-tools-in-my-tdd-arsenal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пишем приложение для Windows Phone 7 &#171;с нуля&#187;</title>
		<link>http://xpinjection.com/2012/02/16/13th-developers-club-gathering-wp7/</link>
		<comments>http://xpinjection.com/2012/02/16/13th-developers-club-gathering-wp7/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 09:56:00 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Общие]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[wp7rocks]]></category>
		<category><![CDATA[клуб анонимных разработчиков]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1782</guid>
		<description><![CDATA[Мы продолжаем серию встреч &#171;Клуба анонимных разработчиков&#187; на тему Windows Phone 7. 7 февраля прошла первая из них (12-ая встреча клуба). Эта встреча клуба, 13-ая по счету, будет проходить в сотрудничестве с порталом Windows Phone 7 Rocks. Это отличная новость для всех .NET-чиков и .NET-чиц Киева, потому что у вас появилась замечательная возможность послушать и <a href="http://xpinjection.com/2012/02/16/13th-developers-club-gathering-wp7/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Мы продолжаем серию встреч &laquo;Клуба анонимных разработчиков&raquo; на тему Windows Phone 7. <strong>7 февраля</strong> прошла <a href="/2012/01/20/twelve-developers-club-gathering-wp7/">первая</a> из них (<a href="/2012/02/08/twelve-developers-club-gathering-report/">12-ая встреча</a> клуба). Эта встреча клуба, 13-ая по счету, будет проходить в сотрудничестве с порталом <a href="http://www.wp7rocks.com/">Windows Phone 7 Rocks</a>. Это отличная новость для всех .NET-чиков и .NET-чиц Киева, потому что у вас появилась замечательная возможность послушать и поучиться у профессионалов в этой области, которых не так уж много. И все это в рамках формата &laquo;Клуба анонимных разработчиков&raquo; с непринужденной обстановкой и отличной атмосферой.</p>
<p>В этот раз ребята решили начать с самого главного &#8211; как начать писать приложения под Windows Phone 7. Платформа совсем новая и очень мало людей умеют это делать вообще, а еще меньше умеют это делать правильно. В докладе будет продемонстрирована разработка контентного приложения для Windows Phone.  Будут затронуты такие темы:</p>
<ul>
<li>UI / UX</li>
<li>полезные инструменты и библиотеки для Windows Phone</li>
<li>паттерн MVVM</li>
<li>работа с данными &#8211; загрузка, обработка, сохранение</li>
<li>отладка, подготовка к публикации</li>
</ul>
<p>В роли докладчиков выступят <strong>Михаил Галушко</strong> и <strong>Александр Краковецкий</strong>. Они оба являются авторами многочисленных статей на сайте <a href="http://www.wp7rocks.com/">Windows Phone 7 Rocks</a>. Александр является автором и идеологом сайтов <a href="http://www.wp7rocks.com/">Windows Phone 7 Rocks</a> и <a href="http://msug.vn.ua">Microsoft User Group Community</a>. Оба начали изучать технологию Windows Phone с момента ее появления на свет. На данный момент уже опубликовали несколько приложений. </p>
<p>Эта встреча обещает получиться более практической и участники получат ответы на многие вопросы, связанные со стартом разработки приложений под Windows Phone 7. Итак, встреча пройдет в четверг <strong>1 марта</strong>. Место проведения мы объявим ближе к дате мероприятия. Это связано с тем, кто число членов клуба постоянно растет и мы рискуем не влезть в уютный Киевский офис компании <a href="http://www.dataart.ru/contacts/kiev.htm">DataArt</a>. Этот офис полюбился членам клуба своей уютной обстановкой и наличием всего необходимого для продуктивного общения. Но, по итогам прошлых встреч, есть риск, что все желающие не поместятся.</p>
<p>Официальное начало встречи по-прежнему в <strong>19:00</strong>, завершение в <strong>23:00</strong>. Стоимость участия <strong>80 гривен</strong> при оплате заранее, <strong>120 гривен</strong> при оплате на месте. <strong>Пива</strong>, <strong>пиццы</strong> и <strong>кофе с печеньками</strong> хватит на всех. <a href="https://docs.google.com/spreadsheet/viewform?formkey=dEpaTkVIOG1meE4zX25rR01NdkxWd0E6MA">Регистрация</a> обязательна. Все детали по оплате будут высланы вам после успешного прохождения <a href="https://docs.google.com/spreadsheet/viewform?formkey=dEpaTkVIOG1meE4zX25rR01NdkxWd0E6MA">регистрации</a>. Количество мест ограничено <strong>60 участниками</strong>.</p>
<div class="shr-publisher-1782"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F16%2F13th-developers-club-gathering-wp7%2F' data-shr_title='%D0%9F%D0%B8%D1%88%D0%B5%D0%BC+%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B4%D0%BB%D1%8F+Windows+Phone+7+%22%D1%81+%D0%BD%D1%83%D0%BB%D1%8F%22'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F16%2F13th-developers-club-gathering-wp7%2F' data-shr_title='%D0%9F%D0%B8%D1%88%D0%B5%D0%BC+%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B4%D0%BB%D1%8F+Windows+Phone+7+%22%D1%81+%D0%BD%D1%83%D0%BB%D1%8F%22'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F16%2F13th-developers-club-gathering-wp7%2F' data-shr_title='%D0%9F%D0%B8%D1%88%D0%B5%D0%BC+%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B4%D0%BB%D1%8F+Windows+Phone+7+%22%D1%81+%D0%BD%D1%83%D0%BB%D1%8F%22'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F16%2F13th-developers-club-gathering-wp7%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1782" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/16/13th-developers-club-gathering-wp7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Рубрика «Полезное чтиво». Выпуск 22</title>
		<link>http://xpinjection.com/2012/02/13/useful-reading-volume-22/</link>
		<comments>http://xpinjection.com/2012/02/13/useful-reading-volume-22/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 17:39:12 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Полезное чтиво]]></category>
		<category><![CDATA[полезное чтиво]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1778</guid>
		<description><![CDATA[Пролетела неделя и свежая порция «Полезного чтива» готова: Why Do Products Fail? &#8211; почему проваливается продукты и что с этим делать ScrumMaster Tales Impediments are holding back the team &#8211; первоочередная задача ScrumMaster в том, чтобы убирать препятствия с пути команды, а не все они так очевидны&#8230; Working with Agile in a Distributed Team Environment <a href="http://xpinjection.com/2012/02/13/useful-reading-volume-22/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="article-right" src="/images/articles/useful-reading-22.jpg" alt="полезное чтиво" /></p>
<p>Пролетела неделя и свежая порция «Полезного чтива» готова:</p>
<ul>
<li><a href="http://tynerblain.com/blog/2012/02/08/why-do-products-fail/">Why Do Products Fail?</a> &#8211; почему проваливается продукты и что с этим делать</li>
<li><a href="http://agilepainrelief.com/notesfromatooluser/2011/12/scrummaster-tales-impediments-are-holding-back-the-team.html">ScrumMaster Tales Impediments are holding back the team</a> &#8211; первоочередная задача ScrumMaster в том, чтобы убирать препятствия с пути команды, а не все они так очевидны&#8230;</li>
<li><a href="http://msdn.microsoft.com/en-gb/magazine/hh771057.aspx">Working with Agile in a Distributed Team Environment</a> &#8211; отличная статья о сложностях работы по Agile в распределенных командах</li>
<li><a href="http://java.dzone.com/articles/transaction-configuration-jpa">Transaction configuration with JPA and Spring 3.1</a> &#8211; отличная статья про конфигурацию транзакций в Spring, только не согласен с транзакциями в контроллере</li>
<li><a href="http://www.stevesouders.com/blog/2012/02/10/the-performance-golden-rule/">the Performance Golden Rule</a> &#8211; на веб-проектах 80-90% времени загрузки страницы занимает работа на клиенте, там и надо оптимизировать!</li>
<li><a href="http://www.searchworkings.org/blog/-/blogs/query-time-joining-in-lucene">Query time joining in Lucene</a> &#8211; Lucene сделал важный шаг для реляционного поиска, меньше можно будет мучаться с БД</li>
<li><a href="http://java.dzone.com/articles/thats-not-agile">That&#8217;s Not Agile!</a> &#8211; ошибки, которые мешают нам учиться и меняться в лучшую сторону</li>
<li><a href="http://www.allaboutagile.com/not-your-dads-agile-delivering-business-value/">Not Your Dad’s Agile – Delivering Business Value</a> &#8211; что скрывается за Agile 3.0?</li>
<li><a href="http://java.dzone.com/articles/separating-integration-and">Separating Integration and Unit Tests with Maven, Sonar, Failsafe, and JaCoCo</a> &#8211; подробная инструкция как настроить подсчет покрытия кода интеграционными или функциональными тестами</li>
<li><a href="http://www.exampler.com/blog/2012/02/04/two-phase-release-planning/">Two phase release planning</a> &#8211; интересный двухфазовый подход к планированию релизов</li>
<li><a href="http://scrumalliance.org/articles/396-how-to-be-an-effective-scrummaster">How to Be an Effective ScrumMaster</a> &#8211; как быть в роли ScrumMaster действительно эффективным</li>
<li><a href="http://pragprog.com/magazines/2011-07/pair-programming-benefits">Pair Programming Benefits</a> &#8211; подробное описание почему стоит использовать парное программирование и почему это выгодно всем</li>
<li><a href="http://agilepainrelief.com/notesfromatooluser/2012/02/scrummaster-talesthe-team-gets-bottlenecked.html">ScrumMaster Tales – The Team Gets Bottlenecked</a> &#8211; bottleneck лучше всего разбирать всей командой и лучший способ для этого &#8211; лимиты на WIP и ретроспективы</li>
<li><a href="http://agilepainrelief.com/notesfromatooluser/2011/11/when-to-stop-holding-retrospectives.html">When to stop holding retrospectives?</a> &#8211; никогда не бросайте практику ретроспектив, даже если кажется, что все и так здорово</li>
<li><a href="http://www.sonatype.com/people/2012/02/nexus-dont-dive-in-until-you-know-how-to-swim/">Nexus: Don’t dive in until you know how to swim</a> &#8211; прежде чем что-то использовать, изучите как это работает, а тренинги помогают сделать это быстрее</li>
<li><a href="http://blog.mountaingoatsoftware.com/estimating-planning-necessary-maximizing-delivered-value">ESTIMATING AND PLANNING ARE NECESSARY FOR MAXIMIZING DELIVERED VALUE</a> &#8211; мы оцениваем и планируем постоянно, даже если явно не называем это оценками о планом, ведь важен процесс!</li>
<li><a href="http://element34.ca/blog/how-to-choose-selenium-training">HOW TO CHOOSE SELENIUM TRAINING</a> &#8211; как выбирать тренинг и тренера по Selenium, что без труда переносится и на другие темы</li>
<li><a href="http://alestic.com/2012/01/ec2-ebs-boot-recommended">You Should Use EBS Boot Instances on Amazon EC2</a> &#8211; Классная статья о различиях в типах AMI для EC2</li>
<li><a href="http://instagram-engineering.tumblr.com/">What Powers Instagram: Hundreds of Instances, Dozens of Technologies</a> &#8211; Instagram молодцы, сидят на AWS целиком, вот советы от них по поводу технологий и тулов</li>
<li><a href="http://java.dzone.com/articles/code-coverage-side-effect-and">Code coverage is a side effect and not an end goal</a> &#8211; высокий процент покрытия тестами &#8211; это побочный эффект грамотного тестирования, а не цель</li>
<li><a href="http://leadinganswers.typepad.com/leading_answers/2012/02/timebox-alternatives.html">Timebox Alternatives</a> &#8211; вот почему &laquo;железный треугольник&raquo; развернули в Agile именно так, остальные варианты не помогут</li>
<li><a href="http://habrahabr.ru/blogs/pm/137746/">37signals: почему в нашей компании нет менеджеров</a> &#8211; вот это правильная стратегия &#8211; маленькие эффективные команды технарей без менеджеров</li>
<li><a href="http://java.dzone.com/articles/code-reviews-21st-century">Code reviews in the 21st Century</a> &#8211; о чем нужно помнить, делая ревью кода в современном мире</li>
<li><a href="http://kentnguyen.com/development/visualized-git-practices-for-team/">Visualized Git practices for team: branch, merge, rebase</a> &#8211; визуализация стандартных практик при работе с Git</li>
<li><a href="http://dotnet.dzone.com/articles/13-keys-continuous-delivery">13 Keys to Continuous Delivery</a> &#8211; отличная подборка правил для Continuous Delivery</li>
<li><a href="http://www.developsense.com/blog/2012/02/do-not-close-this-window/">Do Not Close This Window (Or Click The Back Button)</a> &#8211; меня тоже всегда бесят сайты, где просят ничего не нажимать и не закрывать окно</li>
<li><a href="http://practicalagility.blogspot.com/2012/02/pragmatic-agile.html">&laquo;Pragmatic Agile&raquo;</a> &#8211; что такое по-настоящему прагматичный подход к Agile?</li>
<li><a href="http://java.dzone.com/articles/testing-asynchronous">Testing asynchronous applications with WebDriverWait</a> &#8211; бейте себя по рукам каждый раз когда используйте Thread.sleep в тестах асинхронного действия на странице с WebDriver!</li>
</ul>
<p>Читайте и набирайтесь новых знаний!</p>
<div class="shr-publisher-1778"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F13%2Fuseful-reading-volume-22%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+22'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F13%2Fuseful-reading-volume-22%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+22'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F13%2Fuseful-reading-volume-22%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+22'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F13%2Fuseful-reading-volume-22%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1778" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/13/useful-reading-volume-22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Отчет о 12-ой встрече &#171;Клуба анонимных разработчиков&#187;</title>
		<link>http://xpinjection.com/2012/02/08/twelve-developers-club-gathering-report/</link>
		<comments>http://xpinjection.com/2012/02/08/twelve-developers-club-gathering-report/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 15:38:09 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Общие]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[windows phone 7]]></category>
		<category><![CDATA[клуб анонимных разработчиков]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1760</guid>
		<description><![CDATA[Вчера состоялась 12-ая встреча нашего &#171;Клуба анонимных разработчиков&#187;. Эта встреча открыла серию встреч на тему Windows Phone 7. Все встречи данной серии будут проходить в сотрудничестве с порталом Windows Phone 7 Rocks. В этот раз уютный и полюбившийся многим офис компании DataArt принимал гостей из мира .NET. Встреча началась с небольшой задержкой в связи с <a href="http://xpinjection.com/2012/02/08/twelve-developers-club-gathering-report/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Вчера состоялась <a href="/2012/01/20/twelve-developers-club-gathering-wp7/">12-ая встреча</a> нашего <strong>&laquo;Клуба анонимных разработчиков&raquo;</strong>. Эта встреча открыла серию встреч на тему Windows Phone 7. Все встречи данной серии будут проходить в сотрудничестве с порталом <a href="http://www.wp7rocks.com/">Windows Phone 7 Rocks</a>. </p>
<p>В этот раз уютный и полюбившийся многим офис компании <a href="http://www.dataart.ru/contacts/kiev.htm">DataArt</a> принимал гостей из мира .NET. Встреча началась с небольшой задержкой в связи с аварией на подъезде к месту проведения. В пробке стоял один из докладчиков, а также заказанная пицца. Поэтому у участников было полчаса на знакомство и общение перед началом официальной части.</p>
<p>Открыл встречу автор и идеолог сайтов <a href="http://www.wp7rocks.com/">Windows Phone 7 Rocks</a> и <a href="http://msug.vn.ua/">Microsoft User Group Community</a> <strong>Александр Краковецкий</strong>. Он уже давно изучает платформу и представил свой доклад <strong>«А вы уже были в Metro?»</strong>. В докладе Александр рассказал о новом языке дизайна Metro, который используется для разработки интерфейсов в Windows Phone 7, а также будущей версии Windows 8. На примерах продемонстрировал типичные ошибки при проектирование мобильных приложений для данной платформы. Вот презентация этого выступления:</p>
<p><iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" width="402px" height="327px" style="padding:0;background-color:#fcfcfc;" src="https://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&#038;p2=1&#038;p3=SD7D379C7F959D3DDF!1544&#038;p4=&#038;ak=!AEq6-ANs_6GpDzk&#038;kip=1&#038;authkey=!AEq6-ANs_6GpDzk"></iframe></p>
<p>Второй доклад был более технический. <strong>Михаил Галушко</strong> выступил на тему <strong>«Хранение данных в Windows Phone»</strong>. Доклад посвящен вопросам работы с данными в Windows Phone приложениях. Участники смогли больше узнать о возможных вариантах хранилищ, сравнительном анализе их возможностей и рекомендациях по выбору того или иного решения. Презентация этого доклада также доступна:</p>
<p><iframe title ="Preview" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" width="402px" height="327px" style="padding:0;background-color:#fcfcfc;" src="https://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&#038;p2=1&#038;p3=SD7D379C7F959D3DDF!1546&#038;p4=&#038;ak=!ADZW0pb6KZpTH_A&#038;kip=1&#038;authkey=!ADZW0pb6KZpTH_A"></iframe></p>
<p>Возможно получился некоторый контраст между вводным докладом по дизайну и таким техническим докладом. Мы постараемся учесть все ваши замечания и предложения, в будущем избегая допущенных ошибок. Программа должна соответствовать ожиданиям участников. Поэтому мы рады услышать ваше мнение в комментариях.</p>
<p>Дополнительную информацию вы можете найти в <strong>Twitter</strong> по хештегу <strong>#uadevclub</strong>. Можно почитать о ходе встречи, найти интересные цитаты, советы и факты о рассматриваемых технологиях. Присоединяйтесь и обсуждайте вместе с нами!</p>
<p>Мы снимали видео всех выступлений и постараемся в ближайшее время выложить их в открытый доступ.</p>
<p>Следующая встреча запланирована на конец февраля. Следите за анонсами и не пропустите начало регистрации!</p>
<div class="shr-publisher-1760"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F08%2Ftwelve-developers-club-gathering-report%2F' data-shr_title='%D0%9E%D1%82%D1%87%D0%B5%D1%82+%D0%BE+12-%D0%BE%D0%B9+%D0%B2%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B5+%22%D0%9A%D0%BB%D1%83%D0%B1%D0%B0+%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D1%8B%D1%85+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2%22'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F08%2Ftwelve-developers-club-gathering-report%2F' data-shr_title='%D0%9E%D1%82%D1%87%D0%B5%D1%82+%D0%BE+12-%D0%BE%D0%B9+%D0%B2%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B5+%22%D0%9A%D0%BB%D1%83%D0%B1%D0%B0+%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D1%8B%D1%85+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2%22'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F08%2Ftwelve-developers-club-gathering-report%2F' data-shr_title='%D0%9E%D1%82%D1%87%D0%B5%D1%82+%D0%BE+12-%D0%BE%D0%B9+%D0%B2%D1%81%D1%82%D1%80%D0%B5%D1%87%D0%B5+%22%D0%9A%D0%BB%D1%83%D0%B1%D0%B0+%D0%B0%D0%BD%D0%BE%D0%BD%D0%B8%D0%BC%D0%BD%D1%8B%D1%85+%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%BE%D0%B2%22'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F08%2Ftwelve-developers-club-gathering-report%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1760" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/08/twelve-developers-club-gathering-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Метрики в Scrum и Kanban</title>
		<link>http://xpinjection.com/2012/02/07/kanban-and-scrum-metrics/</link>
		<comments>http://xpinjection.com/2012/02/07/kanban-and-scrum-metrics/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 10:02:58 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[метрики]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1753</guid>
		<description><![CDATA[По разным причинам Scrum получил очень широкое распространение среди IT компаний. Многие компании и отдельные команды начали внедрять Scrum в своих проектах. У одних это получается, у других не очень. Грамотный и опытный специалист перед внедрением чего-то нового всегда задумывается о метриках. Как убедиться, что внедрение Scrum идет по плану? Улучшается ли производительность команды? Нет <a href="http://xpinjection.com/2012/02/07/kanban-and-scrum-metrics/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>По разным причинам Scrum получил очень широкое распространение среди IT компаний. Многие компании и отдельные команды начали внедрять Scrum в своих проектах. У одних это получается, у других не очень. Грамотный и опытный специалист перед внедрением чего-то нового всегда задумывается о метриках. Как убедиться, что внедрение Scrum идет по плану? Улучшается ли производительность команды? Нет ли каких-то проблем?</p>
<p>И тут в Scrum очень мало ответов. Кроме сугубо бизнес-метрик, которые можно применять практически в любом процессе (<strong>ROI</strong>, <strong>Earned Business Value</strong>, <strong>Running Tested Features</strong> и т.д.), в Scrum предлагается метрика Velocity. Но уже <a href="http://blog.xebia.com/2011/11/24/size-does-matter-be-careful-to-use-velocity-as-measure-for-improvement/">писано</a> <a href="http://thescrumblog.blogspot.com/2011/12/your-scrum-teams-velocity-and-how-to.html">переписано</a>, что использовать Velocity в качестве метрики <a href="http://jimhighsmith.com/2011/11/02/velocity-is-killing-agility/">не стоит</a>. Это может привести к неожиданным неприятным последствиям.</p>
<p>Получается, что хороших метрик на первый взгляд нет. В конце статьи я упомяну некоторые неявные метрики в Scrum, но пока давайте поговорим о причине проблем. Самая главная причина &#8211; это время. Бизнес практически все измеряет временем (даже деньги &#8211; это время). А в Scrum это самое <strong>время фиксируется</strong> (быстренько все вспоминаем &laquo;железный треугольник&raquo; <img src='http://xpinjection.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) и разработка ведется итерациями. Но внутри итерации происходит много всего интересного: мы делаем задачи, пользовательские истории, тестрируем, собираем продукт, устанавливаем и т.д. И вся эта информация теряется на фоне итерации. Происходит так называемое <strong>&laquo;сглаживание шумов&raquo;</strong>. Если мы затянули с одной активностью, то можем нагнать в другой. Ведь итерация целиком принадлежит команде и команда может &laquo;придумывать&raquo; внутри итерации что угодно, лишь бы в конце все было готово. Этот подход очень хорош для планирования, но отвратителен для метрик.</p>
<p>Во-первых, мы очень редко можем снимать показатели метрик &#8211; в конце итерации. А это в лучшем случае раз в неделю. В основном, все таки раз в две недели. Во-вторых, мы уже упоминали &laquo;сглаживание&raquo; и оно тоже вносит свои коррективы. Всю итерацию ситуация была из рук вон плохая, а в конце все сделали нечеловеческое усилие и вуаля &#8211; все готово и метрики в порядке. Хорошо это или нет? Нет! Мы теряем полезную информацию и не учимся на своих ошибках.</p>
<p><img src="/images/articles/cumulative-flow-diagram.jpg" alt="Cumulative Flow Diagram" class="large"/></p>
<p>Совсем по-другому дела обстоят в Kanban. Тут внимание уделяется <strong>каждой задаче</strong>. Метрики снимаются со всего потока задач, который проходит через команду разработки. Вот краткий список метрик:</p>
<ul>
<li><strong>Cycle Time</strong> &#8211; время, которое задача находилась в разработке от момента, когда ей начали заниматься, до момента, когда она прошла фазу конечной поставки.</li>
<li><strong>WIP</strong> &#8211; количество задач одновременно находящихся в работе. Разделяется по разным стадиям работы над задачей.</li>
<li><strong>Lead Time</strong> &#8211; время от появления задачи до ее конечной поставки. Включает Cycle Time и время ожидания в очереди на реализацию.</li>
<li><strong>Wasted Time</strong> &#8211; время, которое задача проводит в различных очередях, а не непосредственно в работе.</li>
<li><strong>Effectiveness</strong> &#8211; процент времени, которое тратится непосредственно на работу с задачей, а не на ожидания в различных очередях.</li>
<li><strong>Throughput</strong> &#8211; количество задач, которое может выполнять команда в единицу времени (день, неделя, месяц).</li>
</ul>
<p>Этот простой список метрик позволяет полностью понимать и контролировать процесс разработки, постоянно анализируя и улучшая его. В идеале данные метрики считаются в разрезе категорий задач (по размеру, по типу, по срочности), чтобы еще улучшить понимание происходящего и позволить точнее прогнозировать результаты работы команды.</p>
<p>Я обещал упомянуть о неявных метриках в Scrum. Эти метрики можно собирать, используя Burndown Chart. Вы можете анализировать его с целью определения шаблонов работы команды, рассматривая ежедневный прогресс и гладкость графика. Вы можете усилить анализ. Для этого нужно ввести категоризацию задач и строить Burndown Chart по каждой категории. Некоторые команды ведут отслеживание метрик задач внутри итерации, но на мой взгляд это несколько противоречит принципам Scrum &#8211; внутри итерации команда может работать над задачами в произвольном порядке. </p>
<p>Подведу итог. В Kanban метрики гораздо сильнее, чем в Scrum, но это не делает Kanban более простым в реализации подходом. Наоборот, Kanban требует от команды гораздо больше ответственности, контроля и анализа с постоянным усовершенствованием. Зато с точки зрения бизнеса Kanban гораздо более прозрачный и контролируемый.</p>
<p>А какие метрики применяете вы? Какие метрики хорошо работали для вас в Scrum?</p>
<p><strong>10-11 февраля</strong> мы с <a href="/coaches#povolyashko">Сергеем Поволяшко</a> проводим тренинг <a href="/trainings/metrics">&laquo;Метрики: команды, проекты, процессы и код&raquo;</a>, где моя часть будет как раз посвящена метрикам и работе с ними в Agile проектах. Я буду рассказывать о метриках на различных уровнях в разных методологиях, методике их сбора и анализа.</p>
<div class="shr-publisher-1753"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F07%2Fkanban-and-scrum-metrics%2F' data-shr_title='%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D0%BA%D0%B8+%D0%B2+Scrum+%D0%B8+Kanban'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F07%2Fkanban-and-scrum-metrics%2F' data-shr_title='%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D0%BA%D0%B8+%D0%B2+Scrum+%D0%B8+Kanban'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F07%2Fkanban-and-scrum-metrics%2F' data-shr_title='%D0%9C%D0%B5%D1%82%D1%80%D0%B8%D0%BA%D0%B8+%D0%B2+Scrum+%D0%B8+Kanban'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F07%2Fkanban-and-scrum-metrics%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1753" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/07/kanban-and-scrum-metrics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Рубрика «Полезное чтиво». Выпуск 21</title>
		<link>http://xpinjection.com/2012/02/06/useful-reading-volume-21/</link>
		<comments>http://xpinjection.com/2012/02/06/useful-reading-volume-21/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 16:55:15 +0000</pubDate>
		<dc:creator>Николай Алименков</dc:creator>
				<category><![CDATA[Полезное чтиво]]></category>
		<category><![CDATA[полезное чтиво]]></category>

		<guid isPermaLink="false">http://xpinjection.com/?p=1750</guid>
		<description><![CDATA[Вот снова наступил понедельник и вас ожидает новая порция «Полезного чтива»: New Tools in My TDD Arsenal &#8211; рекомендации по инструментам для TDD в .NET What’s New In Java 7: Copy and Move Files and Directories &#8211; по ходу в Java 7 можно будет жить без FileUtils Selenium IDE v1.6.0 Released and Includes Firefox 10 <a href="http://xpinjection.com/2012/02/06/useful-reading-volume-21/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p><img class="article-right" src="/images/articles/useful-reading-21.jpg" alt="полезное чтиво" /></p>
<p>Вот снова наступил понедельник и вас ожидает новая порция «Полезного чтива»:</p>
<ul>
<li><a href="http://www.beletsky.net/2012/02/new-tools-in-my-tdd-arsenal.html">New Tools in My TDD Arsenal</a> &#8211; рекомендации по инструментам для TDD в .NET</li>
<li><a href="http://java.dzone.com/articles/what’s-new-java-7-copy-and">What’s New In Java 7: Copy and Move Files and Directories</a> &#8211; по ходу в Java 7 можно будет жить без FileUtils</li>
<li><a href="http://blog.reallysimplethoughts.com/2012/02/03/selenium-ide-v1-6-0-released-and-includes-firefox-10-support/">Selenium IDE v1.6.0 Released and Includes Firefox 10 Support</a> &#8211; новая версия Selenium IDE</li>
<li><a href="http://habrahabr.ru/blogs/pm/137554/">Бесплатная электронная книга по гибким методологиям разработки</a> &#8211; Боря Вольфсон выложил свое творение</li>
<li><a href="http://www.jetbrains.com/idea/whatsnew/">What&#8217;s New In IntelliJ IDEA 11</a> &#8211; IDEA 11 предлагает скорость, новые рефакторинги, больше живых шаблонов, сравнение папок и многое другое</li>
<li><a href="http://www.sonarsource.org/sonar-2-13-in-screenshots/">Sonar 2.13 in screenshots</a> &#8211; Sonar потихоньку становится еще и платформой для онлайн code review</li>
<li><a href="http://www.agileengineeringdesign.com/2012/01/7-deadly-sins-of-automated-software-testing/">7 Deadly Sins of Automated Software Testing</a> &#8211; отличный список мифов и проблем при автоматизации тестирования</li>
<li><a href="http://www.scrumalliance.org/articles/381-estimation-techniques-for-teams-adopting-scrum">Estimation Techniques For Teams Adopting Scrum</a> &#8211; эволюция техники оценивания в молодой команде</li>
<li><a href="http://blog.gdinwiddie.com/2012/01/30/separate-retrospectives/">Separate Retrospectives</a> &#8211; идея отдельных ретроспектив</li>
<li><a href="http://scrumalliance.org/articles/394-dealing-with-negative-persuasion-can-the-product-owner-lead-to-quality-destruction">Dealing with Negative Persuasion: Can the Product Owner Lead to Quality Destruction?</a> &#8211; качество труднее всего пощупать, поэтому чуть что страдает именно оно</li>
<li><a href="http://habrahabr.ru/blogs/mysql/137380/">Резервное копирование данных в MySQL</a> &#8211; как делать резервное копирование данных в MySQL</li>
<li><a href="http://java.dzone.com/articles/surprising-results-autoboxing">Surprising results of autoboxing</a> &#8211; парочка неприятных сюрпризов от автобоксинга в Java</li>
<li><a href="http://www.estherderby.com/2012/01/command-control-lets-talk-about-power.html">COMMAND &#038; CONTROL: LET’S TALK ABOUT POWER</a> &#8211; Command &#038; Control также как и микроменеджмент базируется на недоверии</li>
<li><a href="http://blogs.steeplesoft.com/2012/01/grabbing-screenshots-of-failed-selenium-tests/">Grabbing Screenshots of Failed Selenium Tests</a> &#8211; снимаем скриншоты после упавшего теста с WebDriver и JUnit</li>
<li><a href="http://agilitrix.com/2012/01/what%E2%80%99s-the-first-decision-implementing-kanban-vs-scrum/">What’s the first Decision? Implementing Kanban vs Scrum</a> &#8211; Kanban или Scrum? Kanban или Scrum? проблема гораздо выше!</li>
<li><a href="http://java.dzone.com/articles/how-create-maintainable">How to Create Maintainable Acceptance Tests</a> &#8211; советы по созданию надежных и легко поддерживаемых приемочных тестов</li>
<li><a href="http://habrahabr.ru/blogs/testing/134462/">Selenium: работаем с элементами страницы, используя @FindBy и PageFactory</a> &#8211; отличная статья про шаблоны Page Object и Page Element</li>
<li><a href="http://java.dzone.com/articles/fixing-singleton">Fixing the Singleton</a> &#8211; шаблон Singleton морально устарел</li>
<li><a href="http://blog.mountaingoatsoftware.com/rotating-scrummaster-role">ROTATING THE SCRUMMASTER ROLE</a> &#8211; а вы ротируете роль ScrumMaster у себя в проекте?</li>
</ul>
<p>Интересное видео:</p>
<ul>
<li><a href="http://itbrunch.com.ua/tags/%D0%BC%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D1%8B/">Материалы конференции IT Brunch</a> &#8211; опубликована часть материалов конференции IT Brunch <a href="http://itbrunch.com.ua/program-time-management-2012-02-04/">&laquo;Time Management&raquo;</a></li>
<li><a href="http://video.yandex.ua/users/xpinjection/view/89/#hq">&laquo;Hadoop&raquo;</a> &#8211; доклад Владимира Орлова с седьмой встречи &laquo;Клуба анонимных разработчиков&raquo;</li>
<li><a href="http://video.yandex.ua/users/xpinjection/view/90/#hq">&laquo;Актеры в JVM&raquo; (часть 1)</a>, <a href="http://video.yandex.ua/users/xpinjection/view/92/#hq">&laquo;Актеры в JVM&raquo; (часть 2)</a> &#8211; доклад Виктора Тесленко с восьмой встречи &laquo;Клуба анонимных разработчиков&raquo;</li>
</ul>
<p>Читайте и набирайтесь новых знаний!</p>
<div class="shr-publisher-1750"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F06%2Fuseful-reading-volume-21%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+21'></a><a class='shareaholic-googleplusone' data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F06%2Fuseful-reading-volume-21%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+21'></a><a class='shareaholic-fblike' data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F06%2Fuseful-reading-volume-21%2F' data-shr_title='%D0%A0%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B0+%C2%AB%D0%9F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5+%D1%87%D1%82%D0%B8%D0%B2%D0%BE%C2%BB.+%D0%92%D1%8B%D0%BF%D1%83%D1%81%D0%BA+21'></a><a class='shareaholic-fbsend' data-shr_href='http%3A%2F%2Fxpinjection.com%2F2012%2F02%2F06%2Fuseful-reading-volume-21%2F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetBottom Automatic --> <img src="http://xpinjection.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=1750" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://xpinjection.com/2012/02/06/useful-reading-volume-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

