Записи с метками инженерные практики
Разговор о профессиональных разработчиках на IT PechaKucha
19 Февраль
21 февраля буду выступать на IT-People PechaKucha в Киеве. Программа собралась весьма неплохая. Долго думал о чем таком интересном можно было бы рассказать без упора на специализацию. В итоге решил поговорить о профессиональном разработчике и современным требованиям к нему.
Доклад называется «Портрет профессионального разработчика». Какой он, современный профессиональный разработчик? Что должен знать и уметь, чтобы не только работать на интересном проекте и получать высокую зарплату сегодня, но и иметь стабильный завтрашний день? Технологии и процессы не стоят на месте, а вместе с ними и требования к разработчикам. Чтобы оставаться «на плаву» надо работать над своими знаниями и навыками. Именно об этом мы и поговорим в течение 6 минут 40 секунд…
Если вы успели зарегистрироваться, то приходите послушать. Если нет, то я обязательно выложу слайдкаст этого выступления через некоторое время.
Как писать функциональные тесты с WebDriver грамотно
4 Декабрь
Почти 2 месяца назад я выступал на очередной онлайн конференции Auto ConfeT&QA с докладом «Не изобретайте велосипед! Грамотные функциональные тесты с WebDriver и Thucydides.». Доклад занял лишь четвертое место по результатам голосования участников, поэтому материалы его публикуются только сейчас. Вторая причина запоздалой публикации – поломка моего нового ноутбука, на котором хранились все материалы. Я кое-как восстановил их и решил опубликовать.
При подготовке доклада я сильно переработал мои старые презентации по Thucydides, чтобы в данном докладе больше подчеркнуть, что надо делать и зачем, а не с помощью какого конкретно инструмента. Получилось, на мой взгляд, достаточно неплохо для 30-ти минут. Эту тему я собираюсь разобрать более глубоко на конференции Selenium Camp 2013 в своем одноименном докладе. А вот и слайдкаст выступления:
Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!
Отчет о конференции XP Days Ukraine 2012
22 Ноябрь
Вот наконец и дошли руки написать отчет от организаторов о прошедшей конференции XP Days Ukraine 2012, который публикуем вслед за отчетом о Coding Dojo и отчетом о XP PechaKucha. Конференция проходила второй раз и в этом году мы решились на важный шаг – сделать ее двухдневной, а если считать с тренингами, то четырехдневной. За счет этого уменьшилось количество параллельных потоков и усилился отбор докладов. В программу попадали только самые достойные. Но на вкус и цвет как известно…
Изначально мы были нацелены на увеличение числа участников по сравнению с прошлым годом, но с учетом выбранного места проведения и изменений в формате решили не рисковать и ограничиться 300 участниками. Надо признать, что решение было верным – большего количества людей Парус просто бы не выдержал. Сами участники «повзрослели» по сравнению с прошлым годом – очень много было лидеров команд, технических лидеров, архитекторов. Это отличная тенденция, потому что именно эти люди приносят обычно новые подходы и технологии в компании.
Мы уже провели до этого 5 конференций и подготовка не вызвала особых сложностей, если бы не ИНТЕРНЕТ. Оказалось, что это самая настоящая проблема для Киева и, я подозреваю, для всей Украины. Вопрос с каналом решился достаточно быстро и у нас был надежный 100MB канал. А вот с оборудованием началась целая эпопея. «Уважаемые» поставщики либо предлагали решения, которые не выдержали бы и сотни подключений, либо предлагали купить у них оборудование, цена которого колебалась в пределах от $3000 до $6000. Это для двух дней интернета, не учитывая подключения и сопровождения. WTF?!? Интернет до сих пор является такой «высокой технологией»?
После многократных попыток найти компромиссный вариант, мы все таки нашли поставщика, который за адекватную цену установил нам оборудование. Оно заведомо со скрипом должно было тянуть сотни полторы подключений. Я не знаю как у остальных, но у меня интернет работал отлично. При этом большая часть жалоб на скорость и отваливание поступала от желающих смотреть онлайн видео или же что-то скачать. Ребята, вы на конференции! Вы пришли сюда получать знания и общаться! Почта, twitter, skype работали замечательно на протяжении всей конференции…
Пару слов хочу сказать о программе. Мы подбирали доклады очень тщательно, как для себя. И действительно, я просто разрывался между сценами – реально хотелось быть в двух местах одновременно. Сцены было две и это тоже оказалось правильным решением. В карточках обратной связи нам многие говорили, что не приходится делать еще более сложный выбор и качество докладов заметно повысилось. Еще одно оправдавшее себя решение – сделать одну сцену целиком на английском языке. Кто-то любит больше иностранных докладчиков и считает их гуру, а кто-то наоборот. Таким образом, у всех был шанс выбрать себе программу по вкусу.
Из иностранных докладчиков мы приглашали только практиков – тех, кто действительно знает об инженерных практиках не понаслышке. Я лично был на докладах Simon Brown, Johannes Brodwall, Daniel Worthington-Bodart, Miško Hevery, John Smart, Paweł Lipiński и остался очень доволен. Вообще было какое-то ощущение единого направления в докладах, они стройно выкладывали единую картинку современного применения инженерных практик. Очень много на конференции говорилось про тестирование, при чем как разработчиками так и тестировщиками (и не только автоматизация тестирования). Это классная тема, которая позволяет быстро и качественно создавать продукты.
Мы на этой конференции выступали в первом докладе совместно с Андреем Дзыней. Целью нашего доклада стала практическая демонстрация работы тандема тестировщика и разработчика в реальной жизни. Вот презентация этого выступления:
Мне пришлось выступить с еще одним докладом на замену – один из российских докладчиков не смог приехать. Поэтому я рассказал об эволюции Agile процессов и поисках «идеального процесса»:
Это было еще одно новшество на нашей конференции – мы на конец дня ставили менее технические выступления, потому что голова у участников становилась все «тяжелее» и «тяжелее». К концу дня уже очень тяжело соображать. Поэтому мой доклад закрывал первый день на русской сцене, а Sander Hoogendoorn просто «разорвал зал» во второй день. Такие доклады мотивируют продолжать развиваться, двигаться вперед и никогда не останавливаться на достигнутом. Я сидел на его докладе в первом ряду и получал настоящее удовольствие от тонких шуток и упреков в сторону «agile» сообщества и его активистов.
Огромное спасибо хочу сказать нашему фотографу Анатолию Баранову, который очень старался и в результате получился великолепный фотоотчет о конференции. На мой взгляд подборка фото очень удачная:
Наши спонсоры в этот раз тоже решили отличиться. Компания Luxoft подкармливала участников мандаринами на протяжение всей конференции, а в конце разыграла Kindle Touch HD, что позволило как минимум одному участнику конференции уйти домой довольным по уши.
Наш постоянный партнер компания DataArt в этот раз не только поила всех вкуснейшим кофе, но и разнообразила жизнь участников на конференции веселой игрой в «гиганта мысли». Это было очень круто, не смотря на то, что я проиграл все свои сражения.
На розыгрыш призов в конце конференции компания выставила 5 внешних дисков размером 1TB. Отличный подарок для IT-шника, который никогда не будет лишним в хозяйстве. Мы как обычно дарили книги одного из докладчиков и участие в наших мероприятиях на шару, что тоже очень выгодно.
Возвращаясь еще раз к формату конференции, как организатор скажу, что 2 дня – это гораздо круче для организаторов. Второй день проходит очень спокойно, без паники, спешки и у организаторов есть возможность расслабиться и пообщаться с участниками или посетить доклады.
Как обычно, не обошлось и без проблем. Помимо интернета, ожидаемой проблемой стал гардероб. Не смотря на помощь волонтеров, гардероб не справлялся с наплывом людей во время обеда и выстраивалась очередь. За 10 минут она полностью рассасывалась, но люди упорно стояли в ней вместо того, чтобы расслабиться и выйти на обед чуть позже. Это наш менталитет.
Проблемы бы не было, если бы не изначальная неприятность – в Парусе нет места для обеда участников. Это к сожалению нам не исправить, поэтому мы постарались максимум времени выделить под обед, чтобы все успели покушать и вернуться на конференцию. Полтора часа должно было хватить с головой.
Хотелось бы ответить товарищу Х, который в форме обратной связи написал «где парковка? за такие БАБКИ могла и быть!». Слово БАБКИ выделил я, в оригинале оно не выделено, чтобы подчеркнуть каким большим вложением средств человек считает $200 за 2 дня конференции (с учетом последней цены без скидок). За эти деньжищи 100% должна быть парковка в самом центра города, где час парковки обычно стоит 12 гривен. К сожалению, эта User Story «Я как участник конференции хотел бы иметь бесплатную парковку, чтобы приехать на конференцию на машине и больше не платить денег» сильно противоречит другой User Story «Я как участник конференции хотел бы место проведения конференции поближе к центру и транспортным развязкам, чтобы было удобно добраться и можно было после конференции пойти посидеть куда-то с друзьями». Мы отдали приоритет второй User Story и поэтому каждый парковался самостоятельно, кто-то платно прямо рядом с Парусом, а кто-то совершенно бесплатно на другой стороне дороги.
Прежде чем подводить итоги, хочется высказать слова благодарности докладчикам, которые подготовили замечательные доклады и без которых конференция не была бы такой интересной, волонтерам, которые помогли нам организовать эту конференцию и другим организаторам в лице Анны Алименковой, Алексея Солнцева и Алексея Резчикова! Все вместе мы сделали замечательное событие в IT мире Украины!
Мы в ближайшее время займемся сбором материалов конференции, которые будут опубликованы на отдельной странице сайта конференции. Примерно через месяц будут готовы видеозаписи докладов, которые уже не терпится посмотреть. А следующей конференцией уже в новом 2013-ом году станет Selenium Camp 2013. В этот раз тоже в двухдневном формате! До встречи на наших мероприятиях!
Ответы на вопросы: О деградации кода, итеративной инкрементальности и инженерных практиках
24 Октябрь
Я непростительно долго не отвечал на заданные вопросы, за что приношу всем извинения. Но, лучше позже, чем никогда
Итак, начну с самого абстрактного и космического вопроса (текст вопроса переформулирован, исходно это была страница текста):
В большом и сложном проекте с распределенной архитектурой, несмотря на постоянно выделенных архитекторов, очень много проблем с внесением изменений и последующим багфиксом. При этом, активно применяется предварительное проектирование, прототипирование, модульное тестирование (80% актуальное покрытие), ревью кода, рефакторинг кода, автоматизация функционального тестирования (60% актуальное покрытие) и другие полезные инженерные практики. Процессы – гибкие (SCRUM, Kanban), представители закачика в командах есть. Зарелизенных экземпляров продукта в разных версиях – много, требуется обратная совместимость. Текучесть команды – как у всех. Авторитарно принятые руководством обязательства – случаются, но редко. Людей в разработке и сопровождении работает много и ещё больше увеличивать штат руководство не хочет. Как ускорить релизы и уменьшить затраты на их сопровождение? Потому что динамика не радует, на горизонте виднеется ж.
Можно было бы влёт ответить: у вас неправильный agile неправильное использования инженерных практик неправильный процесс. Но, давайте разберемся. Если увидите очевидности для себя – не обессудьте.
Скорее всего, причина ваших проблем – так называемая деградация кода, естественный процесс, которому подвержен любой проект. Не верьте сказочникам, которые рассказывают, как у них все и всегда классно. Даже если вы вложились в предварительное проектирование с не просто анализом реализуемости вашими силами, но и анализом возможности дальнейшей поддержки вашими силами (опытные разработчики знают, что это не одно и то же) – в будущем, криворукие разработчики и скудоумные управленцы ваша команда обязательно начинает искать компромиссы между качеством и сроками под разными благовидными предлогами и/или под давлением обстоятельств.
Добавляет свою долю и политический подход по сохранению пресловутой обратной совместимости, который приводит к жесткости API, что автоматически при естественной текучке кадров порождает множество грязи вокруг самого API и в средствах его тестирования.
Самообманом касательно самоуправляемости команд вроде уже все переболели на волне SCRUM, но рецедивы доверия к команде также приводят к «самизнаетечему» [c]. Ответственность на product owner-а при этом фиг переложишь, тем более, что общая тенденция к взращиванию PO внутри команды имеет место быть.
Ну и главная причина – итеративность и инкрементальность разработки, которая наше все понятно почему (бабло побеждает добро
. Очень хорошо про это рассказано тут: Technical Debt, Process and Culture (автор – тот самый Michael Feathers, который написал вместе с Дядей Бобом Working Effectively with Legacy Code) Именно она ускоряет энтропию. Инкрементальность и итеративность приводит к тому, что появляется больше компромиссов с уклоном в уже существующий код. Часть результатов итеративной разработки устраняется рефакторингом, который с точки зрения руководства и заказчика суть есть не производительная фаза, а некое кошерное только для разработчиков действо с невнятным денежным эквивалентом в непонятной переспективе. Поэтому – полностью компромиссы вам вычистить никто не даст.
Итак, причина деградации кода – совсем не в неправильности архитектурирования и применения инженерных практик. Деградацию кода невозможно предотвратить, её можно только снизить и отсрочить проблемы. Применяемый авторами вопроса набор практик правильный и нужный, я не берусь по абстрактному описанию что-то советовать добавить или убрать. Как обычно – помогает перестановка приоритетов, ибо всего и сразу добиться не получится. Что я бы посоветовал:
Перетряхнуть приоритеты практик. Многие инженерные практики внедряются «потому что нужно». Попробуйте озадачиться программой вывода проекта из текущего «планирования со снижением» без увеличения штата команды и без существенной подвижки обязательств. Например:
- Переоценить приоритет автоматизированных функциональных тестов – без полного покрытия модульными тестами вы проживете, без функциональных – нет. Перетряхните команду тестировщиков, оставьте на ручном тестировании самых талантливых в свободном поиске, остальных – смещайте в сторону автоматизированного тестирования, вплоть до того, что цепляйте тестировщика к разработчику и пусть они «взаимопроникают» в сознание друг-другу
- Переоценить приоритет ревью и рефакторинга дизайна над кодом. Дизайн тоже очень сильно подвержен деградации, но он – перивичен. Лучше пусть код местами будет останется грязным, но дизайн будет чистым.
- Переоценить подходы к ревью – в долгосрочной перспективе только командное ревью позволит снизить эррозию. Никаких гуру-лидов, завязывайте с погонами. Это всяко дешевле процесса стандартизации подходов в проектировании и разработке между командами и не требует капитальных затрат.
- Повысить приоритет рефакторинга как такового относительно новых фич. Планы работ без взвешенных результатов анализа необходимости рефатокринга – не принимать принципиально. Периодически – устраивать субботники по чистке дизайна и кода, даже если они идут вместо новых фич, а не вместе с ними. Гигиена по отношению к рефакторингу – это наше все.
- Ввести практику оценки технического долга при проектировании. Это даст обратное влияние на культуру работы с требованиями и согласования user story с заказчиком. Но, придется научиться продавать это заказчику и постоянно учитывать в своих активностях.
- Синхронизируйте понятие «готово» у маркетинга и у разработчиков – те самые компромиссы часто возникают из-за некорректно взятых на себя обязательств. Привлекайте разработчиков к проектированию обязательств. Сразу о возможном флуде и флейме – разделение по структурно-функциональному признаку и правило 3-х чтений здорово облегчают жизнь.
- Как бонус из всего вышеперечисленного - бОльшая степень вовлечения команды и восстановление часто теряемой связи между требованиями и командой.
Все это не потребует капитальных затрат – просто перераспределение текущих усилий. Ну а дальше надо посмотреть. Остается вопрос – как это все увязать с политикой компании и «продать» заказчику, но в постановке вопроса недостаточно данных о заказчиках и модели отношений с ними. Потому и перечислял только те вещи, которые могут быть оформлены как «внутренняя кухня» и не требуют согласования.
К сожалению, в большинстве случаев – дело не идет дальше призывов к повышению культуры производства и уровня компетенций разработчиков, а заканчивается все увеличением штата и иллюзией повышения производительности. Ну а дальше вас купит венчурный дядя и это будут уже его проблемы
Измените модель распространения продукта и отказывайтесь от обратной совместимости. Решение с различными версиями экземпляров продукта весьма и весьма убыточно. Ежу понятно, что маркетинг не хочет отдавать новые фичи вместе с багфиксом по уже фиксированным оплаченным контрактам. Переходите к блокировке фич и контролю конфигураций – всяко дешевле, чем держать могучие команды поддержки. История знает примеры, когда на обратной совместимости схлопывались корпорации, оно вам надо?
Результат работы команды архитекторов/разработчиков/тестировщиков/… всяко лучше результатов Чака Норриса гуру-одиночки. Роль личности никто не отменял, но одна из причин деградации – утеря ценностей по дизайну и кодописанию в результате текучки и компромиссов (см. выше). Если у вас за какой-то этап работ отвечает один человек – это должно вас сильно напрячь. Банальную ошибку, выгорание, эффект автобуса ещё никто не отменял. Сразу отвечаю на вопрос о единоначалии и единой точке ответственности – попробуйте концепцию лидерства группы, а не начальничества над группой.
Прохождение модульных и функциональных тестов и ревью дизайна/кода между членами команды ещё не ни о чем не говорит. Нужно независимое ревью дизайна (желательно – на каждой итерации) и кода (можно – перед релизом) внешней командой архитекторов. Миксуйте ревью-команды из лидеров технологических направлений и/или лидеров функциональных направлений – очень полезно получить неожиданный взгляд со стороны. Минимальный критерий качества работы такой команды – нахождение грязностей с рефакторингом дизайна (или постановкой задачи на рефакторинг) и нахождение грязностей в коде с постановкой задачи на рефакторинг. На большом проекте таких команд нужно парочку и перемешивать их периодически – чтобы подстраховаться от «оптимистичного френдовства» из разряда «да это нормальные перцы, у них последние пол-года все чисто».
Иными словами – все те же доверяй, но проверяй, только сбоку. Такие дела.
Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!
Краткий отчет о конференции AgileEE 2012
9 Октябрь
В эти выходные я выступал еще на одной конференции – AgileEE 2012. Долго не буду томить рассказом о том, как прошла конференция. Расскажу только, что мне понравилось, а что не очень. Начнем с позитивного:
- На конференцию собралось не так много людей и за счет этого она стала более уютной. А это значит, что никаких очередей, толкучек, переполненных залов и т.д. Я чувствовал себя гораздо комфортнее и даже подумал над тем, чтобы закрыть регистрацию на XP Days Ukraine 2012 пораньше.
- Гораздо меньше участников приходит с базовыми знаниями, что не может не радовать. Люди теперь больше обсуждают как у кого что работает и как можно улучшить, а не что такое Agile и Scrum.
- Очень правильным решением было сделать 3 сцены вместо привычных 4-ех. Это позволило избежать знакомой всем толкучки в небольших залах.
- Технически все было отлично организовано – удобные микрофоны, отличный звук, адекватные проекторы.
- Отличный обед. В этот раз Президент-Отель порадовал выбором блюд и качеством еды. Но это снова один из эффектов небольшого числа участников.
- Henrik Kniberg – просто супер! Он явно отдохнул после в отпуске с семьей и энергия на докладах била из него ключом. 3 keynote доклада в один день и все на высоком уровне! Аплодирую стоя!
- Стабильно высоким качеством выступлений порадовали Alistair Cockburn и François Bachmann – их мастер-классы были отлично подготовлены и показались мне очень полезными.
Что не понравилось:
- Конференция проходила полностью в выходные и не получилось отдохнуть от рабочей недели. Мы не ломовые лошади чтобы работать без остановки. Мне кажется, стоит задействовать будние дни – ведь посещение конференции приносит пользу проектам и компаниям.
- Спорным моментом стал банкет в первый день. Много кто приехал на второй день либо с больной головой, либо с опозданием.
- Тематика докладов уходит все дальше и дальше от практики. Keynote выступления во второй день были совершенно абстрактными и философскими, что сильно расстроило. Пожалел, что так рано проснулся.
Я выступал на тему эволюции Agile процессов. Что там дальше за Scrum? Куда двигаться опытной команде? Почему и как эволюционировали современные Agile процессы? На эти и другие не менее важные вопросы я постарался дать ответ в своей презентации:
Судя по количеству оставленных карточек со словами благодарности, доклад участникам понравился и показался полезным.
Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!
XP Days пройдут в Украине с 14 по 17 ноября
24 Июль

Мы рады сообщить, что уже вплотную занялись подготовкой одного из самых интересных наших мероприятий – конференции XP Days Ukraine. Кто еще не знает, XP Days Ukraine – это больше чем просто конференция. Мы планируем организовать масштабное мероприятие, посвященное инженерным аспектам Agile подходов, длительностью несколько дней. Первые два дня (14-15 ноября) будут насыщены разнообразными тренингами, мастер-классами и встречами. Следующие два дня (16-17 ноября) будут отведены для докладов, открытых дискуссий и прочих выступлений в формате конференции.
Подобные мероприятия уже давно проходят в других странах и пользуются большим успехом. В Украине XP Days впервые прошли 15-17 декабря 2011 года и собрали более 300 участников из 8 стран. Тематика инженерных практик и подходов выбрана не случайно. Ведь большую часть процесса разработки составляет именно написание кода. У вас появляется отличная возможность не только послушать доклады от ведущих специалистов направления, но и принять участие в нескольких практических тренингах или мастер-классах. Вы можете ознакомиться с отчетами и материалами прошлогодней конференции, чтобы лучше понять специфику и направленность конференции.
На конференции будут освещены основные инженерные практики: Unit Testing, TDD, Continuous Integration, BDD, Code Review, Refactoring, Acceptance Testing и другие. Также будут обсуждаться вопросы архитектуры в Agile проектах, борьбы с технической задолженностью (Technical Debt), взаимоотношений разработчиков и тестировщиков, а также многие другие проблемы современной разработки. Мы будем рады видеть на конференции разработчиков, тестировщиков, лидеров команд, менеджеров проектов и всех, кто является сторонником современных подходов в разработке и хочет усовершенствовать свои навыки и знания. Конференция XP Days Ukraine по праву получила статус самой технической конференции на тему Agile подходов в Украине.
Мы приглашаем докладчиков, имеющих большой практический опыт в применении Agile инженерных практик, принять участие в конференции. Если вы чувствуете в себе силы и желание поделиться опытом с другими, то присылайте нам свое предложение о выступлении. Предложения принимаются до 1 октября. Мы также будем рады любым рекомендациям с вашей стороны по поводу докладчиков, которых вы бы хотели увидеть на конференции. Список докладчиков постоянно пополняется.
Мы приглашаем спонсоров помочь провести конференцию на высоком качественном уровне и сделать участие в конференции доступным для широкой аудитории. Также спонсорская помощь поможет пригласить известных докладчиков и сделать программу конференции более насыщенной. Если у вас есть желание стать спонсором конференции, то мы с радостью рассмотрим ваше предложение.
Участие в конференции будет платным, но мы приложим максимум усилий, чтобы стоимость была минимальной и не составила проблем для большей части желающих посетить конференцию. Количество участников конференции будет ограничено. Мы планируем собрать не более 400 человек. На данный момент у вас есть возможность ранней регистрации по самой низкой цене – 1100 гривен. Указанная цена действует только при регистрации и оплате участия до 15 августа. Стоимость участия будет расти по мере приближения даты проведения конференции.
Присоединяйтесь, будет интересно!
Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!
Что готовит нам весна?
29 Март
Весна постепенно набирает обороты. Март уже заканчивается и скоро наступят солнечные (мы искренне надеемся) апрель с маем. Мы запланировали много событий на эту весну. Что же вас ждет?
29 марта состоится 14-ая встреча «Клуба анонимных разработчиков». Мы смело можем назвать ее одной из самых интересных встреч – ведь будет рассматриваться «горячая» тема облачной разработки. На суд участников будут представлены доклады о разработке на облаке Amazon и Windows Azure. Поэтому каждый найдет для себя что-то интересное. Встреча пройдет в уютном офисе ДатаАрт по адресу Бехтеревский переулок 14Е. Начало в 19:00.
6-7 апреля состоится новый тренинг «Инженерные практики в Agile». 2 тренера (Николай Алименков и Алексей Солнцев) в течение 2-ух дней познакомят участников с 8-ью современными инженерными практиками. Будут затронуты вопросы внедрения, поддержания и пользы от этих практик. Все практики будут демонстрироваться на реальных примерах и включают в себя многолетний опыт использования наших тренеров. Это один из лучших наших тренингов. Группа почти набрана, осталось всего 5 мест.
13-14 апреля мы впервые проведем новый тренинг Дмитрия Ефименко под названием «Практики эффективного, но экономного проектирования». Дима вложил в этот тренинг весь свой опыт по проектированию программного обеспечения. Тренинг отлично сочетает в себе информацию о процессах разработки и проектирования, работу с требованиями, инженерные практики и подходы, анализ и управление рисками, а также несколько интересных практических заданий. Участники даже будут писать реальный код.
Группа еще формируется и не поздно присоединиться к составу участников.
21-22 апреля состоится важное событие в мире тестирования – международная конференция SQA Days 11. Наш тренер Николай Алименков выступит на конференции с докладом «А вы знаете что тестируют ваши тесты?». В докладе речь пойдет о связывании тестов с самыми важными артефактами вашего проекта – требованиями и кодом. Николай на практических примерах продемонстрирует как полностью контролировать что и как тестируют ваши тесты. Помимо этого, 20 апреля мы проведем популярный тренинг «QA в Agile». Этот тренинг позволит участникам познакомиться с ролью тестировщика в Agile процессах, грамотно настроить процесс QA в Agile команде, разобраться с ролью автоматизации тестирвания и современными веяниями в мире тестирования. Тренинг будет полезен как менеджерам, так и обычным тестировщикам.
В апреле проходит еще несколько интересных конференций в России и Украине, но побывать везде просто не хватает времени. Вот некоторые из них: CodeFest 2012, Cloud Foundry Open Tour 2012, Software People’12, РИТ++, Quality Assurance Day’12, Fun ConfeT&QA. Мы также постараемся провести очередную бесплатную онлайн конференцию IT Brunch. Тема еще окончательно не выбрана, но в этот раз мы планируем сделать ее более технической.
28 апреля пройдет еще один наш новый тренинг «Успешный старт проекта». Сергей Поволяшко подготовил этот тренинг на основании своего многолетнего опыта управления проектами. На тренинге вы сможете узнать какие активности стоит проводить на стадии инициирования проекта, какие риски есть и как с ними бороться, как оценивать проекты с финансовой и временной точек зрения, что необходимо включить в контракт и как это сделать. Если вы менеджер и ваша работа связана со стартом новых проектов, то этот тренинг для вас!
27-28 апреля Александр Белецкий проведет свой новый тренинг «Веб-разработка с использованием ASP.NET MVC». Этот тренинг рассчитан на программистов, знакомых с концепциями ASP.NET, возможно уже имеющие опыт с Web Forms, но желающих приобрести практические навыки с новой, популярной технологией ASP.NET MVC. Тренинг очень насыщенный и на нем будут рассмотрены практически все аспекты разработки современных веб приложений с использованием ASP.NET MVC.
11-12 мая в Москве состоится очередная конференция для разработчиков Application Developer Days-3. На протяжении двух дней участники смогут посетить множество совершенно разных докладов на тему разработки, а также пообщаться с коллегами. Николай Алименков выступит с докладом «Разработка распределенных приложений на AWS», в котором поделится своим опытом (более 2-ух лет) в разработке приложений в облачной среде. Николай рассмотрит сервисы, предоставляемые Amazon (самым популярным облачным провайдером на данный момент) и даст множество полезных советов тем, кто начинает или только задумывается над переездом в облака.
19 мая мы уже во второй раз соберем Java разработчиков в Киеве на большую конференцию для Java практиков – JEEConf 2012. В этот раз мы собрали еще более интересную программу. Докладчики приедут в Киев с разных стран и будут освещать различные инструменты, методики и практики из мира Java. Николай Алименков выступит на конференции с докладом «За что я ненавижу Hibernate?», в котором рассмотрит недостатки одного из популярных ORM решений и способы их обхода. На данный момент уже более 300 участников изъявили свое желание участвовать в конференции. Это будет действительно яркое событие наступающей весны.
Перед конференцией мы организуем ряд тренингов, посвященных Java разработке: «JavaScript for Java developers», «TDD в Java», «Introduction to Java EE 6″. Все тренинги проводятся опытными профессионалами индустрии. Группы наполняются очень быстро, поэтому поторопитесь занять себе место в составе участников.
Завершит весеннюю гонку конференция AgileBaseCamp CREW DRILL в Харькове 26-27 мая. Это два дня, насыщенных докладами экспертов, воркшопами и вдохновляющими блицами. Панельные дискуссии и Open Space, демонстрации от практиков и два полномасштабных мастер-класса. Наши тренеры Александр Белецкий, Дмитрий Ефименко и Николай Алименков готовятся выступить с докладами. Программа конференции еще формируется.
А еще на апрель и май у нас запланированы корпоративные тренинги в Киеве, Днепропетровске, Воронеже и Москве. Приглашайте нас в свой город и мы с радостью приедем!
Вот такая интересная выдалась весна. Будем рады видеть вас на перечисленных мероприятиях!
Успешное выступление на онлайн конференции Auto ConfeT&QA 2012
21 Февраль

13-15 февраля с 17 до 19 часов по московскому времени проходила онлайн конференция для специалистов по автоматизации тестирования – Auto ConfeT&QA. Организаторы собрали докладчиков из России, Украины и Беларуси, которые представили на суд слушателей 10 докладов. Уровень организации был достаточно высоким, докладчикам помогали подготовиться к выступлению, репетировали с ними доклады, делали ревью презентаций. В результате все выступили достойно.
Я тоже принимал участие в качестве докладчика с докладом «TDD c помощью функциональных тестов на WebDriver». Я давно хотел выступить на данную тему и как раз представилась неплохая возможность это сделать. TDD (Test Driven Development) является популярным подходом среди разработчиков. Сначала пишется тест, а только потом на основании этого теста пишется реализация. Эта практика дает много преимуществ, позволяя сосредоточиться на небольшом аспекте функциональности и автоматизировать проверку правильности его реализации. Таким образом, разработчик сразу думает о вариантах использования и реализует минимальный необходимый функционал.
TDD можно применять не только на уровне модульных тестов, но и на уровне функционального тестирования. Это дает возможность задуматься о структуре и особенностях функциональности еще до ее реализации. Вам не придется мучиться в попытках протестировать приложение, которое не задумывалось для тестирования (сложные локаторы, непонятная структура страниц, запутанные связки элементов). В качестве сопутствующего эффекта, TDD позволяет сократить время на ручную проверку разработчикам и автоматизировать 100% функциональных тестов.
Многим понятны преимущества TDD, но они не знают с чего начать. Некоторым кажется, что написание теста до появления реализации вообще невозможно. В своем докладе я рассказал не только о преимуществах и особенностях данного подхода, но и на примерах продемонстрировал, как работать с TDD на практике. Были рассмотрены варианты распределения ролей, техники написания тестов и особенности их использования. В качестве основного инструмента для тестирования использован WebDriver.
Доступен слайдкаст доклада:
Так как я показывал живую демонстрацию, то посмотреть доклад в полном объеме можно на видеозаписи:
Лично мне понравилось несколько докладов. Отлично выступил Алексей Баранцев на тему «Разработка стратегии автоматизации». Леша очень опытный докладчик, особенно в онлайн режиме. Доклад был насыщен полезными советами, которые помогут многим начать автоматизировать и снизить риски провала.
Яркий и живой доклад получился также у Ольги Киселевой, которая выступала первый раз. У нее была очень спорная тема «Можно ли писать автотесты на родном языке?», которая вызвала много споров и дискуссий. Но сам доклад никого не оставил равнодушным.
Еще я для себя отметил доклад «Обходные пути в автоматизированом тестировании», с которым выступал Дмитрий Жарий. Не всегда получается жить в идеальном мире и к нему приходится приспосабливаться. Именно о таких способах обходить препятствия и рассказывалось в докладе. Просто и со вкусом.
Остальные докладчики тоже молодцы. Спасибо всем за подготовку и потраченное время!
Организаторы проводили голосование среди участников за лучший доклад на конференции. Результаты опубликовали сегодня. С отрывом в один голос я занял второе место после Алексея Баранцева. Леша благородно отказался от приза по причине причастности к организации конференции. В результате, первый приз достался мне – игровая приставка Xbox 360 + сенсор Kinect. Я несказанно рад этому факту! Значит, мои усилия были интересны людям и приносят пользу. А теперь мое выступление принесло пользу и мне лично.
Я буду с удовольствием выступать в очередной онлайн конференции из этой серии – Chief ConfeT&QA. На этот раз с докладом «Жизнь без тестировщиков: миф или реальность?». Не подумайте, я не против тестировщиков. Наоборот – я за то, чтобы они занимались интересной работой и приносили большую пользу проекту. Подробности можно будет услышать на моем выступлении.
Участники задавали достаточно много вопросов после доклада. Ниже вы можете найти мои ответы:
Вопрос: Какими средствами CI докладчик пользуется (советует пользоваться) наряду с TDD?
Лично я уже давно почти везде пользуюсь TeamCity (http://www.jetbrains.com/teamcity/). Отличный UI, множество уникальных фичей, отличная интеграция с различными IDE, поддержка для практически всех известных мне инструментов, классная архитектура и т.д. Бесплатная версия подойдет для большей части проектов и не вызовет проблем или нехватки чего-то. На втором месте Jenkins (http://jenkins-ci.org/). Основной аргумент за него – бесплатный с огромным сообществом, а это значит куча плагинов под все, что только можно придумать. Но UI достаточно беден и нужно конфигурировать плагины самостоятельно.
Вопрос: А если ошибки возникнут потом при эксплуатации? Те тесты, которые не предусмотрели в «чек-листе», согласованном с клиентом?
То, что мы не предусмотрели, не могло быть реализовано. Оно должно быть реализовано как отдельная доработка. А там действует все тот же TDD. На любой баг или недоработку сначала пишем тест, а потом уже начинаем работу…
Вопрос: По факту все же получается, что тест пишется паралельно с реализацией?
В большей части случаев (из моего опыта) тесты написать проще, чем реализацию функциональности. Поэтому тесты появляются достаточно быстро, но не полностью до начала разработки. Зато их обсуждение происходит перед началом работ, а этого хватает для получения практически всех преимуществ.
Вопрос: А какую test management system посоветуете?
В идеале – никакую. Я уже говорил о дублировании усилий на поддержку тестов и тест кейсов. Я вижу этот процесс как полную автоматизацию, поэтому предлагаю избегать использования test management систем. Они заведомо склоняют нас к дублированию.
Вопрос: Авто тесты лучше писать до разработки приложения или после и кто должен за это отвечать?
Конечно же их лучше писать до разработки. В этом и есть подход TDD. Таким образом вы сможете получить весь спектр преимуществ, о которых я упоминал в докладе.
Вопрос: Что делать если UI достался от legacy проекта?
Legacy код будет проблематичным для всех, включая тестировщиков. Но TDD заставляет работать над проблемами всей командой. Разработчики будут помогать победить проблемы. Вам придется разработать с течением времени тонкую прослойку над вашим нетестируемым UI и в будущем будет на порядок легче.
Вопрос: Опиши детальнее возможности инструмента testdox.
TestDox – это очень простой, но удобный инструмент. Он ставится как плагин к IDE и позволяет разбирать названия тестовых методов на слова. Таким образом можно включать гораздо больше полезных данных в название теста, причем писать просто на английском языке, избегая особенностей языка программирования (подчеркиваний, camel case и прочих). Поддерживается редактирование, список тестов, создание новых тестов. Таким образом, данный плагин приближает вас на шаг к тестам в качестве документации. Остается только подключить мозг.
Вопрос: Что ты думаешь по поводу BDD?
BDD – отличная практика, которая является подмножеством TDD. Вместо тестов рекомендуется начинать с поведенческих шаблонов приложения, причем оформлять их в человеческом виде (в основном предложениями английского языка). Не всегда дополнительные расходы времени на специализированный инструмент действительно оправданы. Если никто со стороны бизнеса не заглядывает в эти тесты, то возможно стоит перейти на уровень технических тестов с DSL.
Вопрос: Прокомментируй еще раз рекомендации с чего начать.
Начать стоит с того, чтобы осознать четко для себя зачем и почему стоит работать по TDD. После этого стоит донести свои мысли и идеи до всех членов команды. Причем не то, что вы собираетесь работать по TDD, а то, какие преимущества могли бы получить все от этого. Если у вас получится это сделать, то все будут хотеть применить TDD. А потом дело лишь в стратегии. Вам нужно найти удобный момент и начать внедрение. Поддержка команды поможет вам сделать это достаточно быстро (я имею ввиду начать). А дальше у вас будет освобождаться все больше времени за счет 100% автоматизации новой функциональности и вы сможете укрепить свои позиции. И не забудьте подготовиться морально к тому, что придется поломать мозг, как свой так и коллег.
Удачи!
Новые инструменты в моем арсенале TDD
17 Февраль
Недавно, я открыл для себя 3 новых интструмента, которыми хочу поделится с вами. Более точно, это один инструмент и два фреймворка. Посмотрим!
NCrunch
NCrunch это просто потрясающее расширение к Visual Studio созданный @remcomulder. Он детектирует все тесты в вашем солюшине и перезапускает их как только исходный код меняется. Забудте про ручной запуск тестов навсегда, это просто потеря времени. Вам даже не обязятельно нажимать Ctrl + S, просто продолжаем кодить как и раньше.
Сначала, я очень скепртически относился к подобным инструментам, но NCruch изменил мое мнение. Он поддерживает все главные юнит тест фреймворки как NUnit, XUnit, MSpec etc. Кроме того, он позволяет собирать метрики покрытия (которые, отображаются прямо в VS редакторе), запуск тестов в дебаггере, поддержка многих ядер и т.д.
NCruch, это то что сделает ваш TDD более «гладким», позволяется сфокусироваться на главных вещах и отвлечся от рутины.
NSubstitute
На протяжении долгого времени, я был приверженцем Moq фреймворка и не видел причин его менять. До того как появился NSubsitute. Я с трудом представляю, что может двигать разработчиками, которые начинает делать «еще один фреймворк для моков», кажется, что это не имеет смысла. Но эти ребята доказывают, что я не прав.
Итак, что там нового? Во-первых это очень понятный API. Никаких тебе new Mock() или MockGenerator.GenerateMock(), создание тестовых двойников это не более, чем Substitute.For<IEntityToMock>(). Мокирование свойств, возращение множественных результатов, поддержка событий и т.д. Для начала очень круто прочитать getting started материалы для старта.
Лучшая фича, как по мне, это то, что с использованием экстеншн методов они отказались от лямбд, для инициализации моков. Это делает код более читаемым и чистым. Я сделал маленький gist, в который поместил примеры использования Moq и NSubstitute вместе.
Я не могу сказать, что Rhino или Moq это гораздо хуже NSubstitute.. Нет, я могу сказать, что NSubstitute немного лучше их. Таже функциональность, но с меньшим количесвом кода, это серьезный аргумент для меня.
[Test]
public void should_send_an_email_if_users_signs_up_nsub()
{
// arrange
var emailService = Substitute.For<IEMailService>();
var controller = new LoginController(emailService);
// act
controller.SignUp(new SignUpModel { Email = "a@a.com", Password = "xxx" });
// assert
emailService.Received().SendEmail(Arg.Any<EmailMessage>(), "current");
}
FluentAssertions
Опять же, годами я следовал простому NUnit’s Assert.That() методу. Я также немного смотрел в сторону SharpTestsEx, но FluentAssertions от @ddoomen изменил это.
FluentAssertions также основан на екстенш методах, и позволяет избавиться от вызова Assert.That, применяя ассерты непосредсвенно к объекту. Пару примеров:
{
// NUnit.Assert style..
Assert.That(result, Is.EqualTo(3);
// FluentAssert style..
result.Should().Be(3);
}
Это очень простой пример. Мощь FluentAssertions проявляется тогда, когда необходим множественный ассерт на сложных объектах:
{
"somestring".Should().Contain("some").And.HaveLength(10);
}
Он также добавляет хорошую поддержку для работы с Коллекциями, Датами, Guids, Исключениями, XML и т.д. Проект размещен на codeplex, вот документация.
Выводы
Очень классные инструменты, которые я осванию сейчас и пока что впечатления очень хорошие. Большое спасибо @skalinets, которые покаазал мне их.
Оригинал статьи – http://www.beletsky.net/2012/02/new-tools-in-my-tdd-arsenal.html.
Второй шанс попасть на XP Days Ukraine
23 Декабрь
Мы определились с расписанием мероприятий на зимние месяцы. Конец февраля конечно же пройдет под флагом Selenium Camp. А вот остальное время мы решили посвятить инженерным практикам. Это отличный шанс для тех, кто не успел или не смог принять участие в конференции XP Days Ukraine.
Мы получили много благодарственных отзывов от участников тренингов, которые проходили в преддверие конференции. Количество мест было ограничено и не все смогли попасть на них. Поэтому мы решили повторить практически такой же набор тренингов в феврале.
Сначала хочу анонсировать тренинги по TDD. Не буду расписывать зачем и почему стоит работать по TDD и какие преимущества дает эта практика. Я уже писал на эту тему раньше и не хочу повторяться. Я считаю TDD самой полезной инженерной практикой. Мы снова проведем тренинги в разрезе разных языков программирования. Это будут PHP, .NET и Java.
Последний раз тренинг «TDD в Java» вел один из докладчиков XP Days Ukraine – поляк Paweł Lipiński. Он отличный тренер и его стиль проведения тренинга очень классный. Много практики, работа в паре с тренером и небольшие сфокусированные примеры. Все это позволяет легко воспринимать материал и при этом пробовать применять полученные знания на практике. 2 дня оказалось недостаточно, чтобы Павел раскрыл все темы, которые запланировал изначально. Программа тренинга очень насыщенная. Обычно он ведет подобные тренинги от 3 до 5 дней. Почему бы и не попробовать? Мы решили впервые провести столь продолжительный тренинг, хотя за рубежом это распространенная практика. Кроме того, мы будем вести этот тренинг в паре с Павлом. Участники смогут получить больше персонального внимания и увидеть стиль работы двух тренеров. Итак, тренинг пройдет 9-11 февраля и будет длиться 3 дня. Основной язык тренинга – английский. Стоимость участия составляет 2500 гривен (обед включен во все дни). Размер группы ограничен 12 участниками. Торопитесь зарегистрироваться и забронировать себе место в группе.
Тренинг «TDD в .NET» проведут Александр Белецкий, который на этой неделе стал нашим официальным тренером, и Сергей Калинец. Ребята сделали очень неплохой тренинг, в котором делятся своим многолетним опытом использования TDD в реальных проектах. А им есть чем поделиться! Тренинг пройдет 3-4 февраля. Стоимость участия составляет 1700 гривен (обед включен в оба дня). Размер группы ограничен 12 участниками. Регистрация уже открыта.
Тренинг «TDD в PHP» проведет наш опытный тренер Иван Мосев. Ваня каждый раз улучшает программу тренинга, учитывая пожелания предыдущей группы. Очередным толчком к подобному улучшению стало наше совместное посещение мастер-класса «TDD Coding Dojo». Я думаю в этот раз тренинг будет содержать еще больше интересных практических заданий. Пройдет он 17-18 февраля. Стоимость участия составляет 1700 гривен (обед включен в оба дня). Размер группы ограничен 12 участниками. Спешите зарегистрироваться.
И замыкает группу тренингов «Инженерные практики в Agile». Это наверное самый полезный наш тренинг, потому что он агрегирует весь наш многолетний опыт внедрения и применения различных инженерных практик и подходов. За 2 дня участники смогут услышать и увидеть на примерах 8 различных инженерных практик. Мы больше не будем пытаться проводить этот тренинг в один день. Слишком много материала и донести его за такой короткий срок очень тяжело, причем скорее для участников. Тренинг состоится 17-18 февраля. Мы работаем вдвоем и поэтому готовы собрать группу до 20 человек. Стоимость участия составляет 1700 гривен (обед включен в оба дня). Регистрируйтесь и мы будем рады видеть вас на нашем тренинге!
Если вы пропустили XP Days Ukraine и жалеете об этом, то это шанс для вас наверстать упущенное. Присоединяйтесь!









