Я бы предложил такой вариант:
1. Аналитиком формируется ТЗ и ставится в очередь заданий, для задания аналитик выставляет желательный срок выполнения (можно еще приоритет).
2. Руководитель программистов выставляет уровень сложности задания и назначает исполнителя в соответствии с загрузкой и желаемым сроком исполнения
3. Исполнитель (программист) оценивает срок исполнения задания и согласовывает его с руководителем програмистов. В задании фиксируется оценочный срок исполнения.
4. После исполнения задание передается на тестирование и выставляется дата передачи в тестирование
5. Аналитик тестирует задачу и если не принимает то возвращает на исполнение.
Таким образом мы имеем следующие параметры каждого задания:
1. Уровень сложности
2. Оценочное время выполнения, подтвержденное экспертной оценкой руководителя
3. Фактическое время выполнения, зафиксированое системой учета заявок
По каждому исполнителю мы получаем отчет, который показывает абсолютные и относительные (от общего времени) отклонения фактического времени от оценочного, а также некий показатель "Скорректированный уровень отклонения (СУО)", на который влияет сложность задачи. Сложность задачи влияет таким образом: для каждого уровня сложности устанавливается приемлемый уровень отклонения, который "гасит" это разницу в показатале СУО. Например для несложных задача это один день, для средних 3 дня, для сложных 7 дней. Причем этот уровень может устанавливаться индивидуально для каждого программиста в зависимости от его квалификации, стажа работы, личных отношений с руководителем
Статистика по показателю СУО и покажет вам как кто работает.
К сожалению, в моей схеме не учитывается качество кода.