Внутренняя кухня
Взаимодействие программистов между собой
На абсолютном большинстве проектов работает более одного программиста. Для того, чтобы координировать их работу между собой, используется т.н. «репозиторий» - специальный программный продукт. Он представляет собой центральную базу данных, в которой хранятся все исходные коды разрабатываемого ПО.

Когда программисту нужно внести изменения в какой-нибудь из файлов, он делает т.н. «checkout» - забирает файл на свой компьютер, работает с ним, и отправляет назад на сервер – делает «checkin».

Таким образом, в репозитории всегда хранится самая актуальная версия исходных кодов.
Если заказчику нужна последняя версия программы, то мы просто делаем сборку в репозитории и отправляем результат клиенту. Все это происходит автоматически – программисту достаточно нажать 1 кнопку. В нашей компании используется практика «на сервере всегда должен быть рабочий билд». Это означает, что все изменения, внесенные программистами, автоматически проверяются на работоспособность. Если кто-либо из разработчиков отправил на сервер изменения, из-за которых программа перестала работать, то они тут же получают соответствующее уведомление и восстанавливают работоспособность ПО.

В качестве репозитория мы используем Microsoft Team Foundation Server. При этом мы достаточно сильно доработали его под свои нужды.
Взаимодействие с заказчиком
При разработке ПО мы уделяем большое внимание взаимодействию с заказчиком.
- Во-первых, заказчик получает регулярные отчеты о ходе выполнения проекта. Это делает прозрачным процесс разработки: клиент видит, что разработка ведется и что она будет завершена в срок.
- Во-вторых, мы предоставляем заказчику доступ в нашу внутреннюю учетную систему. В данной системе можно создавать новые задачи, вносить информацию о найденных ошибках. При этом разработчики могут напрямую общаться с клиентом, узнавая необходимые им детали.
Отчеты о ходе выполнения проекта
Каждый день наша система автоматически формирует данные о ходе готовности проекта. За основу берется информация, вносимая программистами.
Итоговые цифры каждую ночь отправляются заказчику на электронную почту:

Кроме того, заказчик явно видит перечень изменений, внесенных за прошедший день:

Взаимодействие команды разработки с заказчиком
Мы предоставляем клиенту доступ в нашу систему, где он может вносить новые задачи или сообщать о найденных ошибках. Плюс данного подхода в том, что данная информация сразу становится видна программистам. При этом возможен прямой диалог программистов с заказчиком.
Так, например, выглядит список поставленных задач:

Форма заведения новой задачи:

Общая информация о задаче:

Обсуждение задачи с программистами:

Как только программисты завершают работу над задачей, заказчик получает уведомление на почту:

При необходимости заказчик автоматически получает новую версию программы, собранную прямо в репозитории:

В ряде случаев мы обновляем ПО на сервере заказчика самостоятельно.
Оценка задач, которые ставятся сверх ТЗ, может происходить двумя путями:
- Подсчет количества часов по факту выполнения;
- Предварительная оценка задачи и согласование цены с заказчиком.
В случае предварительной оценки заказчик получает письмо с точной ценой, и либо утверждает задачу, либо откладывает ее:

Мы рассказали лишь об основном функционале: в реальности возможностей гораздо больше, но их описание выходит за рамки данной статьи.