Добрый день! |
Введение в Agile
1.1. Введение
В сфере информационных технологий вопросы, связанные с процессами разработки программных продуктов, - одни из самых спорных и сложных. Начиная с момента широкого распространения компьютерных технологий, в 60-е годы XX века, специалисты пытаются отыскать универсальное средство, именуемое "серебряная пуля", с помощью которого удастся решить задачу создания сложных программных продуктов быстро, дешево и качественно. Его ищут до сих пор и, видимо, будут искать еще очень долго.
Процессные методологии разработки информационных систем сменяют друг друга, но при этом сохраняется общая закономерность, связанная с фокусированием на оптимизации самого процесса и максимизацией конечного результата.
На текущий момент сложилось два основных противодействующих лагеря.
Адепты первого - это консерваторы, предпочитающие более основательные, "тяжелые" методологии, в которых четко и однозначно определена структура и последовательность выполняемых этапов работ. Типичным примером таких методологий является водопадная модель разработки информационных систем.
Приверженцы второго - это новаторы, выделившиеся из популярного ранее направления итерационной разработки, которые структуре и последовательности работ предпочитают эффективное профессиональное взаимодействие и гибкость в ответ на изменчивость внешнего мира. Именно о таких методологиях, которые принято называть гибкими, и пойдет речь в нашем курсе.
Все семейство гибких методологий на сегодняшний день находятся в непрерывном развитии:
- модернизируются и дополняются существующие подходы;
- разрабатываются новые методологии;
- расширяется сфера их использования.
1.2. Что такое Agile?
Процессный подход, как способ организации деятельности, будоражит умы и вызывает множество различных вопросов уже достаточно давно.
Когда речь заходит о "правильном" и эффективном управлении деятельностью, множество практиков приводят различные доводы в пользу того или иного подхода, который, по их мнению, является оптимальным способом организации работы.
Проходит время, меняются внутренние и внешние условия, различные факторы, и рынку необходимы новые инструменты, которые смогли бы позволить приспособиться компаниям к изменяющейся действительности и при этом демонстрировать все более устойчивый результат по сравнению с их предшественниками. Неизменным остается только наличие "человеческого ресурса" со всеми его достоинствами и недостатками. Попытка относиться к сотруднику, как к самозарядному автомату, который должен в сжатые сроки выстреливать результатом и быть готовым к использованию в любых, даже самых жестких условиях, постепенно отживает свое.
Значимость смены подобной парадигмы ознаменовалась тем, что в литературе взамен варварского термина "человеческий ресурс" стали использовать более мягкий - "человеческий капитал".
Но это не должно вводить в заблуждение тех, кто ставит во главу угла творческое начало и отрицает всякую значимость дисциплины. Сотрудник должен быть не винтиком в отлаженном механизме (не так уж много таких отлаженных механизмов, как показывает практика), а играть роль важной шестеренки, которая приводит в движение смежные процессы, обеспечивающие жизнь организации, каждого из профессионалов или тех, кто стремится им стать.
На сегодняшний день процессные методологии, ориентированные не только на конечный результат, но и на грамотное управление сотрудником как творческой и самоопределяющейся боевой единицей, показывают наибольший успех.
К примеру, можно привести Lean, Six Sigma, итерационный подход к разработке программного обеспечения, которые являются достаточно сложными к внедрению, последующей адаптации и развитию, но их постоянное применение позволяет компаниям вырваться в лидеры своих сегментов рынка и занять на них устойчивое положение.
Процесс есть всегда. Даже в том случае, когда речь идет о стихийном выполнении разнородных этапов, мы все равно говорим о процессе с низким уровнем зрелости, результат которого в большинстве случаев будет непредсказуемым.
Если руководство организации не устраивает ситуация, в которой оно не может влиять на достижение результата, то процессами обычно стремятся заниматься. Не просто заниматься, а делать это эффективно.
Главным помощником в достижении оптимального управления деятельностью в последнее время все больше и больше выступают информационные технологии, привносящие определенную меру порядка в окружающий организации хаос. Отлаженная информационная система или набор систем помогают компаниям оптимизировать и усовершенствовать их процессы до такой степени эффективности, когда возможное отрицательное влияние человеческого фактора сведено к минимуму.
Главная задача, которую необходимо решать каждому предприятию, пришедшему к необходимости применения ИС, - это то, что процессами их внедрения, разработки и развития надо также управлять.
В этой области сложилось несколько процессных методологий, каждая из которых имеет определенный багаж побед и поражений.
Первый и основной на сегодняшний день - последовательный подход, состоящий в четком следовании запланированной структуре работ, суть которых определена заранее.
Второй, наиболее перспективный и амбициозный, - гибкий подход, являющийся последователем итерационного подхода, который не отрицает первого, но цель которого состоит в снижении сложности необходимой структуры этапов при разработке программного обеспечения, повышении прозрачности выполняемого набора работ и использовании творческой инициативы людей как средства повышения результативности. Такими методологиями являются процессы семейства Agile.
Agile - процессная методология, состоящая из серии подходов (Scrum, Kanban и пр.) к разработке программного обеспечения или информационного продукта, ориентированная на использование итеративной разработки, динамическое формирование требований и обеспечение их реализации, в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля.
Выше приведено основное и общепринятое определение Agile, но, как это часто бывает в мейнстримных направлениях, которым Agile стала на сегодня, единого определения не существует и есть множество альтернативных толкований этого термина.
Приведем еще несколько специфичных толкований, которые дополнят ваше представление о его сущности.
Agile - это framework для разработки и поддержки функционально сложных продуктов.
Agile - это framework, в рамках которого возможно решать сложные комплексные задачи и в то же время продуктивно и креативно разрабатывать продукты удовлетворительного для заказчика качества.
Agile - это framework, используемый для комплексного управления процессами.
Agile - это активно развивающаяся (с начала 90-x) процессная методология, цель которой заключается в оптимальной организации рабочего наукоемкого процесса, создании эффективных инструментов мониторинга и контроля за его исполнителями и производимыми результатами.Как вы заметили, приводя определения, мы использовали понятие framework, которое служит для обозначения профессионального подхода к решению всевозможных задач, являющихся ступенью к достижению поставленного результата.
В современном мире это понятие стало распространяться не только на профессиональную деятельность, но и на все проблемы, которые стоят перед специалистом. В нашем курсе мы дополним и расширим это понятие, так как, говоря о Agile, постепенно становится понятно, что это не просто подход к организации процессов, а эффективная жизненно-профессиональная философия.
В завершение скажем о том, что хоть Agile и родилась как способ организации специализированных процессов в области информационных технологий, но при этом ее с успехом используют во многих областях, где:
- влияние человеческого фактора на достижение конечного результата очень высоко;
- продукт, который получается в результате деятельности, представляет собой сложный и комплексный артефакт;
- в работе над продуктом задействована команда профессионалов, объединенная общими целями и задачами.
В утверждении, что Agile - это гибкий управленческий framework, нет лукавства. Это действительно так, что подтверждено на практике. Многие компании, основными процессами которых являются маркетинг, консалтинг и пр., уже успешно "живут" по Agile.
В нашем курсе мы уделим основное внимание самому популярному и авторитетному ответвлению Agile - Scrum. Основополагающие принципы и артефакты, о которых мы будем вести речь, используются во всех ответвлениях семейства Agile.
1.3. Немного из истории
В феврале, а точнее, в выходные с 11-е по 13-е, 2001 года на горнолыжном курорте в горном хребте Васатч, штат Юта (США), 17 человек, уважаемых специалистов в области разработки программного обеспечения, встретились пообщаться на общие темы (боль, идеи, надежды), покататься на лыжах и, конечно же, поесть…
Именно так, если верить авторитетным источникам, началась официальная история самого популярного отпрыска семейства Agile - Scrum.
К тому моменту возникла необходимость создания действенной и общеприменимой альтернативы тяжеловесным методам разработки программного обеспечения. Первые ростки, именуемые экстремальным программированием, адаптивная разработка программного обеспечения, кристалл, FDD, прагматичное программирование уже начали появляться на рынке, но для обширного распространения были слишком экзотичными (посадить за один компьютер двух разработчиков в одно и то же время было просто умопомрачительным решением для начала 2000-х годов).
Начиная с конца 80-х рынок информационных технологий, как в старушке Европе, так и в Соединенных Штатах Америки, начал готовиться (а вернее, его начали готовить именно те, кто в последующем станут авторами Agile) к прорыву.
Мирная революция назревала. Процессы разработки программного обеспечения должны были перестать быть уделом небольших псевдо- или околонаучных коллективов или одиночек, которые были гиками своего времени. Нужен был толчок, который позволит вывести развитие программного обеспечения на новый виток, инициировать следующую итерацию в развитии рынка программных продуктов.
Развитие электронно-вычислительной техники должно было стать дополнительным катализатором, подтолкнувшим к буму развития компьютерно-вычислительной техники и процессов разработки программных продуктов.
Поворот "лицом" к бизнес-заказчику, который ранее был далек от происходящего, и его активное знакомство с программными продуктами как средством оптимизации и повышения эффективности его бизнеса продемонстрировало всю мощь информационных технологий. Пиджак с галстуком, заинтересованный только в конечном результате, который сидит несколькими десятками этажей выше от отдела информационных технологий, должен стать вовлеченным в текущие процессы, сделаться их активным участником. Звучит очень хорошо и перспективно, но так просто, с наскока, открыть все двери одним движением ноги никто не позволил бы. Аудиторию заинтересованных сторон необходимо было ментально подготовить.
И эта подготовка началась издали, сначала с наиболее определенных участков человеческой деятельности, в которой не нужен широкий и очень быстрый полет творчества, - бухгалтерский и смежный с ним типы учета.
Постепенно информационные технологии стали отвоевывать все больше и больше пространства, проникать в емкие и сложные виды деятельности, занимая свое место среди прочих видов деятельности.
Экспоненциальный рост темпов развития информационных технологий привел к тому, что сроки на разработку информационных систем стали постоянно сокращаться.
Все меньше и меньше времени стали отводить на долгое и основательное планирование, последующее проектирование, написание полного пакета необходимой документации и последующее всеобъемлющее тестирование. Существующие процессы разработки программного обеспечения, а вернее - их методология, должны были адаптироваться к наступающей действительности.
Если сдвига не произошло бы, то все разрабатываемые программные продукты устаревали бы еще до того, как были полностью готовы к коммерческому использованию. Двигаться в направлении информатизации было необходимо, и это движение должно быть продуманным, но не слишком долгим.
Именно это и произошло с гибкими методологиями. Эволюционно, преобразовывая итерационный принцип разработки информационных систем, сначала полностью вовлекая в процессы только специалистов, разработчиков, тестировщиков и пр., а потом и смежные специальности, рынок готовился к появлению методологии, в которой одним из главных постулатов будет универсальность, но с сохранением профессиональной индивидуализации ее участников.
Agile появилась и начала набирать обороты на фоне быстрорастущего усложнения технологий и всеобщей информатизации различных бизнес-направлений деятельности.
Как говорят все те же авторитетные западные источники, на той судьбоносной встрече в "штате мормонов" появился Agile Manifesto - библия гибких процессов разработки программного обеспечения, о котором мы поговорим немного позже.