Записи с метками проектирование

Наши планы на зиму 2013

На прошлой неделе мы подвели итоги уходящего года. Теперь пришло время поговорить о планах на этот год:

Январь будет достаточно спокойным – мы проведем только 2 публичных тренинга. Первый из них «TDD в .NET» пройдет 25-26 января. Это один из наших популярных тренингов и практически все места уже заняты. Осталось 2 свободных места для желающих принять участие. Торопитесь зарегистрироваться!

25-26 января также состоится наш новый тренинг «Проектирование сложных веб-приложений» по архитектуре и дизайну. Тренинг проводит опытнейший CTO Дмитрий Ефименко. На тренинге будут обсуждаться темы:

  • достоинства и недостатки современных шаблонов архитектуры и дизайна, применяемых в веб-разработке
  • анализ и обоснование выбора шаблонов архитектуры и синтеза шаблонов
  • документирование архитектуры и сопровождение документации
  • предварительно спроектированная и итеративная (agile) архитектура
  • тестирование архитектуры на различных этапах
  • роль архитектора и круг его ответственности в различных реализациях процессов разработки
  • и многие другие…

В конце тренинга все участники получат индивидуальные домашние задания для закрепления навыков, которые Дима готов обсудить и оценить онлайн после тренинга. Половина группы уже набрана, осталось 7 мест. Регистрация продлится до 20 января.

Февраль традиционно станет месяцем тестировщиков. 15-16 февраля мы проведем в Киеве тренинг «Exploratory Testing». Этот тренинг преследует следующие цели:

  • показать участникам альтернативную точку зрения на тестирование ПО
  • научить правильно понимать концепцию, лежащую в основе исследовательского тестирования
  • научить организовать работу таким образом, чтобы она не просто нравилась, а еще и приносила пользу проекту
  • научить работать по принципам Exploratory Testing на практике
  • поделиться опытом использования подхода на успешных проектах

Много практических заданий, полезный материал, интересный и опытный тренер Андрей Дзыня – все это делает тренинг одним из самых востребованных среди тестировщиков. Вы можете ознакомиться с многочисленными отзывами участников. Регистрация уже открыта, размер группы ограничен 15 участниками.

1-2 марта запланирована ежегодная конференция тестировщиков-автоматизаторов Selenium Camp 2013. Мы снова соберем в Киеве всех любителей использовать Selenium/WebDriver. Программа конференции находится на стадии формирования и уже есть много интересных выступлений. Состав докладчиков год от года становится все сильнее. В этом году мы особо пристально проводим отбор докладов, чтобы на конференцию попали только самые лучшие. На данный момент действует основной этап регистрации по цене 1500 гривен, который продлится до 15 января. Поторопитесь занять себе место среди участников!

Традиционно, перед конференцией мы проводим тренинги. В этот раз они пройдут 27-28 февраля:

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

Вот такие вот у нас планы на эту зиму. Кроме перечисленных мероприятий мы проведем несколько встреч «Клуба анонимных разработчиков» и множество корпоративных тренингов. Полное расписание вы можете найти на нашем сайте. Так что работы предстоит много! Присоединяйтесь, будем рады видеть вас в качестве участников!

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

Новый тренинг «Проектирование сложных веб-приложений» 25-26 января

архитектура веб-приложений

Прошедшая конференция XP Days Ukraine показала, что многих очень сильно интересуют тренинги по архитектуре и дизайну. Эти тренинги были самыми популярными и места закончились очень быстро. Мы полностью убеждены, что «отечественные» тренера обладают ничуть не меньшим объемом знаний и опыта в этой области. Поэтому начали развивать данное направление.

25-26 января Дима Ефименко проведет свой первый тренинг «Проектирование сложных веб-приложений». Тренинг будет в первую очередь интересен архитекторам, техническим лидерам команд и разработчикам, которые ощущают потребность в архитектурных навыках.

Богатая функциональность, высокая нагрузка, высокие темпы роста объемов данных, высокая динамика изменений, часто меняющиеся требования – все это требует гибкой, расширяемой, стабильной, а самое главное – как можно более простой и прозрачной архитектуры программного продукта, доступной для реализации и развития разным по уровню разработчикам. На современном уровне развития цивилизации – накопилось большое количество подходов к проектированию, шаблонов архитектуры и дизайна приложений – как выбрать подходящие под ваш проект и команду?

Имея на руках простую и прозрачную архитектуру, вы сталкиваетесь с её деградацией в течении времени развития проекта как при “тяжелых” подходах с предварительным проектированием, так и при “легких” подходах с их методом проб и ошибок в реализации идей продукта. Это требует внедрение определенных инженерных индивидуальных и командных практик, которые часто не имеют концентрированного экономического эффекта, а являются работой на перспективу – их становится тяжело “продавать”. При этом, все ваши усилия постоянно атакуются человеческим фактором – текучка в команде, поиск компромиссов с заказчиком, субъективное мнение о “правильном дизайне и коде” и т.д. А архитектор (команда архитекторов) вместо “стратега-развиватора” становится “пожарником-нагибатором” и попадает на другую сторону баррикад.

Вы не были первоначальным архитектором и получили на руки legacy кривое неоднородное и нестабильное решение, трудное в развитии и поддержке. От вас требуют не переделать все с нуля (ваше мнение), а модернизировать существующее, обеспечив хоть какую-нибудь надежность и поддерживаемость.

И самое плохое – кривая, подпорочная, неоднородная по своей идеологии архитектура, тяжелая и неудобная в разработке и поддержке приводит к тому, что команда перестает “любить” и гордиться своим проектом и начинает работать в режиме “на отвяжись”, просто обменивая своё время на ваши деньги. В лучшем случае вы просто тратите больше времени и денег на поддержку и мотивацию команды, в худшем – проект стремительно морально и технически устаревает и его развитие становится невозможным.

Если вам незнакома такая ситуация – тренинг вам будет неинтересен. Вы познакомитесь с концентрацией 10+ опыта по проектированию, разработке, развитию и багфиксу, поддержке сложных веб-приложений. Мы будем говорить о:

  • достоинствах и недостатках современных шаблонов архитектуры и дизайна, применяемых в веб-разработке
  • анализе и обосновании выбора шаблонов архитектуры и синтеза шаблонов
  • документировании архитектуры и сопровождению документации
  • предварительно спроектированой и итеративной (agile) архитектуре
  • тестировании архитектуры на различных этапах
  • роли архитектора и круге его ответственности в различных реализациях процессов разработки
  • практиках удешевления проектирования и поддержки архитектуры
  • практиках поддержания чистоты архитектуры при частых изменениях
  • построении процессов проектирования, разработки и поддержки в команде
  • эрозии процессов проектирования и разработки и практиках модернизации процессов

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

Вы можете ознакомиться с детальной программой тренинга для принятия решения об участии. Регистрация уже открыта и продлится до 20 января. Стоимость участия составляет 2000 гривен (обед включен). Торопитесь, количество мест ограничено!

Ошибки проектирования – о подмене постановки задачи решением

Мне в почту радикально скромный камрад, не захотевший комментить пост в блоге, прислал неожиданный вопрос о том, как практически выглядит управление риском потери фокуса на цели или подмены постановки задачи решением и зачем оно нужно, упомянутым в Ошибки проектирования.

Ну я как бы и не спорю, что описание дано весьма скудное и упоминание о Auftragstaktik и цели как единице планирования, плюс рекомендация постоянно задавать себе вопрос «зачем мы это делаем» – просто не может быть практикой и руководством к действию – только порогом, от которого разум в поиске оттолкнется. Признаю, каюсь и готов детально описать практики. Итак…

Нужно управлять этим риском хотя бы потому, что задавая вопросы «что вы хотите получить?», «что вам нужно сделать?» вы просто срезаете у своего бизнеса возможность заработать на бизнес-анализе и консалтинге. Потому что вы получаете весьма субъективное мнение владельца идеи или свое собственное. Потом приходит Его Величество Конечный Пользователь на реальном, а не воображаемом рынке и все ставит с ног на голову. Поэтому, гигиена идеи проекта должна заключаться в том, что вопрос «что делать?» должен быть уничтожен во взаимоотношениях заказчик исполнитель – как вне команды, так и внутри её.

Как это выглядит практически:

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

2. Определите (с заказчиком) в общих чертах путь достижения каждой из главных целей.

3. Проанализируйте путь достижения главной цели – из него появляются дочерние цели.

4. Определите (с заказчиком или уже без него) в общих чертах путь достижения каждой дочерней цели.

5. Проанализируйте …

Повторяйте самостоятельно выделение целей и анализ путей их достижения до тех пор, пока цель перестает отвечать на вопрос «чего мы хотим добиться» и начинает отвечать на вопрос «как добиться». Иными словами – вы приходите к финальным сценариям поведения/кейсам/стори – называйте как хотите. Главное, чтобы ваш сценарий позволил ответить на вопросы «кто?», «когда?», «где?», «как?», «для чего?», «что получает?». Если сценарий отвечает на эти вопросы, то он готов к переводу в предметную область разработки – на язык фреймоворка и тестового окружения.

Сразу возникает вопрос – как выделять дочерние цели? С главными-то все понятно – заказчик вам поможет, это его бизнес. Как быть с дочерними целями? Привлекать заказчика – перекладывать на него свою работу. Предлагаю обратиться к мудрости покойного ныне Элияху Голдратта, который много писал о вытягивающих принципах в системном и бизнес-анализе. В приложении к нашей задаче, вытягивающие принципы можно сформулировать так: ответьте себе на вопрос, что мешает вам добиться этой цели прямо сейчас, что мешает вот сейчас прямо взять – и отдать конечному пользователю? Такие подходы полезны не только в управлении требованиями и проектировании, но и в планировании, разработке, внедрении.

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

Какие вы получаете выгоды от такого подхода управления требованиями и дальнейшего проектирования:

1. Резкое сокращение объема работы для заказчика и увеличение объема творческой и высокооплачиваемой работы для себя.

2. Переходя от вопросов «чего надо сделать?» к «чего вы хотите добиться?» вы резко сокращаете влияние субъективного мнения о решении проблемы как вашего, так и заказчика – тот самый риск подмены постановки задачи решением.

3. Вы получаете приоритизированный список фич (сценариев). Если, вместо фич у вас жирные вопросы – тогда выделяете их в отдельный этап, приоритизируете их с помощью квадрата «риск-приоритет» и либо получаете конечные фичи, либо получаете дальнейшее разбиение на цели, которое рано или поздно приведет к фичам.

4. Вы не оставите места такой вредной штуке, как «спящие кейсы» – нет бизнес-целей, нет и фичи.

5. Язык бизнес-целей – это родной язык заказчика, до определенного уровня глубины ни формулировка целей, ни критерии их достижения (путь) не вызовут проблем во взаимопонимании. Верификация перестает быть болью.

6. Изменения требований становятся в большинстве случаев безболезненными. Как правило, меняются не цели – меняются пути их достижения. Если заказчик меняет цели – это уже другой проект. И вам это будет легче доказать на языке бизнес-целей и ассоциируя с его стилем бизнеса. Владение целями, кроме всего прочего, позволяет лучше понимать причину изменения требований и позволяет снизить психологический эффект «синдрома ребенка».

7. Если команда владеет целями, связанными с реальной бизнес-моделью и приоритетами этих целей – проще бороться с прокрастинацией и смещением фокуса с целей на заклепочничество в команде.

8. У вас есть черновик функциональной карты проекта, связанный с бизнес-целями как пруф вашего понимания бизнес-модели и способности решать бизнес-задачи. Хороший продажник вам так на этой теме денег накосит – мама не горюй :) Такое и инвестору не стыдно показать, и архитектор потом спасибо скажет.

Такие вот практики продуктовой разработки по управлению риском подмены постановки задачи решением :)

Сразу отвечаю на не заданный вопрос: как это относится к продуктовой разработке, если применяются термины «лишаете свой бизнес возможности заработать», «отношения заказчик-исполнитель» и т.д. Хорошо относится. Потому что отношения заказчик – исполнитель вполне себе постоянно возникают внутри любой команды между её участниками и внутри любой компании между командами. Ну а ваша работа в любой компании – это разве не бизнес-модель получения материальной и моральной компенсации за возможности самостоятельно решать проблемы разной степени сложности в различных предметных областях? В это отношении заказная разработка и продуктовая разработка ничем не отличаются – я постоянно это говорю :) Поэтому, вышеприведенные практики смело рекомендую как для продуктовых, так и для команд заказной разработки – проверено и там, там :)

Ошибки проектирования – об абстрактных моделях

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

И одна из ключевых ошибок проектирования, настолько ключевых, что я решил сделать отдельный пост – потеря фокуса на взаимопонимании, причем не на осознании и восприятии самой ценности взаимопонимания, а на системности подходов поддержания взаимопонимания.

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

Что такое описание предметной области? В умных книжках дается много определений, но мне больше нравится следующее:

предметная область проекта – это совокупность всех ролей, объектов и их состояний, возможных действий, возможностей и ограничений, связанных сценариями использования

Про методы описания предметных областей мы все много учили в ВУЗе или жизнь заставила, про методы превращения описания предметной области в код – тоже немало написано и известно, а в рамки статьи даже скупой обзор практик анализа и получения моделей предметной области не поместить. Поэтому, я хочу пока остановиться на использовании этих моделей в управлении рисками проектирования – тема, которая часто звучит или рефреном, или размазана по умным книгам в неявном виде. Почему я уделяю столько внимания именно абстрактному моделированию софта? А потому что в пароксизме увлечения легковесными методологиями все чуть забыли, что кроме генерирования качества есть такое понятие как воспроизводство качества. А вот тут без сбалансированной многоуровневой документации, которая не отвечает на вопрос «как сделано», а отвечает на вопрос «почему так сделано», «какие критерии» и «какие рамки и ограничения» – совсем никуда. А вот именно на эту документацию и не хватает времени в большом количестве «динамичных и быстрорастущих» проектов :)

Итак, какими основными рисками позволяет управлять описание предметной области:

0. Риск потери понимания бизнес-модели

Штука, которая страшна для любого проекта, независимо от его величины и сложности. Как только разработчик теряет понимание/ощущение/осязание первоисточника решения, т.е. бизнес-модели использования программного продукта и в проектировании оперирует не терминами предметной области проекта (бизнес-терминами, иными словами), а только классами, методами и интерфейсами – все, приехали. Начинается »клейка танчиков» и «заклепочничество» в чистом виде. Лучше иметь ответы на вопросы «зачем мы это делаем» в максимально простой, компактной и понятной форме. Кто-то может сказать, что он замечательно и без всяких моделей предметной области переводит user-story/use cases/scenarios в программный код. Отлично, а вы спросите его о том, как ответить на вопрос о том, как определить сложность тестирования или определить степень влияния фич друг на друга?

1. Риск потери ценности системы знаний

В любой системе знаний, кроме накопления, систематизации, транзитивности и пр. – есть ещё такая вещь, как обмен знаниями. Чем меньше объем и чем на более высоком абстрактном уровне находится вводная для проекта – тем проще вводить новичка, да и старикам навигацию это упрощает. Такая модель, представленная, как правило, в виде «кружочки + стрелочки + поясняющие надписи» – это очень полезная для команды вещь. Намного полезнее, чем диаграмма классов во всю стену, которая висит в большей степени «для понтов» и «меряний» :)

2. Риск определения момента, когда заказчика можно отпустить

Извечный вопрос: «когда отпускать заказчика?» в управлении требованиями и сценариями поведения. Сторонники гибких методологий скажут «никогда», но реалисты будут искать ответ на этот вопрос :) Имхо, совокупность требований и сценариев поведения/приемки (в каждой методологии они называются по-своему, но их сути это не меняет) для мало-мальски сложного проекта не позволит ни заказчику убедиться в том, что понимание требуемого результата поселилось в голове у исполнителя, ни исполнителю не позволит страховать риски срыва ожиданий заказчика. Нужен промежуточный слой, который бы позволил уже наглядно представить результаты проекта, но ещё не оперировал терминами технических решений – просто заказчик не поймет. Даже технически грамотному заказчику проще общаться в терминах предметной области бизнеса, а не решения.

3. Риск потери управления техническим долгом

Очень часто бизнес требует сразу писать legacy код :) Все часто сталкивались в своей практике со случаями, когда бизнесмен принимает решение quick win vs. long way в пользу быстрой поставки решения, которое с точки зрения разработчиков не более чем технический долг чуть более, чем полностью. Даже если этот технический долг измерим, осязаем и вполне себе в будущем начинает возвращаться, то без абстрактной модели будет очень трудно. В этом часто и состоит конфликт между бизнес-стороной проекта и его разработчиками: бизнесмен ожидает, что уж после не самого дешевого «продакшен-прототипа» с наработанным опытом и пониманием реализованной бизнес-модели возврат технического долга произойдет быстро. А получается, что уже через полгода требуется функциональный реверс-анализ проекта :)

4. Риск качества перевода с языка бизнеса на язык кода

Имеется ввиду перевод требований и сценариев в рабочий код. Модель предметной области в данном случае – отличная точка входа для управления рисками перевода идеи в реализацию. Хотите – используйте её как трамплин для погружения в DSL и DDD, хотите – просто как артефакт, задающий на высоком абстрактном уровне структуру, иерархию, потоки данных и действий, разделяющий зоны воздействия ролей для удешевления верификации, разработки, планирования и т.д.

5. Риск определения достаточности регрессии функциональных тестов

Вот кто от абстрактных моделей всегда в восторге – это тестировщики. Как ручные, так и автоматизаторы. Вопрос достаточности регрессии при внесении изменений всегда актуален. И определять его можно или путем глубокого анализа сценариев поведения/тестирования, или путем взаимодействия с разработчиком, или самостоятельно. Третий вариант при наличии модели самый экономный по времени и самый безопасный по влиянию решения на тесты. Если вы спросите тестировщика, что ему нужно для входа в проект – в большинстве случаев он ответит «сам проект и что-то вроде карты». Ну и не стоит забывать о мечте любого тестировщика (если вы его ещё не вовлекли в процесс анализа и проектирования) – обратная связь на функциональность проекта. Тут модель приложения в терминах бизнеса – самое то, чтобы начать предлагать изменения.

6. Риск смены решения

Разговоры про эволюцию кода и гибкие архитектуры – вещь классная. Но в бизнесе, как на войне – пушистый зверь может подкрасться незаметно. Например – сменятся аппаратные требования. В разгар кризиса и при развитии Atom платформы они менялись в сторону уменьшения :) Вот и представьте, что вы отрезали от вашей связки «требования – сценарии – реализация» слой реализации. Что при этом произойдет? Правильно – кроме проектирования решения, опять реверс-анализ ввиду непрозрачности связей в сценариях.

7. Риск удорожания внесения изменений

С помощью абстрактной модели изменения в проекте легче продавать, анализировать, реализовывать, оценивать тестирования, вводить на задачу новых людей, страховаться от «замыливания» восприятия и многого другого. Очевидные, казалось бы вещи, но если бы все системно работали над снижением себестоимости реализации процесса – вряд ли было бы столько проектов, у которых деньги кончились или из-за невоспроизводимости качества или просто «вдруг», не так ли? Все-таки один из ключевых рисков разработки – потерю понимания потребностей заказчика никто не отменял.

8. Риск удорожания стратегического планирования

Выражается как в стоимости процесса манипулирования списками фич, так и цены ошибки при невозможности взглянуть «с птичьего полета» на проект. Также, абстрактная модель отлично работает как инструмент прямой и обратной связи между бизнес-аналитиком и командой.

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

Самое трудное в абстрактном моделировании, как с любой документацией – его продажа процесса и артефакта заказчику и/или руководству компании. Рекомендую эту продажу делать от перечисленных выше рисков – очень помогает :)

Более детально о рисках проектирования и о управлении ими, мы поговорим с вами на мастер-классе «Практики эффективного, но экономного проектирования».

Продолжение следует.

Что готовит нам весна?

Весна постепенно набирает обороты. Март уже заканчивается и скоро наступят солнечные (мы искренне надеемся) апрель с маем. Мы запланировали много событий на эту весну. Что же вас ждет?

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, демонстрации от практиков и два полномасштабных мастер-класса. Наши тренеры Александр Белецкий, Дмитрий Ефименко и Николай Алименков готовятся выступить с докладами. Программа конференции еще формируется.

А еще на апрель и май у нас запланированы корпоративные тренинги в Киеве, Днепропетровске, Воронеже и Москве. Приглашайте нас в свой город и мы с радостью приедем!

Вот такая интересная выдалась весна. Будем рады видеть вас на перечисленных мероприятиях!

Ошибки проектирования

Предварительное проектирование и планирование работ – отличный инструмент, применяемый в большом количестве отраслей человеческой деятельности, но часто неработающий в разработке софта. Пусть простят меня сторонники Наполеоновского подхода «ввяжемся в драку, а потом посмотрим», но практика показывает, что команда, уделившая немало времени предварительной подготовке – при прочих равных выдает лучший результат. Если, конечно, не совершает типичных ошибок, о которых я хочу рассказать в течение нескольких статей.

Ошибка первая – потеря фокуса на цели. Одно из главных наших препятствий кроется психологической ловушке – мы пытаемся запланировать действия и это не работает в условиях большого количества рисков. В результате, стремление спроектировать и спланировать движение вперед приводит к пустой трате сил и времени и быстрому устареванию результатов проектирования. Вроде бы разработчики научились «замораживать» время на короткие итерации, но все равно, как говорил классик: «включаешь – не работает». А ученым и военным давно известно, что лучшей единицей планирования в условиях дорого проекта, находящегося в неопределённости – служит цель, которую надо добиться (проблема, которую надо решить). Как только команда перестает отвечать на вопрос «зачем мы это делаем» и «какую мы проблему решаем» – крушение не за горами. Да и с заказчиком проще общаться на языке целей, проблем, ценности, чем на языке реализации.

Поэтому, вопрос «зачем мы это делаем» нужно задавать себе постоянно – это очень здорово влияет на конечный результат. Войдя во вкус, вы начнете задавать себе и другие вопросы – «как доказать, что мы сделали правильно», «что делать, если цель меняется» – и многие другие очень полезные вопросы, которые выведут управление вашими (и заказчика) рисками на совершенно другой уровень.

Вторая ошибка – культ Карго касательно процессов проектной деятельности и инженерных практик. Процесс безусловно важен, но он не должен руководить. Фокус должен быть на результате, поэтому, люди, которые отвечают за процессы – не должны руководить разработкой. Тогда вы перестанете «делать процесс» и начнете делать продукт. Исключение – когда разработкой руководят люди, которые в том числе внедряют процессы как один из инструментов. Но это плохая работа. Она рано или поздно приводит к всплескам в мышлении так называемой производственной ментальности: ресурсы слишком ценны, чтобы простаивать, если ресурсы начали гнать некачественный продукт, то мы поменяем прошивку, заменим износившиеся детали на новые и более модные, изменим набор действий, запланируем его другим инструментом и все станет хорошо бла-бла-бла.

Это не работает. Это просто приведет к тому, что у нас будет 100% покрытие зелеными тестами, например, но свободный поиск руками покажет, что фича негодна. С такими всплесками нужно бороться. Например – ни одна практика не внедряется без экономического обоснования с точки зрения целей проекта, а не процесса. Потому что под процесс всегда можно оправдать :) А вы попробуйте честно доказать друг-другу, например, что TDD вам нужна в первую очередь как инструмент уточнения требований, а уж потом – как средство повысить качество кода. Очень много интересного узнаете о том, как вы управляете требованиями и почему у вас они часто меняются.

Ценность agile практик, кстати, как раз в том и заключается (в том числе), чтобы убрать культы, но человек слаб, поэтому он часто возводит уже agile в культ. :)

Третья ошибка – смещение фокуса ролей. Крамольная мысль №1 – не нужен в команде «главный выделенный архитектор», отвечающий за стратегию и фреймворк решений. Так много внимания уделяется архитектуре приложения во всех её проявлениях – архитектура, дизайне, детальный дизайн. А ведь это инструмент, не более. Потому что проектирование – это не создание технического фреймворка, это процесс решения вполне себе экономических, социальных, психологических и прочих проблем. Мы привыкли рассматривать разработку как процесс создания артефакта – работающего кода. А решаемые проблемы (заказчика и разработчика) – они не ложатся в этот фреймворк, в его структуру и иерархию – он просто выступает одним из решений.

Крамольная мысль №2 -  значительно полезнее иметь не выделенного архитектора, а бизнес-аналитика, который займется связями использования и реализации. Архитектуру поменять сложно, но можно – даже на крупном проекте, масса проектов с кривой архитектурой и не менее кривой реализацией успешно работают и делают людей счастливыми. А вот если у проекта не будет очень хорошей обратной связи к бизнесу – это почти сразу труба, можно садится и прогнозировать убытки.

Крамольная мысль №3 – наличие выделенного архитектора во много крат повышает влияние риска «любимого ребенка» и вместо реальной помощи при адаптации архитектуры под изменения требований бизнеса – начинается игра не в те ворота. Как часто вам главные архитекторы тормозили процесс изменений и рассказывали, что это сложно, невозможно и очень трудно тестировать? И ведь под благим предлогом – нам нельзя дестабилизровать проект и т.д. и т.п.

Сразу отвечаю на вопрос – а как же все-таки без архитектора? Он будет, но это будет команда опытных разработчиков. Все как-то гонят от себя мысль, что архитектуру и фреймворк проекта должен писать «кодирующий архитектор» – потому что критерии качества архитектуры в большинстве случаев проявляются только в ходе процесса создания архитектуры, а не до него. Других вариантов нет – некодирующий архитектор рано или поздно превратится в инвалида, который неспособен уточнить требования через код или внедрить инженерную практику через действие.

Иными словами, архитекторы – это опытные разработчики, которых подпирает бизнес-аналитик, не позволяя увлечься сферическим конем в вакууме, постоянно напоминая о реальных критериях качества, а не о чистоте архитектурных решений, паттернах и иерархии классов. При этом, завершив этап архитектуры, эти разработчики начинают получать обратную связь о качестве этой архитектуры путем использования – самы хороший вид обратной связи. Кстати, самая навороченная из Agile методик – Feature-Driven Development, как раз и оперирует группами архитекторов (Chief Developers).

Продолжение следует…

Отличный набор тренингов для менеджеров проектов

тренинги для менеджеров

Мы постоянно развиваемся и растем, приглашаем новых тренингов, организуем новые интересные мероприятия в различных сферах IT. Изначально наш тренинг-центр предоставлял услуги только в области Agile и инженерных подходов. И этот статус твердо за нами закрепился. :) Но жизнь меняется и мы стараемся расширять спектр предоставляемых услуг.

На данный момент мы имеем полный цикл тренингов для менеджеров и всех, кто хочет стать менеджером. Предлагаемый набор тренингов покрывает практически все сферы в области управления проектами, за исключением так называемых soft skills. Но это немного не наш профиль. Итак, что мы готовы предложить менеджерам:

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

Сергей Поволяшко имеет 15 лет стажа в IT. Работал по нескольким IT специальностям (разработчик, системный администратор, тестировщик). С 2001 года является практикующим проектным менеджером и менеджером IT подразделений. Сергей имеет многолетний практический опыт эффективного применения разнообразных методологий и практик на стыке интересов проектной команды, компании и заказчика. А также опыт организационного управления IT подразделений. Сертификации PMP и ITIL. Принимал лидирующее участие во внедрении CMMI L3.

Дмитрий Ефименко является экспертом в управлении проектами и командами, бизнес и системном анализе, проектировании, разработке, тестировании и построении процессов. Более 13 лет в разработке софта, последние 4 года – лидер продуктовой команды. Категорический сторонник вытягивающих подходов в проектировании и разработке, самоуправляющихся команд, бережливых и легковесных процессов. Увлекается синтезом эффективных процессов «под команду» из известных и не очень методов и практик.

Николай Алименков является экспертом в разработке приложений на Java и управлении командами. Имея опыт разработки более 7 лет, уже более 5 лет Николай работает с Agile методологиями. На текущий момент практикующий технический лидер и Scrum Master.

Отличительная особенность представленных тренингов в том, что каждая тема освещается с разных точек зрения и подходов (классических, Agile, собственных). Благодаря этому, каждый участник получает возможность перенять и применить на практике опыт тренеров в совершенно разных окружениях, методологиях и подходах к управлению проектами. Каждый найдет в представленном списке что-то интересное для расширения диапазона своих знаний и возможностей внедрения новых подходов.

Менеджеры, мы будем рады видеть вас на публичных тренингах и корпоративных мероприятиях в вашей компании!

Новый тренинг «Практики эффективного, но экономного проектирования» 13-14 апреля в Киеве

Дмитрий Ефименко

Мы не стоим на месте и постоянно развиваемся. Вместе с этим растет наш состав тренеров, в который мы приглашаем только очень опытных профессионалов индустрии, у которых есть чему поучиться. Очередным нашим тренером стал Дмитрий Ефименко. Дмитрий является экспертом в управлении проектами и командами, бизнес- и системном анализе, проектировании, разработке, тестировании и построении процессов. Более 13 лет в разработке софта, последние 4 года – лидер продуктовой команды. Категорический сторонник вытягивающих подходов в проектировании и разработке, самоуправляющихся команд, бережливых и легковесных процессов. Увлекается синтезом эффективных процессов «под команду» из известных и не очень методов и практик.

13-14 апреля в Киеве Дима представит свой тренинг «Практики эффективного, но экономного проектирования». В этот тренинг он постарался включить весь свой опыт и знания на тему проектирования программных продуктов, полученный за многие годы работы в IT.

Тренинг даст вам простой, логичный и понятный подход к проектированию путем определения бизнес-целей заказчика, их перевода в сценарии поведения/тестирования, а затем – в аналитическую модель приложения (абстрактное решение). Такие подходы позволяют минимизировать риски ошибок в требованиях, проектировании и расстановке приоритетов, ускорить проектирование и разработку и самое главное – позволяют управлять частыми изменениями требований и экономить время на согласовании с заказчиком.

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

Кому он нужен? Тому, кого достало частое изменение требований, ошибки в приоритетах, метания заказчика и «трудности перевода» между заказчиком и командой.

Регистрация на тренинг уже открыта. Стоимость участия составляет 1700 гривен (обед включен). Тренинг проходит в 2 дня. Торопитесь, количество участников ограничено!