При найме на работу в IT-компании всё чаще и настойчивее звучит пункт: «знание методологии agile». Попробуем разобраться, что это такое, и есть ли курсы для разработчиков, где этому обучают.
Гибкий подход к созданию программного обеспечения, или Agile Software Development, — это методология создания программных продуктов, при котором циклы (итерации) разработки происходят одновременно.
Подчеркнем, что Agile — это не язык программирования и не набор инструментов для работы программиста. Это подход к организации рабочего процесса. Agile описывает способы взаимодействия внутри IT-команды, помогающие добиться качественного работоспособного продукта.
Designed by freepik
Методика Agile пошла, как водится, из западной IT-среды, а начало ей было положено в 2001 году, когда группа разработчиков выпустила одноименный манифест, состоящий из 12 пунктов.
Откуда возникла нужда в Agile-разработке? Дело в том, что в цифровой индустрии главенствовал так называемый waterfall-подход. Он гласит, что разработка программного продукта должна пройти несколько обязательных этапов, прежде чем он увидит свет:
Сбор спецификаций (требований);
Анализ требований;
Формирование архитектуры продукта;
Создание дизайна продукта;
Написание кода;
Тестирование и отладка;
Выпуск в релиз.
Такая методика очень эффективна на поточном производстве, откуда она, собственно, и перекочевала в отрасль цифровых технологий. Однако тут она нередко начинает буксовать, превращаясь в сущий кошмар и бардак. Каждый этап — это бесконечные планы, согласования и совещания, тонны документации и нередко тупиковое понимание, в какую сторону двигаться, и за что должен отвечать каждый участник процесса, включая менеджеров и маркетологов. Продукт мог бы уже давно выйти на рынок и приносить пользу заказчику, а команда до сих пор не вышла из этапа проектирования, тратит деньги и усилия в пустоту. Как же быть?
Попыткой сломать эту парадигму и стал Agile-подход. Основной принцип можно сформулировать так: «Готовое — лучше, чем идеальное». Поэтому все процессы начинаются одновременно:
Команда планирует и реализует базовую функцию продукта;
Пока идет тестирование, разработчики приступают ко второй функции;
К моменту выхода в релиз базовой фичи, на отладку передается вторая;
В этот момент основная команда уже приступает к третьей.
Так, раз за разом разработчики выводят работоспособный продукт, постепенно полируют и доводят его до ума. Иными словами, продукт проходит разные итерации, постепенно эволюционирует и обрастает новыми функциями. Преимущество в том, что команда не привязана намертво к первоначальному плану и может теснее взаимодействовать с заказчиком/пользователями, оперативно принимать обратную связь и вносить коррективы в работу, причем нередко кардинально всё переделывая.
Методика Agile нагляднее всего работает в игровой индустрии. Там уже давно подмечено: как игру ни полируй, на финальном этапе всё равно появится масса багов и мелких недоделок. Особенно, если вы создаете масштабный AAA-проект.
Agile помогает выкатить работоспособный, играбельный продукт в обозначенные сроки. Не снимая руку с пульса, разработчик собирает статистику и проверяет обратную связь с аудиторией, находит конструктивную критику, исправляет недоделки патчами, меняет игровой процесс, вводит новые интересные игровые механики и т.д. Так можно продолжать почти бесконечно.
Итак, польза Agile-подхода к разработке очевидна:
Ускоренный вывод продукта на рынок;
Гибкий подход к приоритетам пользователей, которые регулярно меняются и нередко тяжело поддаются прогнозам;
Улучшение обратной связи между IT и бизнесом. Это позволяет реагировать на конъюнктуру рынка, менять ценовую политику, формировать штат разработчиков и решать ещё массу текущих задач.
Разумеется, Agile не лекарство от всех болезней — у него есть и недостатки, и ограничения. Например, эта методика хорошо работает в небольших командах разработки, когда есть возможность собраться и персонально распределить задачи на день. В крупных компаниях с большим числом сотрудников, особенно на удаленке, это сделать значительно сложнее.
Кроме того, Agile-методику критикуют за то, что он не обозначает далеко идущей цели, работая по принципу «разглядываем деревья, не замечаем леса». Требования в каждой итерации могут меняться, нередко противоречат изначальной архитектуре, повышается риск накопления критических ошибок (так называемый «технический долг»), которые потом трудно исправить.
На этот вопрос можно ответить так: если вы всерьез хотите работать в IT-секторе, с Agile нужно ознакомиться обязательно. В первую очередь методология Agile предназначена, конечно же, разработчикам — людям, непосредственно занятых кодом и исправлением багов.
Однако Agile-подход нужно изучать и владельцам IT-бизнеса. Он требуется управляющим проектами (Project Manager, Product Manager) и их ассистентам, требуется дизайнерам, SMM-специалистам, редакторам и копирайтерам — в общем всем, кто так или иначе трудится над высоконагруженными сложными проектами в IT.
Особенность Agile в том, что он поощряет горизонтальные, а не иерархические связи. И здесь волей-неволей придется выходить за пределы своих компетенций и постоянно учиться чему-то новому. Менеджер, даже отдаленно не разбирающийся в программировании, никогда не поймет технаря-разработчика, а тому будет трудно разобраться, какие бизнес-задачи решает продукт. Координировать их работу будет тяжело и болезненно, а эффективность работы упадет.
Одним словом, знание, как организовать работу по Agile, это один из ключевых soft skills как для управленцев, так и для непосредственных исполнителей.
Designed by freepik
Agile не преподают ни на каких факультетах ни в одном университете России. Да, возможно, где-нибудь ведут факультативы, но по факту единственный надежный способ — это курсы и вебинары в интернете, либо корпоративные обучающие семинары.
Вам очень повезет, если у работодателя в штате будет наставник, целенаправленно обучающий новичков культуре Agile. Однако даже крупные компании пока что предпочитают набирать готовых сотрудников. Поэтому остаются онлайн-курсы, которые можно рассматривать как метод повышения квалификации. Курсы обычно краткосрочные и затрагивают самые важные аспекты планирования:
Как планировать спринты (краткосрочные цели) и составлять бэклоги (очередность задач и перечень всех функций);
Как измерять результаты спринтов и облекать их в осязаемые цифры и показатели;
Как повысить производительность труда всех сотрудников и побудить их к самоорганизации;
Методика Kanban-разработки — визуализация результата при планировании;
Модель внесения изменений по Коттеру — метод, помогающий управлять задачами спринта, сплачивать команду и прогнозировать результат.
Перечень далеко не полный, он просто помогает понять примерное содержание онлайн-курсов по Agile. Нужно учитывать, что задачи для разработчиков и для менеджмента всё-таки отличаются, поэтому и учебные программы будут несколько разными по наполнению.
ВАЖНО! Обращайте внимание на конечный результат курсов. Если вы нацелены на освоение новой специальности (например, project management), итогом должен стать диплом о профессиональной переподготовке. Это будет весомым плюсом при трудоустройстве.
Беглого взгляда на рынок труда в стране достаточно, чтобы понять: сотрудники, владеющие Agile, чрезвычайно востребованы. Мы нашли примерно 1700 вакансий на hh.ru для самых разных специалистов, где так или иначе фигурирует пункт «знание Agile-методик». И даже если работодатель не заостряет на этом внимания, будьте готовы, что вас спросят о них на собеседовании.
Чаще всего владение методиками Agile требуют от проект-менеджеров и их помощников, product-менеджеров, специалистов по финтеху, IT-разработчиков разного уровня (от Junior до Senior). Реже мелькают web-дизайнеры, SMM-специалисты, копирайтеры.
Отдельная позиция есть и для тех, кто будет натаскивать сотрудников по Agile, то есть для коучей. И это может стать ещё одной точкой развития карьеры, если вы тем или иным образом были задействованы в IT, имеете опыт разработки и хотите им поделиться.
Чего обычно ждут от кандидатов на должность Agile-коуча:
Опыт работы с фреймворками SCRUM, Kanban;
Знание процессных и продуктовых практик;
Знание инструментов мониторинга, которые используются в разработке, таких как Jira;
Знание методов проведения совещаний, постановки задач, мотивации сотрудников на работу;
Подтверждения работы в командах и применения методик Agile.
Вакансий Agile Coach в России пока немного и большая их часть сосредоточена в Москве, так что профессию нельзя считать популярной. Однако, учитывая востребованность в квалифицированных IT-специалистах, можно полагать, что всё большему числу компаний потребуются их услуги и востребованность вырастет.
Методология разработки Agile уже давно стала стандартом для многих IT-компаний. Изучить её стоит всем, кто так или иначе связан с созданием и выводом на рынок программных продуктов, организацией работы коллективов разработчиков.
У Agile-методики есть свои недостатки и не всегда она применима на практике, но, изучив её, вы станете значительно компетентнее и серьезно расширите свои возможности на рынке труда.