Записи с метками tdd
Второй шанс попасть на 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 и жалеете об этом, то это шанс для вас наверстать упущенное. Присоединяйтесь!
К составу наших тренеров присоединился Александр Белецкий
22 Декабрь
Мы рады анонсировать расширение нашего тренерского состава – к нам присоединился Александр Белецкий. Он будет отвечать за .NET направление в нашем тренинг-центре. В рамках прошедшей конференции XP Days Ukraine Александр совместно с Сергеем Калинцом провел тренинг «TDD в .NET». Мы получили массу позитивных отзывов от участников данного тренинга и предложили Александру продолжить сотрудничество. В ближайшее время мы подготовим несколько тренингов по ASP.NET MVC и REST Services for .NET, а также анонсируем очередную дату проведения тренинга «TDD в .NET».
Александр – увлеченный продуктовый разработчик. Имея опыт в ИТ отрасли около 9 лет, он имеет обширное представление о процессе разработки и поддержки програмного обеспечения. Последние 4 года сфокусирован на технологическом стеке .NET, имея углубленные знания веб фреймворков WebForms и MVC. Является большим приверженцом XP практик и гибкой разработки. Успешно применяет и адаптирует на проекты такие практики как TDD, Code Review, Continuous Integration / Delivery.
Александр является активным членом киевской ALT.NET группы, выступает с докладами на различных конференциях, имеющим отношение к продуктовой разработке, технологиям и практикам. Ведет свой блог, помогает другим разработчикам, развивает сообщество программистов Kyiv Beer && Code и много программирует.
Следите за анонсами и не пропустите тренинги Александра Белецкого!
XP Days Ukraine глазами организаторов. Часть 2
21 Декабрь

Это вторая часть моего отчета о прошедшей конференции XP Days Ukraine. В первой части я рассказал о подготовке и первых двух днях, насыщенных тренингами и мастер-классами. Теперь речь пойдет об основном дне конференции.
Проснуться 17 декабря пришлось достаточно рано, поэтому невыспанность после вчерашнего написания кода до позднего вечера давала о себе знать. Срочно нужен был кофе. В «Парусе» уже все было практически готово, оставались мелочи. Мы расставили указатели (вход в здание найти было не так просто), проинструктировали в последний раз команду волонтеров, определили расположение кофе-пауз и стали ждать первых участников. Я очень рад, что у нас уже сложился костяк команды волонтеров, которые с радостью соглашаются работать с нами. Вы молодцы, ребята!
Благо опыт проведения регистраций у нас есть. Поэтому в этот раз регистрация проходила гладко и плавно. Не было ни очередей ни паники. Каждый участник получил пакет с программой и прочими материалами, а также яркий красочный бейдж. За это особое спасибо нашим печатным подрядчикам и Леше Солнцеву за дизайн.
У меня даже получилось пообщаться перед открытием со старыми знакомыми, а знакомых на этой конференции было очень много. Кто-то был у нас на тренингах, кто-то посещал другие наши конференции, а кто-то знает меня уже давно. Кофе было вдоволь, как заварного, так и из кофе-машин, которые привезли с собой наши спонсоры.
На открытие все собрались в главном зале. Я рассказал о важных деталях конференции, поблагодарил нашу славную команду, волонтеров и докладчиков, благодаря которым конференция состоялась. На закрытии мы собирались разыграть множество призов от организаторов и спонсоров, причем некоторые из которых были очень даже ценными. На этой конференции мы решили ввести новинку – карточки обратной связи докладчикам. Каждый участник получил по две таких карточки и мог отдать их тем докладчикам, которые понравились ему больше всего, написав на карточке свое мнение о докладе. Такая обратная связь очень сильно поддерживает и мотивирует докладчика – ведь он видит, что его труды приносят пользу.
Я не люблю длительные и пафосные открытия, поэтому не стал утомлять участников и закончил достаточно быстро, передав слово первому докладчику в главном зале – Mark Seemann. По традиции на первые доклады я не попадаю. Хочется убедиться, что с организацией все идет нормально. А еще было интересно, что думают участники о мероприятии. Интернет утром работал исправно и народ начал писать в Twitter ленту.
Об интернете хочется рассказать отдельно. В этот раз мы решили попробовать новую технологию, потому что местный интернет был очень нестабильный. Были заказаны четыре 4G точки, которые Wifi роутерами объединялись в единое кольцо. Вдобавок в это же кольцо были подключены 2 Wifi роутера местного интернета. Эта схема должна была обеспечить надежное подключение большому количеству участников и при этом переключать их в зависимости от местоположения на менее загруженную точку. Звучит красиво, стоит немало, но не сработало.
Все работало классно, пока местный интернет не начал пропадать. Роутеры набирали себе клиентов, но не давали интернета. Хорошо, что у нас был сотрудник для поддержки 4G точек, который постоянно мониторил состояние сети и перестроил во время обеда сеть, отключив местный интернет. Стало работать медленнее, но работать. В целом, жить с таким интернетом было можно, но назвать его стабильным и быстрым не поднимается язык. Будем экспериментировать дальше…
После первого доклада произошла мини-проблема. Докладчики затянули с вопросами и отпустили участников на перерыв слишком поздно. Поэтому вторые доклады начались с задержкой в несколько минут. Надеемся, что этого никто не заметил.
В дальнейшем, волонтеры заканчивали доклады четко в установленное программой время.
Следующей неожиданностью стала популярность сцены В. Мы сделали ее из части холла и задумывалась она как сцена «для гиков». Такого ажиотажа на архитектуру и дизайн в Agile мы никак не ожидали. Во время второго доклада пришлось в экстренном порядке расширять сцену В и она заняла в полтора раза больше места, чем планировалось изначально. Появилась даже мысль поменять местами сцены С и В, но решили оставить как есть. Возможно это было неправильным решением. Иногда на сцене В было душновато. Это связано с работой проектора и узким пространством, которое изначально не являлось самостоятельным залом. Но эти неудобства не останавливали участников и сцена В была чуть ли не самой посещаемой.
Я выступал перед самым обедом с докладом «Жизнь без тестировщиков: миф или реальность?». Пересказывать доклад не буду, вот презентация:
Незаметно подошло время обеда. На него в программе было отведено полтора часа. В самом «Парусе» возможности нормально пообедать за адекватную цену нет, поэтому мы предоставили участникам карту ближайших мест общественного питания. Заодно можно было прогуляться и подышать свежим воздухом. Но все торопились отправиться на обед, тем самым создав «пробку» в гардеробе. Мы заведомо предполагали проблемы с гардеробом и отправили на помощь нескольких волонтеров. Но сама структура гардероба не помогала ускориться. В течении 15 минут все получили свою верхнюю одежду и разошлись обедать. Мне кажется, что спешка была совершенно ни к чему и можно было спокойно пообщаться в холле вместо стояния в очереди.
После обеда самое тяжелое время – клонит в сон и информация воспринимается тяжело. Поэтому на главной сцене в программе были 2 секции коротких докладов. Докладчики жгли! У большинства были классные слайды и интересные темы. Лично мне было совершенно не до сна.
На предпоследний доклад я отправился послушать Диму Коваленко, который прилетел к нам в гости из США. Он в детстве жил в России, поэтому еще помнит русский язык. Но гораздо приятнее его слушать на английском. Дима рассказал о том, как в компании Groupon относятся к сборкам, тестам, деплоям. Доклад получился достаточно живой и интересный. В самом конце заглянул на доклад по Code Review к Алексею Резчикову.
Мне «выпала честь» закрывать конференцию. Я выбрал для этого тему «Continuous Delivery», потому что она логически объединяла все обсуждаемые практики и подходы. Я собрал немало карточек обратной связи и слов благодарности от участников, что подтвердило правильный выбор темы. Презентация с этого выступления:
Практически все участники собрались на торжественное закрытие конференции. И правильно – ведь каждый хотел уйти не с пустыми руками. Призов было достаточно много. Мы разыграли сувенирные майку и кружку, а также 3 книги «Dependency Injection in .NET» с автографом автора. Наш бриллиантовый спонсор, компания «ДатаАрт», разыграла 5 читалок Amazon Kindle (2 больших и 3 маленьких). А второй наш бриллиантовый спонсор, компания SysIQ, разыграла сертификат на прохождение курса «Certified Product Owner». Он, по воле судьбы, достался одному из сотрудников SysIQ.
Закрытие было очень живым и веселым, с шутками из зала и общим позитивным настроем. Было очень приятно видеть радостные лица обладателей призов. Мы еще раз поблагодарили всех-всех-всех и попрощались до следующего года.
В целом, осталось очень приятное ощущение. Мы провели что-то новое и интересное, а не «очередную Agile конференцию». А ваши отзывы и слова благодарности помогают нам работать дальше и сильно мотивируют. Будем рады видеть вас снова!
XP Days Ukraine глазами организаторов. Часть 1
20 Декабрь

Вырвал время на написание отчета о конференции XP Days Ukraine. Отчет будет состоять из двух частей. В первой части речь пойдет о подготовке и первых двух днях, наполненных тренингами и разнообразными встречами. В этот раз я не буду делать слишком детальный обзор или пересказывать содержание докладов. Расскажу о нашем взгляде на данное мероприятие и моих личных впечатлениях.
Эта конференция получилась самой сложной из того, что мы делали за все время существования тренинг-центра XP Injection. Все складывалось не самым удачным образом с самого начала. Чтобы не пересекаться с другими крупными событиями, мы выбрали середину декабря в качестве времени проведения. И это был не самый удачный выбор. У многих компаний не осталось бюджета, некоторые участники уже начинали планировать новогодние праздники или были загружены работой перед завершением года. Поэтому мы очень скоро осознали, что собрать 500 человек, как изначально планировалось, попросту нереально.
Как обычно были сложности и с помещением. Я уже писал о плачевной ситуации с конференц-сервисом в Киеве. В этот раз она усугубилась проведением крупных новогодних корпоративов. А они гораздо важнее и выгоднее для владельцев площадок, чем наша конференция. Поэтому мы приняли решение ограничить количество участников в любом случае и провести конференцию в бизнес-центре «Парус». Про преимущества и недостатки этого места поговорим позже.
Не самая лучшая ситуация складывалась с докладчиками. По дороге мы потеряли некоторых очень интересных и важных зарубежных гуру. В основном это было связано с новогодними и рождественскими праздниками, а также с закрытием рабочего года. Тем не менее, нам удалось собрать очень сильный состав докладчиков с представителями из Украины, России, Беларуси, Польши, Дании, Норвегии, Англии и США.
Программа получилась на редкость сильная. Лично для меня было только несколько неосвещенных тем: инструменты для Continuous Integration (хотелось бы послушать про Jenkins, TeamCity, Cruise и прочие инструменты от их авторов), BDD (хотелось бы услышать о пользе и реальном опыте применения) и Technical Dept (о методиках сбора и анализа, а также инструментах для борьбы с ним). В остальном меня лично программа устраивала на все 100%. Я бы хотел лично еще раз поблагодарить всех докладчиков, которые приняли наше приглашение или же сами проявили инициативу. Именно благодаря им конференция удалась!
Основная задумка XP Days заключалась в том, чтобы сделать не просто конференцию, а насыщенное событие с возможностью прокачать навыки на тренингах и мастер-классах. Сам конференционный день должен был завершить мероприятие, дав возможность пообщаться и послушать множество интересных докладов. Поэтому мы запланировали на 15-16 декабря проведение 5 тренингов и 3 встреч/мастер-классов. Тренинги покрывали темы TDD в разных языках программирования (Java, PHP, .NET), Agile инженерные практики и Continuous Integration. Встречи проходили на темы автоматизации тестирования, Dependency Injection в .NET и совершенно нового для Украины направления TDD Coding Dojo.
Эти первые два дня получились такими насыщенными, что переплюнули все мои ожидания. Я принимал участие в качестве тренера только в первый день. Мы с Лешей Солнцевым рассказывали про большую часть инженерных практик и их внедрение. В очередной раз я осознал, что этот тренинг стоит делать только в формате двух дней. За один день мы даем такую нагрузку, с которой справляются далеко не все участники. Тем не менее, надеюсь было интересно. Мы постарались как можно больше рассказывать о примерах из нашего реального опыта и показывать живые демонстрации. Спасибо участникам за интересные и жизненные вопросы.
На второй день я отправился во время организаторской миссии посмотреть на другие тренинги. Все тренеры работали на очень высоком уровне. Я увидел очень много общения среди участников. На каждом перерыве были обсуждения, обмен опытом, впечатлениями, инструментами и техниками. И это здорово, потому что благодаря подобному общению мы приобретаем много нового опыта. Мне удалось частично принять участие в тренинге «TDD в Java», который проводил Paweł Lipiński. Paweł оказался очень опытным тренером и позитивным, энергичным докладчиком. Мне очень понравился его стиль ведения тренингов – как можно больше практики. Буквально каждая тема была подкреплена практическим заданием. Задания были на первый взгляд простыми, но реально приходилось поработать, чтобы получилось нормальное решение. При этом каждый участник по очереди выполнял задание вместе с тренером с демонстрацией на экране проектора. Это делало тренинг действительно увлекательным и я с радостью помогал моему коллеге из Zoral Labs успешно справляться с трудностями.
Вечер 16 декабря получился неожиданным благодаря огромным пробкам в городе. Мы должны были подготовить залы к завтрашней конференции, а добраться до центра города вовремя получалось не у всех подрядчиков. А еще и отвратительная погода. В итоге подготовка затянулась до позднего вечера, а я оставил Аню и Лешу, отправившись обратно на нашу площадку тренингов для организации упомянутых выше встреч. К нашему стыду, пришлось прокатить одного из зарубежных докладчиков Mark Seemann на метро в час пик. Это был для него единственный шанс добраться вовремя от отеля до места проведения его мастер-класса по Dependency Injection. Но он справился с задачей отлично и прибыл в назначенное время.
В .NET я не сильно разбираюсь и поэтому выбрал для себя TDD Coding Dojo. Я с опаской относился к этому формату. По собственному опыту знаю, что нужно продумать все до самых мелочей, чтобы живое программирование было интересным и увлекательным. Johannes Brodwall оказался как раз таким человеком, который относится к своему любимому делу с огромной ответственностью и готовится очень скрупулезно. Видно было, что ему очень нравится проводить подобные мероприятия, общаться с коллегами, программировать с ними и наблюдать за тем, как они программируют. Этот человек всегда стремится узнать что-то новое, в то же время с радостью делясь своим опытом и навыками.
Сначала Johannes познакомил нас с форматом и познакомился со всеми участниками, собрав с них ожидания. Потом в паре с одним из нас продемонстрировал принцип работы TDD Coding Dojo. И сразу после этого мы начали делать практические задания. Первое было достаточно простым, но отлично демонстрировало принципы работы в паре и TDD. Я работал в паре с Вовой Цукур и это было реально интересно. С первым упражнением мы справились быстро и без сложностей.
Потом началось самое интересное. Следующее практическое задание было с соревновательным подтекстом. Мы могли использовать любой язык программирования, любые трюки и уловки. Побеждал тот, кто набрал больше всех баллов. Причем как их набирать предстояло выяснить нам самим в процессе работы над заданием. Это было очень интересно.
Мы писали говнокод, поняли что без тестов даже два «сеньера» ничего путного не напишут, делились на лету знаниями IDE и Java, убедились что IDEA круче Eclipse, рефакторили говнокод, проявляли смекалку в написании регулярных выражений, да и просто получали кучу удовольствия от соревнования. А соревновались с нами ребята на PHP и C#. Команды были сильные и борьба накалялась. Мы вырвали победу с достаточно большим отрывом и это принесло еще больше удовольствия. В итоге разошлись мы только ближе к 11 часам вечера, а некоторые, как потом выяснилось, продолжали кодить еще и ночью дома. Огромнейшее спасибо Йоханнесу (ему приятно будет прочитать свое имя на русском языке) за эту сессию и в целом за приезд на нашу конференцию! Мы обязательно будем организовывать подобные встречи в формате «Клуба анонимных разработчиков».
Продолжение следует…
10-ая юбилейная встреча «Клуба анонимных разработчиков» в рамках XP Days Ukraine
13 Декабрь
Идея «Клуба анонимных разработчиков» оказалась достаточно интересной. Клуб живет уже почти полгода и мы провели уже 9 встреч на самые разнообразные темы. За это время у нас в гостях побывало больше 200 человек. Думаю, каждый смог завести себе новых знакомых, а также узнать массу полезной информации. Мы рады анонсировать 10-ую юбилейную встречу, которая пройдет вечером 16 декабря в рамках конференции XP Days Ukraine.
Сначала мы планировали эту встречу организовать с .NET уклоном, воспользовавшись возможностью пообщаться с одним из известных докладчиков конференции – Mark Seemann. Он проведет мастер-класс на тему «Dependency Injection: Principles, Patterns and Containers». Mark является опытным разработчиком и автором книги «Dependency Injection in .NET», поэтому ему будет о чем рассказать. Вот краткое описание мастер-класса:
Dependency Injection (DI) is a set of principles and patterns that enable loose coupling. Do you think you already know what DI is? You may be surprised if you attend this talk. Here we will examine DI from different angles: When and why is DI interesting? What is it and how do we use it? And finally: what role does a DI Container play, and how do we efficiently use one? During this presentation we will see simple and idiomatic examples in C# that that illustrate and answer these questions. Knowledge of C# and basic object-oriented programming, including design patterns, is strongly encouraged.
Но этот мастер-класс врядли будет интересен не .NET разработчикам. Потом мы подумали, что можно в рамках клуба провести и еще один мастер класс «TDD Coding Dojo». Проводить его будет еще один зарубежный докладчик – Johannes Brodwall. Johannes будет проводить его в формате coding dojo, когда все участники принимают активное участие в написании кода для решения конкретной проблемы, обсуждают различные решения и техники реализации. Это очень популярный на данный момент формат и очень интересно попробовать его на практике. Вот краткое описание мастер-класса:
A Coding Dojo is a programming session based around a simple coding challenge. Programmers of different skill levels are invited to engage in deliberate practice as equals. The goal is to learn, teach and improve with fellow software developers in a non-competitive setting. Following elements will be included in master-class:
- Demo: Johannes demonstrates the TDD cycle with a very short problem.
- Randori style coding dojo (for people who’re new to XP): Groups of 5-8 people sit around a projector and work at the same problem at the same time. Two people will be at the keyboard at any time, and we will rotate one person with the rest of the group every five minutes.
- Pairing style coding dojo (for people who’re experienced with TDD and Pair Programming): We will pick a problem and two and two developers will pair up. After about 1 hour we will compare results. All participants should bring computers with a development environment.
- Extreme startup (for people who’ve done some coding dojo at least once, possibly earlier in the same workshop): A workshop server will ask servers running on each participant’s computer questions (e.g. «what is the sum of 4 and 6″) in real time. The participants who write a program to answer the most questions correctly wins! People can choose to work solo or in pairs, to test or not to test, to use any language they like. All participants should bring computers with a development environment.
Оба мастер-класса пройдут в бизнес-центре «Палладиум Сити» по адресу ул. Горького, 172 (комната 714), поэтому участники смогут также пообщаться между собой. Здание бизнес-центра расположено прямо на станции метро «Лыбидская». Желающих попасть на встречу достаточно много, поэтому для бронирования места вам необходимо осуществить предварительную оплату. Зарегистрироваться и оплатить можно на сайте конференции.
Отчет о девятой встрече «Клуба анонимных разработчиков»
30 Ноябрь
Вчера состоялась девятая встреча нашего «Клуба анонимных разработчиков». Встреча прошла в очень приятной атмосфере. Собралось сравнительно немного участников (около 15), но все друг друга знали и поэтому было очень комфортно и приятно общаться. Мы снова вернулись в уютный и полюбившийся многим офисе компании DataArt.
С докладом к нам в гости из Харькова приехал Маирбек Хадиков. Он представил вводный доклад по Zookeeper. Было очень много вопросов по поводу применения данного инструмента и специфике работы. После доклада у участников сложилось представление как и когда стоит его использовать. По ходу доклада мы затронули еще один совсем новый проект – Storm. Я вкратце рассказал о принципах работы и области применения. Вот презентация доклада Маирбека:
После перерыва Виталик Тимчишин рассказал более детально как он осуществлял выбор инструмента для координации распределенной обработки данных. Остановились чуть более детально на GridGain, рассмотрели подробно механизм работы Zookeeper и реализацию различных сценариев с его использованием. Вы можете ознакомиться с презентацией этого доклада:
Было очень интересно и это одна из встреч, с которой я уходил очень довольным. Я получил ответы на все вопросы и даже наметил как можно использовать Zookeeper у себя на проекте для упрощения некоторых сложных коммуникаций между распределенными процессами. Спасибо всем участникам за отличную дискуссию!
Дополнительную информацию вы можете найти в Twitter по хештегу #uadevclub. Можно почитать о ходе встречи, найти интересные цитаты, советы и факты о рассматриваемых технологиях. Присоединяйтесь и обсуждайте вместе с нами!
Мы снимали видео всех выступлений и постараемся в ближайшее время выложить их в открытый доступ.
Следующая встреча клуба будет юбилейной и пройдет 16 декабря в рамках конференции XP Days Ukraine. Изначально мы хотели провести в рамках клуба только мастер-класс Mark Seemann на тему «Dependency Injection». Но потом решили добавить и мастер-класс «TDD Coding Dojo» с Johannes Brodwall. Первый мастер-класс будет больше интересен .NET разработчикам, в то время как второй будет интересен разработчику на любом языке. Johannes будет проводить его в формате coding dojo, когда все участники принимают активное участие в написании кода для решения конкретной проблемы, обсуждают различные решения и техники реализации. Это очень популярный на данный момент формат и очень интересно попробовать его на практике. Зарегистрироваться на встречу можно по ссылкам на сайт конференции. Мест осталось совсем немного. Будем рады видеть вас!
Боремся с бесконечными итерациями
29 Ноябрь

Я решил поучаствовать в разборе кейса, описанного Тимофеем Евграшиным в его блоге. Сначала начал писать комментарий, но потом понял, что он будет слишком большим. Поэтому оформляю в виде отдельной статьи. Вкратце проблема выглядит так – команда никогда не заканчивает все задачи в итерации, перенося их на следующую. В итоге итерации получаются размазанными.
Команда провела анализ и выделила возможные причины такой ситуации. Первая причина в том, что очень мало времени остается на саму работу в спринте за вычетом всех «процессных» задержек. Вторая заключается в том, что циклы тестирования и разработки «натурально» не совпадают и никто не может аргументировать в чем недостатки данной ситуации.
Начну с причин, потому что без их разбора нет смысла давать советы. Мне кажется из первой причины стоило копнуть еще глубже. Почему происходит столько много задержек? Почему команда целый день тратит на ревью результатов спринта, причем сборку надо залить за день до ревью? Откуда берутся многочисленные задержки, которые даже вынудили команду последний день итерации сделать не совсем рабочим? Первопричин может быть много, не берусь судить однозначно. Возможно не полностью автоматизирована сборка и установка приложения, может быть некоторые процедуры делаются по шаблону и из-за этого занимают много времени.
Вторая причина, указанная командой, является очень классической. Она пришла из поэтапного подхода к разработке, когда тестирование делается после завершения кодирования. При этом часто задачи на кодирование требуют несколько дней, что еще больше откладывает тестирование. И не меняя подхода, нереально ничего поменять.
Scrum предлагает комбинировать итерационный и инкрементальный подходы. А это значит, что в итерации команда делает одну фичу и только потом переходит на следующую. Такой подход заставляет распределять работу между членами команды и концентрироваться на достижении результата. Что делать тестировщикам пока нечего тестировать? Писать автоматизированные тесты, собирать тестовые данные, подготавливать необходимые процедуры и артефакты. Как только что-то готово, сразу передавать разработчику. Как только у разработчика что-то готово, сразу отдавать тестировщику. Таким образом, после завершения работы над задачей требуется минимальное время на ее тестирование.
Но самый главный вопрос – это вопрос понимания цели самих итераций. Итерации нужны для предсказуемости, налаженного ритма выполнения обязательств и слаженной деятельности без помех извне. Если задачи могут легко переноситься на следующую итерацию, то предсказуемость теряется. Никто не знает сколько задач завершит команда в очередной итерации. Ритм тут же теряется тоже, потому что ни у кого нет ощущения законченности выполненной работы и старта новой итерации с чистого листа. Вместо этого тянется тестирование и другие активности из прошлого. Пока все в команде не осознают этого, менять что-то почти бессмысленно.
Теперь разберемся, что же со всем этим делать. Задачи понятны. Я бы посоветовал реализовать следующие подходы:
- Планируйте ровно на столько, сколько вы можете полностью закончить в итерацию. Не тратьте время на планирование остального. Это и сэкономит вам время и не будет никому давать несбыточных обещаний. Лучше возьмите еще работы, если все закончите в срок. Это будет гораздо приятнее и команде и заказчику, чем в очередной раз получить часть обещанного не готовым.
- Для более плотной командной работы над задачами и инкрементальности внутри итерации установите лимиты на количество задач, которые находятся в прогрессе. Причем жесткие и непоколебимые лимиты. Они будут вас заставлять помогать друг другу, делить большие задачи на маленькие, автоматизировать ручную работу и не распыляться на много задач сразу. Это повысит вашу эффективность.
- Для решения проблем с циклом тестирования внедряйте активно автоматизацию. Причем не просто автоматизацию, а различные вариации TDD (Test Driven Development). Чем больше тестов будет написано до завершения реализации задачи, тем меньше времени уйдет на тестирование. Еще одна практика, которая очень сильно может помочь – Slicing Development. Не разрабатывайте по несколько дней целиком готовую фичу. Вместо этого выкатывайте несколько промежуточных реализаций с урезанной функциональностью и отдавайте на тестирование.
- Ну и последний совет очевиднее всех – проведите ретроспективу и разберитесь в том, что происходит. Если команда или руководство не понимают зачем это все нужно, то все предыдущие усилия будут просто бесполезны. Возможно, в результате разбора окажется, что Scrum в вашем случае совершенно не подходит. Такое тоже бывает. Scrum – не серебряная пуля.
Ну и конечно же не опускайте руки. Из любой ситуации есть выход, его надо только поискать.
Удачи этой команде и всем, кто сталкивается с подобными проблемами!
TDD – самая важная инженерная практика!
24 Ноябрь
Я часто задумываюсь о том, какая инженерная практика для меня самая важная и приносит больше всего пользы. В разное время я думал по-разному. Сейчас однозначно считаю, что это TDD (Test Driven Development). Этот подход к дизайну и разработке приложения дает возможность разрабатывать готовую функциональность гораздо быстрее. Меньше времени уходит на запуск самого приложения, отладку, поиск проблем, написание ненужного кода, построение решений на будущее и т.д.
Но еще важнее то, что TDD способствует внедрению других инженерных практик. Даже не способствует, а требует. Модульное тестирование применяется по умолчанию. Так как вы пишете много тестов, то вам нужно их регулярно запускать. И вы просто обязаны установить инструмент для CI (Continuous Integration) и начать им пользоваться. Небольшие законченные кусочки кода дают вам уверенность в коммите и вы начинаете следовать практике CI, интегрируя свой код как можно чаще. Вы натыкаетесь на участки кода, которые тяжело тестировать. И, чтобы написать тест, вам приходится рефакторить эти участки кода. Рефакторинг также является неотъемлемой частью самой практики TDD. Не все умеют хорошо работать по TDD. Поэтому вы обращаетесь к помощи коллег. Они помогают вам написать тесты и код (парное программирование), а потом просто просматривают ваш код (Code Review), чтобы убедиться в правильности применения TDD. Долго поработав по TDD, вы начинаете чувствовать себя некомфортно без тестов. Это толкает вас к переносу TDD на уровень выше и вы приходите к ATDD (Acceptance Test Driven Development) или BDD (Behavior Driven Development).
Вот и получается, что, следуя TDD, вы автоматически начинаете внедрять все остальные практики. Это своего рода ядро, которое со временем обрастает и превращается в целую инфраструктуру инженерных практик. Поэтому при подготовке программы тренингов для конференции XP Days Ukraine мы уделили большое внимание именно TDD. Мы пригласили опытных тренеров по нескольким наиболее популярным языкам программирования (Java, .NET, PHP), чтобы провести тренинги, затрагивая специфику языка и применяемых в нем инструментов. Это даст возможность участникам получить практический опыт применения TDD и начать внедрение этой полезной практики в своем проекте. Выбирайте наиболее подходящий тренинг, регистрируйтесь и повышайте свой уровень!
Модульные тесты могут быть документацией
15 Сентябрь
Модульные тесты имеют много полезных свойств: они позволяют запустить маленькую часть кода и убедиться в его работоспособности, они помогают осуществлять рефакторинг, служат «страховочной» сетью для любых изменений в коде и т.д. Существует противоречивое мнение, что модульные тесты могут являться документацией к модулю, классу, методу или просто части кода. Одни с ним соглашаются, другие твердят, что тесты невозможно читать и тяжело понять какая функциональность скрыта в самом коде. Я разделяю мнение обеих сторон. Если не уделять внимания тестам и писать их по принципу «для галочки», то использовать их в качестве документации крайне сложно. Если же заранее вкладывать документирование кода в задачу модульных тестов, то это вполне реальная цель.
Эта статья будет не о том, как нужно писать тесты. Речь пойдет о именовании тестов. Примеры я буду приводить на Java, так как это мой «родной» язык (после русского и белорусского). Большая часть модульных тестов пишется с использованием JUnit или TestNG. Эти инструменты уже не накладывают на разработчика правил именования тестовых методов (в прошлом JUnit требовал, чтобы тесты начинались с префикса ‘test’). Достаточно лишь пометить метод тестового класса соответствующей аннотацией @Test. И это здорово, потому что вы можете выбирать любое имя, которое вам удобно.
Этой возможностью можно и нужно пользоваться. Название тестового метода должно отражать суть тестируемой функциональности. Например «if no signal groups with required type return empty set» может быть записано как «ifNoSignalGroupsWithRequiredTypeReturnEmptySet». Вроде бы все логично, но воспринимать такое имя не так просто как кажется. Все дело в разделителях, к которым мы привыкли при чтении текста. К сожалению нельзя использовать пробелы в имени метода. Можно использовать другие разделители, например ‘_’. Приведенный выше пример превращается в «if_No_Signal_Groups_With_Required_Type_Return_Empty_Set». Это уже лучше. Но есть еще одна проблема. Документацию хотелось бы видеть в более удобном формате, к примеру в виде списка возможностей.
И тут вам на помощь приходит IDE. Я обнаружил замечательный инструмент под названием TestDox (стыд мне и позор, что я обнаружил его только сейчас). Он решает все описанные выше проблемы и позволяет создавать, изменять и просматривать все тесты в виде обычного текста. Данный инструмент работает в виде плагина к IDE и может быть использован с разными языками программирования. Ниже приводится пару скриншотов его работы с комментариями:

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

Вы можете редактировать любой тест и описание автоматически преобразуется в имя тестового метода. При таком подходе вы можете не задумываться над удобочитаемостью названия метода и писать реальное описание функциональности.
У данного инструмента есть еще настройки, но их изучение оставлю вам в качестве домашнего задания. Пишите свои тесты так, чтобы они приносили максимум прибыли в будущем. С помощью описанного инструмента ваши модульные тесты могут быть настоящей документацией, не хуже комментариев.
Анонсы ближайших событий осени и начала зимы
12 Сентябрь
Эта осень будет очень насыщена событиями мира IT. Сезон отпусков подходит к концу и начинают активно проводиться образовательные мероприятия. Я не претендую на полноту картины и расскажу о наших планах, а также о планах наших близких коллег. Список будет достаточно длинный, но он стоит того, чтобы дочитать до конца. Подробное расписание наших мероприятий всегда содержит наиболее свежую информацию о наших тренингах, выступлениях и прочих планах.
Завтра, 13 сентября, в Киеве пройдет пятая встреча «Клуба анонимных разработчиков». Темой встречи выбрана «ORM. Добро или зло?». Мы поговорим о том, когда стоит и не стоит использовать ORM, какие преимущества дает ORM для разного типа проектов. Естественно затронем тему о многочисленных минусах и недоработках в популярных ORM, таких как Hibernate. Также будет сделан обзор рынка ORM решений с характеристикой каждого из них. Встречи клуба становятся регулярными и проходят в среднем по 2 раза в месяц.
15 сентября в Киеве в 18-30 состоится очередная встреча PechaKuchaNight. Как обычно участники смогут услышать много интересных коротких докладов и хорошо провести время в приятной компании. Темы докладов совершенно разные. Тем не менее, некоторые доклады затрагивают тематику IT.
16 сентября в Киеве в бизнес-центре «Парус» пройдет конференция SEMCamp по интернет-продвижению продуктов и услуг на зарубежные рынки. Конференция будет полезна тем, кто интересуется продвижением сайтов зарубеж, или уже работает с зарубежными клиентами и хочет увеличить продажи, или планирует выход на новые рынки. Особое внимание на конференции будет уделено продвижению услуг по разработке программного обеспечения, а также веб-продуктов и стартапов, ориентированных на зарубежную аудиторию.
В эту субботу, 17 сентября, в Днепропетровске пройдет тренинг «Управление рисками в IT проектах» Сергея Поволяшко. На тренинге вы получите концентрированный сгусток знаний и навыков об управлении рисками. И не только о них – о смежных областях, о координации с заказчиком и руководством, о правильной реакции на риски, об инструментарии. Минуя месяцы, а то и годы попыток и набивания шишек. Сергей является опытным руководителем и менеджером, которому есть чем поделиться. Регистрация еще открыта и есть несколько свободных мест.
23-24 сентября в Киеве пройдет третий сезон конференции AgileEE. Программа конференции готова на 100% – вы можете ознакомиться с ней и организовать свой график. Также опубликован список участников Lightening Talks – к вашему вниманию тезисы докладов, выбирайте самое интересное! Вы можете успеть зарегистрироваться на конференцию до 15 сентября по старой цене. Участники имеют возможность не только посетить конференцию, но и получить сертификаты CSM+ICA и CSPO. Также в программе несколько тренингов от лидеров Agile движения. Чтобы сэкономить у вас есть несколько способов: поучаствовать в еженедельной викторине и выиграть 30% скидку, поехать на конференцию с коллегами и получить групповую скидку или запустить цепочку регистраций, которая будет давать возрастающую скидку каждому следующему участнику в цепочке.
1 октября в Киеве мы организуем первый шахматный турнир среди работников IT. Это будет очень увлекательное мероприятие, потому что оно объединит совершенно разных людей: CEO, тестировщиков, разработчиков, HR, сисадминов и т.д. Определит победителя опыт и умение в этой замечательной игре. Турнир будет проводиться по всем правилам, в 7 туров на 15 досках. Победители получат грамоты, кубок и ценные призы. Приходите не только поучаствовать, но и поболеть за своих сотрудников.
15 октября в Киеве пройдет наш тренинг «Тестирование веб приложений с WebDriver/Selenium». Этот тренинг пользуется большой популярностью, потому что Selenium – ведущий инструмент на рынке автоматизации тестирования веб-приложений. В этом году вышла версия 2.0 и теперь проект имеет название WebDriver. В связи с этим событием программа тренинга была существенно переделана, чтобы включить наиболее свежую информацию и практические примеры. Тренинг будет полезен как начинающим, так и опытным автоматизаторам. Регистрация уже открыта, размер группы ограничен 15 участниками.
22 октября в Киеве состоится наш тренинг «Kanban для управления проектами». Данный тренинг объединяет в себе очень много полезной информации о практическом применении Kanban на проектах по разработке ПО. Он насыщен множеством практических упражнений, которые заставят участников задуматься об эффективности своих процессов и улучшить их после прохождения тренинга. Участники смогут понять когда стоит и не стоит применять Kanban, какие принципы и правила лежат в его основе, а также как применить все эти знания в реальной жизни. Регистрация уже открыта, размер группы ограничен 15 участниками.
29 октября Днепропетровск соберет тестировщиков на конференцию «QADnepr Mini Conference». QA Dnepr Mini Conference – это попытка объединить тестировщиков, которые интересуются определенной областью тестирования ПО и дать одним из них рассказать о своем профессиональном опыте в этой области, а другим – впитать эти знания. 1 день, 8 докладов от киевлян, харьковчан и днепропетровцев на тему живого опыта в автоматизированном тестировании – функциональном и нефункциональном. А также общение, новые знакомства и масса полезной информации из мира тестирования!
2-3 декабря в Москве пройдет юбилейная 10-ая международная конференция в области обеспечения качества ПО «Software Quality Assurance Days». SQA Days является конференцией №1 на пространстве СНГ и одним из главных мероприятий в Восточной Европе, посвященных тематике тестирования и обеспечению качества программного обеспечения. В качестве ключевых докладчиков приглашаются признанные эксперты международного класса. SQA Days – это замечательная платформа общения и обмена опытом для людей, вовлеченных в сферу тестирования ПО. Ведущие профессионалы смогут рассказать о своих достижениях, показать, как эффективно использовать инструменты, методики и методологии. Для начинающих – это отличный шанс приобрести новые полезные знакомства в профессиональной среде. За все годы конференция собрала более 2300 участников из стран СНГ, ЕС и др. С каждым годом ряды участников пополняются представителями все новых компаний из разных городов.
15 декабря в Киеве в рамках конференции XP Days Ukraine пройдет наш тренинг «Инженерные практики в Agile». Цель тренинга – рассказать о семействе основных инженерных практик, применяемых в Agile, дать изначальный толчок к их внедрению в команде. За 8 часов будут рассмотрены 8 инженерных практик и подходов: Code Review, парное программирование, модульное тестирование, рефакторинг, автоматизация сборки приложения, Continuous Integration, автоматизация функционального тестирования, TDD. Все они взаимосвязаны между собой и дают максимальное преимущество, если применяются вместе. Каждая из них поддерживает остальные, дополняя и расширяя. Тренеры поделятся с участниками многолетним успешным практическим опытом применения рассматриваемых практик.
15-16 декабря в Киеве в рамках конференции XP Days Ukraine пройдет наш тренинг «TDD в PHP». Test Driven Development (TDD) без сомнения является одной из наиболее полезных, но в то же время трудных для внедрения, инженерных практик. Многие ошибочно считают, что TDD существенно замедляет разработку. Но на практике происходит обратное – когда команда имеет достаточный опыт в TDD, то скорость разработки увеличивается. Данный тренинг поможет вам понять преимущества внедрения TDD на вашем проекте, сложности и пути их преодоления. Будут расcмотрены инструменты, которые применяются для тестирования в PHP, и весь технологический процесс разработки, непрерывной интеграции и поставки web-приложения на PHP, которое будет разрабатываться в процессе тренинга.
17 декабря в Киеве пройдет конференция XP Days Ukraine. Это мероприятие будет целиком посвящено Agile инженерным практикам. XP Days Ukraine – это больше чем просто конференция. Мы планируем организовать масштабное мероприятие длительностью несколько дней, которое будет насыщено разнообразными тренингами, мастер-классами, встречами и докладами. Программа конференции еще формируется и мы планируем пригласить многих известных зарубежных докладчиков. Будут освещены основные инженерные практики: Unit Testing, TDD, Continuous Integration, BDD, Code Review, Refactoring, Acceptance Testing и другие. Также будут обсуждаться вопросы архитектуры в Agile проектах, борьбы с технической задолженностью (Technical Debt), взаимоотношений разработчиков и тестировщиков, а также многие другие проблемы современной разработки.





