Pull to refresh

Управление проектами с почасовой оплатой

Reading time5 min
Views4.1K
Расскажу о том, как превратить почасовую оплату в отличный способ управления проектом. А также о том, как заказчику (менеджеру проекта) не волноваться о завышении сроков разработчиком, а разработчику не беспокоиться, что заказчик будет его двигать по срокам.


Цели участников проекта



Цель заказчика — выполнить проект в рамках выделенных ресурсов (временных, финансовых и человеческих). При почасовой оплате количество контролируемых ресурсов сужается до одного — человеко-часа, а чем меньше параметров для контроля — тем лучше контроль.

Цель разработчика — больше заработать и повысить профессионализм (отдачу от затраченного времени и как следствие больше зарабатывать). У разработчика есть два способа больше заработать — больше работать (больше часов) и работать лучше (эффективнее и иметь более высокую оплату за час труда). Увеличивать время до бесконечности нельзя, а вот уменьшить время, затрачиваемое впустую, можно. И самый простой способ это делать — изучать на что нужно тратить время в первую очередь, научившись экономить ресурсы заказчика.

Эти цели легко удовлетворить, если следовать алгоритму, к которому мы пришли в процессе исполнения проектов в различных предметных областях (от софта, до строительства). Единственное условие для отличного результата в этом алгоритме — менеджер проекта (в нашем случае он же заказчик) должен разбирается в предметной области не хуже разработчика.

Метод «как ты будешь это делать?»



Ключевые моменты метода:

  • Исполнитель сам описывает свои действия по решению задачи и сам их оценивает;
  • Заказчик соглашается с этой оценкой или предлагает свой способ реализации;


1. Постановка задачи.



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

2. Разработчик разбивает задачу на этапы по функционалу.



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

Некоторые разработчики боятся этого шага, ожидая что от них требуется что-то наподобие ТЗ (которое писать никто не любит) — не надо никакого ТЗ, формализма, графиков, UML-ов и прочих улетных технологий ухода от реальности, просто описать реализацию как есть, как она видится разработчику. Например:

  1. Посмотрю на сайте таком-то как эту задачу делали другие.
  2. Произведу изменения в БД
  3. Создам в БД таблицу «messages» с полями: id, from_id, to_id, message, time, is_readed.
  4. Добавлю в таблицу «users» поле «new_messages»
  5. Дополню модель
  6. Добавлю в модель пользователя методы: send_message(user_id, message), read_message(id), get_all_messages()
  7. Метод send_message сохраняет сообщение в таблицу messages и инкрементирует поле new_messages у отправляющего пользователя
  8. Оповещения
  9. Скачиваю и подключаю библиотеку jquery
  10. Пишу функционал ввода окна нотификации
  11. Вставляю в шаблон код вызывающий нотификацию
  12. Тестирую и отлаживаю


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

Важно — если человек не может внятно описать как он собирается что-то делать, он не сможет это сделать в разумные сроки вообще.

3. Разработчик определяет сроки



Зная, теперь, как и что он будет делать, разработчик подсчитывает сколько времени займет реализация каждого этапа. Важно сначала описать весь функционал (этап 2), не задумываясь о сроках, а затем оценить его.

Например:
  1. Поиски решений на сайтах — 20 минут.
  2. Изменения в БД — 15 минут.
  3. Дополнение модели — 30 минут.
  4. Оповещения — 90 минут
  5. Тестирую и отлаживаю — 30 минут


Итого: 3 часа 05 минут.

Редко получается сразу правильно оценить сроки. Но через 2-3-4-5 итераций появляется навык и умение планировать и оценивать достаточно точно.

4. Менеджер оценивает способы и сроки реализации.



Глядя на описание функционала и установленные разработчиком сроки, менеджер решает принимать ему их как есть или нет.

Если менеджер считает, что какой-то этап можно выполнить быстрее — он объясняет разработчику как это нужно сделать (фактически они возвращаются на 2-й этап) до тех пор пока оба не сойдутся в сроках и способах реализации. Например:

Менеджер: я считаю оповещение можно сделать за 15 минут, если применить плагин NotifyBar.
Разработчик: 15 минут мало, уйдет около 30 минут, так как плагин еще нужно подстраивать под свои нужды (он использует другую JS библиотеку)
Менеджер: ok, 30 минут на оповещение.


Если испытываются сложности с планированием какого-то этапа, его можно разбить на несколько более мелких, описать и оценить сначала их.

5. Менеджер приоретизирует функционал.



После того как менеджер с разработчиком сошлись по всем срокам он приоретизирует функционал в зависимости от срока его выполнения. Смотрит сколько отведено времени на выполнение каждого пункта вообще и насколько оправдано тратить такие ресурсы (время + оплата) на данном этапе проекта. Если в этом смысла нет, то такой функционал удаляется из текущей задачи и переносится в backlog, до лучших времен.

Например на выполнение задачи «оповещения» в проекте отводилось 90 минут. На данном этапе это расточительно, поэтому сделаем простой вывод значка почтового ящика в профайле, что займет не 90, а 5 минут.

6. Реализация.



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

Неожиданная задержка



Если разработчик видит, что он, все таки, выбивается из графика, что случается и в этом нет ничего страшного, значит что-то он что-то не предусмотрел в первоначальном плане (недоработал изыскательную часть) и немедленно сообщает об этом менеджеру. Менеджер с разработчиком снова начинают обсуждать способ выполнения этого этапа (пункт 2) и выясняют что нужно изменить чтобы он был выполнен в срок.

Если сроки меняются, то менеджер повторно оценивает приоретизацию (пункт 5) и возможно исключает этот этап из задачи, разбивает его н аболее мелкие или принимает новые сроки.

7. Все готово, оплата.



Просрочка



Если разработчик не уложился в установленные им же самим сроки, он получает сумму в обговоренном размере стоимости часа за фактически потраченное время. Если так происходит часто, то есть разработчик не может научиться оценивать время (выполнять пункт 2), вы уделяете этому моменту особенное внимание и обучаете его, если и в этом случае нет результата, про придется с таким сотрудником растаться.

Выполнили раньше срока



Если разработчик укладывается в срок и даже успевает выполнить задачу быстрее — он уже сам решает, сдать ее раньше и приступить к другой или наполнить ее фичами от которых отказались (см backlog) или пойти погулять. В любом случае его работа оплачивается в размере планового срока (стоимость часа * премиальный коэффициент * плановый срок), то есть фактически он заработал себе и премию, и часы-отгулы.

Резьюм



Таким образом с помощью описанной методики:

  • Устанавливается действительно рабочий регламент, разработчик заинтересован сделать быстрее, а заказчик получает возможность экономить ресурсы правильнее описывая свою задачу.
  • Мы имеем задачу, с четко выраженным планом: этапами, способами и сроками их выполнения. Не навязанные, а рожденные совместно с разработчиком (по большей части им самим).
  • Разработчик не углубляется в мифический «нужный когда-нибудь функционал», а делает только то, что нужно, таким образом экономит и свое и чужое время.
  • Укладываемся в срок приоретизируя функционал.


Tags:
Hubs:
+3
Comments22

Articles