суббота, августа 04, 2007

Реальное рабочее время

Меня продолжает сильно интересовать проблема оценки сроков проекта. В этой связи я наконец добрался до книги Steve McConnel Software Estimation: Demystifying the Black Art, которая в русском переводе имеет совершенно удивительное название "Сколько стоит программный проект". (на самом деле объяснить название конечно можно, поскольку в содержании книги сроки, затраты или рабочее время считаются более или менее взаимозаменяемыми понятиями).

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

В книге описаны различные способы оценки сроков (или затрат) на выполнение проектов, но меня заинтересовало вот что.

В какой-то момент любые, даже самые сложные и "научные" способы оценок сводятся к вопросу: "А тебе сколько времени будет нужно для того, чтобы сделать вот это?". И в этот момент называется число (или диапазон, или лучший худший и наиболее вероятный вариант - неважно).".

Насколько это число соответствует действительности - неважно, лучшего у нас все равно нет. Однако важным является то, учитывает ли это число время, проведённое на работе, но при этом потраченное на "нерабочие дела" - интернет, кофе, перекуры и так далее.

В связи с этим какое-то время назад я организовал на RSDN голосование поэтому поводу. Вот вопрос, который я задавал и результаты голосования:

Вот такие результаты. Думаю, что при планировании очень стоит помнить про то, что не все время, проведённое на работе, действительно уделяется работе.

Замечания

Там же, на RSDN, к данному опросу было дано несколько замечаний, на которые я думаю важно ответить. Я здесь попробую кратко отразить замечание и дать на него комментарий.

  1. "Подобные подсчеты бессмысленны". Бизнес сторона программирования требует выдачи сроков. Более того, часто невозможно даже давать сроки по Steve McConnel - при помощи диапазонов. И человеку, который должен составить оценку волей или неволей приходится выдавать прогноз. И лучше если у него есть понимание того, что выданная оценка скажем в 5 часов рабочего времени - это в реальности два рабочих дня.
  2. "Настоящий программист может думать о работе и дома и во время отдыха, поэтому непонятно что считаем". Действительно, это так. И действительно это не особенно то и подсчитаешь. Программа подсчёта рабочего времени может подсчитать сколько времени у меня на экране была открыта Visual Studio, но вряд ли догадается, что я в это время думал про то, как здорово понырял в красном море. Тут мой ответ таков - лучше хоть какие-то, пусть даже заниженные оценки, чем никаких.
На самом деле, мне кажется вышеуказанные замечания вызваны некоторой боязнью, что данные о том сколько человек "реально" работает могут быть использованы для оценки работы человека и последующих выводов с точки зрения зарплат, премий, повышений и тому подобного. Ничего такого я не имел ввиду и считаю, что подобное использование таких данных только повредит проекту. Эти данные нужны управленцу исключительно для того, чтобы точнее планировать работу и выдавать более точные сроки, но ни в коем случае для того, чтобы выделять "лучших" и "худших".

17458907.195e50a0db7e7428ccd693c67f635406.1186223110.9626a2d31cf793845f340f27c23ea8b8

3 комментария:

Kirill Belokurov комментирует...

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

Предполагается, что управленец знает об этом и использует эти данные только для оценки сроков. А это не всегда именно так.

Lev Kurts комментирует...

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

"А ведь Мери Энн-то как придёт из школы, так сразу садится за уроки, и учит, учит, до самой ночи учит..."

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

Анонимный комментирует...

Вы знаете, я тоже проводил похожие опросы, только в среде фрилансеров.

Фрилансерам значительно легче оценивать своё реальное рабочее время. С одной стороны они "сами себе менеджеры", а с другой обычно они вынуждены выставлять заказчику именно эту цифру.

Так вот. Наблюдается практически единодушное мнение, что реальной работой они занимаются примерно 4 месяца в году.

Иногда это время "распылено", и каждый день по 2-3 часа делается работа. Иногда работа идёт "запоем" месяц-полтора часов по 6-18 в день, после чего пару месяцев работать просто не получается.

Я не думаю, что это специфика именно фрилансеров. Я думаю, что это больше похоже на специфику профессии. Не может хороший программист интенсивно и эффективно работать по 6-8 часов в день 11 месяцев подряд. И не важно, он сидит при этом в офисе и работает на дядю, или дома и работает на себя.

P.S. Кстати, эта цифра (4 месяца в году) неплохо коррелирует с известным правилом: умножать estimate программиста на число Пи. :)