
Одной из основных моих активностей на работе является оценка проектов. И в данной статье я постараюсь поделиться своим опытом в данной области.
По данной теме написано очень много книг и статей, но зачастую все примеры из них описывают многомиллионные проекты расчитанные на несколько лет, и адаптировать их под нужды небольших проектов до 1000 часов довольно проблематично, для таких проектов необходима «экспертная» оценка — т.е. оценка человека, который знаком с технологиями и разрабатывал или рукводил разработкой подобных проектов. И так предположим, что Вы и есть тот самый человек, кому прийдется оценивать проект.
Дабы не ходить вокруг да около, лучше всего будет привести пример, поэтому возьмем абстрактный проект со следующими мутными требованиями:
«Хочу сайт, где пользователи смогут писать посты с картинками, оставлять комментарии, выставлять рейтинги, обмениваться сообщениями, а так же на сайте будет магазин с книгами, книги будет добавлять администратор сайта, он так же будет следить за порядком на сайте. Сайт должен иметь „лёгкий“ дизайн и соответствовать web 2.0»
Начнем по порядку:
- Пытаемся понять бизнес-идею заказчика, если у Вас это не получилось — необходимо добиться этого понимания, глядя на данное описание можно предположить 2 варианта для получения отдачи с сайта — процент с продажи книг и контекстная реклама (о которой не было сказано ни слова, но очень часто предполагается по умолчанию)
- Задайте следующие вопросы заказчику:
- Какие нагрузочные требования к системе, сколько будет зарегистрированных пользователей, сколько онлайн (я сомневаюсь, что заказчик адекватно поймет словосочетание «конкурирующие запросы»)?
- Нужна ли поддержка мультиязычности?
- В каких браузерах должен корректно отображаться сайт?
- Какие требования к безопасности сайта (понятно, что мы не будем писать дырявое приложение, но лучше заранее знать что сайт будет работать по HTTPS и URL будут уникальны для каждого пользователя)
- Разбейте проект на составляющие — составьте фиче-лист проекта
- Все вопросы которые возникают — записываем, и не забываем задать их заказчику, каждый вопрос желательно сопровождать пояснениями, дабы не смущать заказчика, а так же не мешало бы подталкивать его к правильному ответу, который бы минимизировал часть рисков (к примеру на вопрос о поддержке различных браузеров, лучше упомянуть, что самые популярные нынче это IE6.0+, FF 2.0+ и Safari 3.0+, иначе есть риск, что придется подгонять дизайн под какие-нить ископаемые, типа Netscape 8.0)
- Итоговую оценку с подробными комментариями и вопросами отсылаем заказчику в формате XLS — пусть он сам попробует добавить/убрать некоторые пункты
Данный пункт требует определенных навыков, дабы расшифровать требования и ничего не упустить, и вот некоторые советы по составлению фиче-листа:
- Каждый пункт должен включать 2 оценки — среднюю, и максимальную (это если сработают все риски, риски лучше сразу описывать)
- Выделите следующие части в отдельные пункты
- разработка и внедрение дизайна
- разработка архитектуры системы
- разработка БД
- анализ требований (собственно это чем вы будете заниматься до старта проекта, включая написания документации)
- если у Вас команда разработчиков, то так же должен быть пункт «Передача знаний» — это время на митинги, и тому подобные рабочие процессы, которые кушают бюджет
- менеджмент — включает в себя общение с заказчиком и сам менеджмент как таковой
- тестирование — нам же нужна «живая» система
- деплоймент системы на сервер заказчика
- Выделите отдельным пунктом «бесплатный сыр» — то что Вы бы сделали, даже если бы не было такого требования, к примеру — интеграция WYSIWYG редактора или поддержка User Friendly URL, интеграция Google Analytics и Google AdSense
- Обычное явление для сайта — присутствие страниц со статической информацией, которая может изменятся администратором, по личному опыту — для 90% сайтов необходимо было реализовывать данный функционал
- У нас на сайте присутствует как минимум 3 роли: гость, зарегистрированный пользователь, администратор, а может еще будет модератор?
- У нас есть как минимум 5 сущностей кроме пользователей: книги, посты, комментарии и рейтинги, а так же сообщения для приватных бесед, если чуть-чуть подумать, то появляются еще категории для книг и тэги для постов (дабы следовать web 2.0), необходимо все предположения уточнить у заказчика.
- Дизайн аля web 2.0 может оказаться и с flash'ом или заказчик видел где-то, что-то и он хочет подобное, так что продолжаем формировать список вопросов
- Если у нас электронный магазин, предполагается ли интеграция payment gateway'ев, если да, то каких.
- Обмен сообщениями между пользователями — тоже довольно скользкий момент, возможно заказчик имеет ввиду чат, или всё же простенькую систему внутренних сообщений? Пользователи могут отсылать сообщения любому другому пользователю, или будет список друзей?
- Entities:
- Static Pages
- Users
- Users Friends
- Blog Posts
- Blog Posts Tags
- Blog Rates
- Blog Comments
- Books
- Books Categories
- Messages
- Free Section
- User Friendly URL
- WYSIWYG Editor
- Google Analytics
- Google AdSense
- Design
- Architecture
- Database Architecture
- Knowledge transfer
- Management
- Testing
- Deployment
Далее лучше всего разбить данный список по ролям (гость, пользователь, администратор), а для таких пунктов как менеджмент, тестирования, анализ требований и передача знаний оценка будет указана в процентах от общего времени разработки, на данный момент это 10% для менеджмента, 30% для базового тестирования и по 5% на анализ и передачу знаний (такие значения выведены личным опытом и здравым смыслом).
В итоге у меня получился фиче-лист с очень приблизительной оценкой, впрочем описание тоже не радует деталями. В действительности после выяснений всех деталей, может оказаться, что заказчик хотел всего лишь что-то наподобие Wordpress MU, а магазин представлял бы всего-лишь — ссылки на Amazon с указанием реферала, хотя, с таким же успехом, заказчик может хотеть и социальную сеть, со всеми соответствующими атрибутами…
Если Вам интересна данная тема, могу посоветовать прочитать еще статейку о клоне YouTube.
Кросспост: Оцениваем проекты