Что такое процесс разработки?
Создание любой программной системы — от сайта-визитки до многокомпонентной системы состоит из большого количества разнотипных операций. Среди них могут быть:
→ сбор и анализ требований
→ документирование требований к системе в виде документа «Техническое задание»
→ визуальное проектирование графического дизайна системы
→ прототипирование функционала системы
→ разработка программного кода системы
→ тестирование функционала системы
→ развёртывание системы на рабочую инфраструктуру (на хостинг, или на оборудование клиента).
Эффективность и качество результата многих из этих операций сильно зависит от того, как организовано взаимодействие между проектной командой и заказчиком. В данном сообщении процессом разработки мы будем называть то, как организовано взаимодействие между производственными операциями в рамках проекта, и между заказчиком и исполнителем в рамках этих операций.
Важно понимать, что никакой исполнитель не сможет полностью удовлетворить потребности заказчика в продукте, если сам заказчик не будет уделять должного внимания работе с исполнителем в ходе выполнения проекта.
Каким должен быть процесс
При выборе типа процессе мы исходим из того, чтобы он был:
→ эффективным с точки зрения скорости разработки;
→ безопасным для клиента и для нас.
О втором пункте надо сказать подробнее. Что значит безопасным? Под этим мы понимаем то, чтобы в любой момент работы над проектом риски обеих сторон были минимальными. Рассмотрим заведомо плохой случай:
«Одна компания заказала у одной студии сайт, студия получила предоплату и работала над ним 3 месяца. Когда сайт был готов, студия предоставила его заказчику, но результат работ заказчика не устроил, хотя формально требования ТЗ были удовлетворены. Возник конфликт, в котором каждая из сторон считает себя несправедливо обиженной, а тем временем цели заказчика не достигнуты, сайт не запущен.»
В чем причина проблем в этом проекте? На наш взгляд — в слишком затянутом цикле разработки. Вместо того, чтобы оплачивать сразу весь проект, а потом ждать его результатов 3 месяца, гораздо безопаснее для обоих сторон было бы разбить его на несколько фаз (в зависимости от масштаба проекта), каждая из которых была бы не более одного-двух месяцев. Тогда обе стороны были гарантированно защищены от таких нестыковок, риски были бы величиной не в весь проект, а только в отдельную фазу.
При приёмке очередной фазы проекта заказчик увидел бы, что исполнитель неверно, по мнению заказчика, истолковал ТЗ, и они смогли бы обсудить эту проблему, пока она не зашла слишком далеко, и найти решение.
Процесс в компании «Гендикс»
Учитывая вышесказанное, мы придерживаемся итеративного процесса разработки, разбивая проект на несколько фаз, каждая из которых принимается и оплачивается отдельно. При этом у клиента есть постоянное представление о том, что на данный момент готово. Если это возможно в конкретном проекте, мы стремимся к тому, чтобы результатом каждой фазы было работающее решение с частичным (по сравнению с готовой системой), но всё же пригодным к использованию набором функциональности. Благодаря этому заказчик может уже на ранних этапах проекта опробовать разрабатываемое решение, оценить то, что уже сделано, лучше понять собственные потребности.
Кроме этого, мы используем систему BaseCamp для ведения проектов, и даём заказчику доступ в неё, чтобы обеспечить прозрачность работы и обмена информацией о ходе дел в проекте.