Шрифт:
Интервал:
Закладка:
На этот вопрос я попытаюсь ответить в данной главе. Вы узнаете, как выглядит процесс написания программы с точки зрения клиента. Также будет показано, как много ненужных вещей мы зачастую преподносим заказчику и как часто нам не удается сделать то, что действительно важно, – регулярно предоставлять клиенту хорошие функциональные программы.
К концу главы вы в общих чертах поймете, как планируется гибкая разработка, как судить об успехе проекта и как всего три простые истины помогают с честью выдерживать самые сжатые сроки и реализовывать сверхсложные проекты.
1.1. Как создавать что-то полезное каждую неделю
Давайте на секунду отвлечемся от гибкой разработки и поставим себя на место клиента. Это ваши деньги и ваш проект, для реализации которого вы наняли команду профессионалов высшего класса.
Что поможет вам убедиться в том, что приглашенная команда действительно не сидела сложа руки? Кипа документов, планов и отчетов? Или регулярное еженедельное предоставление полнофункциональных, протестированных программ, включающих только самое нужное?
Итак, если вы уже начали смотреть на программу с точки зрения клиента, значит, наши дела пойдут хорошо.
1. Нужно разбить крупную проблему на мелкие задачи.
Неделя – это ведь совсем немного. Казалось бы, нельзя успеть выполнить за неделю какую-либо работу. Чтобы дело пошло, нужно разбить большую и неподъемную с виду задачу на маленькие, более простые и управляемые.
2. Нужно сосредоточиться только на том, что действительно важно, и забыть обо всем остальном.
Большая часть того, чем мы занимаемся при разработке программ, не представляет никакой или почти никакой пользы для нашего клиента.
Разумеется, нам понадобится документация. Конечно, не обойтись и без планов. Но они нужны только как вспомогательные средства на пути к созданию готовой программы.
Создавая что-то стоящее каждую неделю, вы просто вынуждены собраться и отбросить все, что не приносит пользы. В результате вы как будто отправляетесь в дорогу налегке, захватив с собой только самое необходимое.
3. Нужно убедиться, что создаваемый вами продукт работает.
Создание чего-то полезного каждую неделю подразумевает, что плоды вашего труда должны быть качественными. Для этого необходимо тестирование – как можно больше и как можно раньше. Прошли те времена, когда все лишнее из проекта убирали только в его финале. Теперь ежедневное тестирование уже становится образом жизни. Вся ответственность лежит на вас.
4. Работа требует участия клиента.
Чтобы достичь цели, нужно регулярно останавливаться и сверять курс с клиентом. Его участие можно сравнить со светом фар, который рассекает густой туман, когда вы несетесь по трассе со скоростью 100 км/ч. Без таких консультаций клиент не может отслеживать вашу работу – в результате вы оба можете попасть в кювет.
5. При необходимости нужно изменять курс.
При работе случается всякое. Положение изменяется. То, что неделю назад казалось важным, сегодня может быть отбраковано. Если выстроить план и слепо ему следовать, вы не сможете справиться с непредвиденными обстоятельствами в случае их возникновения. Поэтому, если реальность нарушает ваши планы, меняйте планы, а не реальность.
6. Вы берете на себя ответственность.
Когда вы ставите перед собой цель каждую неделю создавать что-то стоящее и отчитываться перед клиентом, на что тратите его деньги, вы берете на себя определенную ответственность.
♦ Вы отвечаете за качество.
♦ Вы придерживаетесь расписания.
♦ Вы устанавливаете определенную планку.
♦ Вы тратите средства так, как если бы они были вашими.
Считаю ли я, что настанет день, когда все будут работать именно так? Ни в коем случае – ведь я же не удивляюсь тому, что большинство людей питается неправильно и не утруждает себя физкультурой.
Создание чего-то ценного каждую неделю – дело не для слабонервных. Выбирая такой подход к работе, вы словно попадаете в луч прожектора. В нем никуда не спрятаться. Ваши творения либо полезны, либо нет.
Но если вам нравится быть на виду, вы сторонник качественной работы и вас распирает желание действовать, то именно для вас работа в команде специалистов, применяющих гибкую методологию, может быть не только очень плодотворной, но и чертовски интересной.
А если вас все же пугает перспектива работать в темпе «на все про все неделя» – не отчаивайтесь. Большинство команд, работающих в гибком режиме, начинает с двухнедельных проектов (а если команда очень большая – то с трехнедельных).
Это просто метафора, суть которой сводится к тому, что вы должны регулярно предоставлять клиенту готовые программы, и для этого требуется определенная отдача с его стороны, а при необходимости – изменение курса. Вот и все.
1.2. Как происходит планирование при гибкой разработке
Планирование проекта в гибкой манере схоже с подготовкой к долгим насыщенным выходным. Не буду писать длинных списков необходимых дел и задач, лучше давайте поговорим о таких нетривиальных вещах, как журнал пожеланий к продукту и пользовательские истории.
В гибкой разработке под журналом пожеланий (master story list)[1] понимается список задач, которые предстоит решить программисту. В нем упоминаются все важнейшие функции (пользовательские истории, user stories) – пожелания, предъявляемые клиентом к программе. Приоритетность тех или иных функций определяет сам пользователь, ваша команда разработчиков оценивает эти приоритеты и закладывает базовый план проекта.
Механизм выполнения всех задач в гибком проекте – это так называемая итерация. Под итерацией понимается короткий одно– или двухнедельный период, в ходе которого команда берет важнейшие пользовательские истории и преобразует их в действующие, протестированные программные функции.
Члены вашей команды могут прикинуть, сколько работы способен взять на себя каждый из них, измеряя скорость работы команды (сколько дел можно выполнить за одну итерацию). Отслеживая скорость работы команды и используя эти данные для того, чтобы спрогнозировать, сколько удастся сделать в будущем, вы сможете ставить реальные сроки и соблюдать их, а ваша команда не будет брать на себя чрезмерных обязательств.
Когда оказывается, что вам и вашему клиенту предстоит сделать слишком много, ваш единственный выход – сделать меньше. Гибко подходя к объему задач, вы сможете сохранить сбалансированные планы, а ваши обещания останутся реалистичными.
И если реальность идет вразрез с планом, нужно менять план. Адаптивное планирование – это краеугольный камень гибкой разработки.
Пока это все, что требуется сказать о гибком планировании. Такой метод планирования будет подробнее рассмотрен в главе 8.
Если сроки поджимают, то, как говорится, «надо – значит надо». Просто советую убедиться, что вы жертвуете собой ради стоящего дела, а не ради совершенно нереального обещания, данного примерно год назад при обзоре показателей эффективности работы.
Действительно, нереальные обещания время от времени даются и команды разработчиков сталкиваются с необходимостью сотворить невозможное. Но это неправильно. Работать с расчетом на чудо – не лучший способ реализации проекта и еще более порочный принцип по отношению к ожиданиям клиента.
При гибкой разработке необходимость в чудесах такого рода отпадает, так как вы собираетесь работать с клиентами открыто и честно с самого начала – рассказываете, что предстоит сделать, и позволяете принимать осознанные решения о функционале программы, финансировании и сроках.
Все дело в выборе. Можете продолжать веровать в миф о том, что все раз – и получится. Или можно разработать вместе с клиентом такой план, в который поверите и вы и он.
1.3. Сделано – значит сделано
Допустим, ваши дедушка с бабушкой за небольшое вознаграждение попросили соседского сына-подростка сгрести граблями опавшие листья во дворе на даче, сложить в мешок и отнести в лес. Сочтут ли дедушка с бабушкой работу выполненной, если парень сделает что-то из следующего:
♦ составит отчет о том, как он спланировал работу с граблями;
♦ предложит элегантный метод работы;
♦ составит тщательный и полный план тестирования?
Ничего подобного! Парень не получит ни копейки, пока не уберет листья, не уложит их в мешок и не отнесет куда следует.
При гибкой разработке применяется тот же принцип. В данном случае под реализацией функции понимается решение всех задач, необходимых для получения готового к работе кода.
- Успешный руководитель проекта - Юрий Волщуков - Управление, подбор персонала
- Управление бизнесом. Психология успеха - Антон Пономарев - Управление, подбор персонала
- Охота за головами. Набор кадров, конкурс, кадровый ассессмент - Константин Бакшт - Управление, подбор персонала
- Управление рисками организаций - Олеся Фирсова - Управление, подбор персонала
- Закупки и поставщики. Курс управления ассортиментом в рознице - Екатерина Бузукова - Управление, подбор персонала
- Инновационный проект. Управление качеством и эффективностью - Михаил Круглов - Управление, подбор персонала
- Информатизация бизнеса. Управление рисками - Сергей Авдошин - Управление, подбор персонала
- Экстремальный тайм-менеджмент - Алексей Толкачев - Управление, подбор персонала
- Не откладывай на завтра. Краткий гид по борьбе с прокрастинацией - Тимоти Пичил - Управление, подбор персонала
- Детский клуб. Совершенствуем систему управления - Софья Тимофеева - Управление, подбор персонала