What should the penalty/response for missing a deadline be?

Being relatively new to the software industry I have come across a question of deadline enforcement:

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

Что теперь? С одной стороны, мы могли бы уволить всех, кто участвовал в этом, с другой - мы могли бы щедро вознаграждать всех, кто участвовал в этом.

  1. Какие действия вы рассматривали как "штраф" за пропущенный срок, и какие из них в конечном итоге привели к большему количеству хорошего кода?

  2. Какие ответы руководства проекта привели к провалу проекта,

  3. Какие ответы восстановили рабочий порядок и привели к коду, который можно было поддерживать после?

  4. Какие ответы привели к более-плохому коду?

37 ответов

Решение

Сроки являются частью принципиально неверного представления о том, как заниматься разработкой программного обеспечения. Люди, новички в отрасли разработки программного обеспечения или за ее пределами, не понимают этого:

Программное обеспечение сделано, когда это сделано, не раньше и не позже.

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

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

Редактировать на основе подробных комментариев ниже:

Я бы никогда не стал утверждать, что разработчики не могут рассчитывать на какое-то ожидание доставки. Моя точка зрения заключается в ответе на конкретную гипотезу, которую выдвинул вопрос о том, что природа разработки программного обеспечения в бизнесе как-то аналогична школьной работе или любому другому виду работы в этом отношении. Я утверждаю, что это абсолютно не так. "Крайний срок" подразумевает гораздо больше, чем простая дата доставки. Это фиксированная точка, к которой должен быть выполнен фиксированный объем работы. Программное обеспечение просто не работает таким образом. Я написал еще несколько параграфов, объясняющих почему, но, если честно, если вы еще не верите в это, то, что я скажу, не убедит вас.

Если вы работаете над программным проектом и очевидно, что вы не сможете уложиться в срок, что вы можете сделать, чтобы исправить это? Ответ уже известен: практически ничего. Вы не можете добавить больше людей. Вы не можете "работать быстрее". Это просто не будет сделано вовремя. Вы говорите заинтересованным сторонам, все приспосабливаются и продолжают работать (или нет). Что же тогда означала первоначальная дата?

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

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

Например, если все участники не сделали свою работу, уволить их.

Но если они выполнили свою работу, и даже больше, то почему ее все еще не хватало? Слишком много других действий, совершенных теми же людьми? Слишком большая область для крайнего срока (т.е. нереальный крайний срок). Или... и т. Д.

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

Разработчики никогда не должны быть наказаны за ошибки руководства.

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

Обоснование:

Сроки - это факт жизни. Люди хотят знать, сколько времени это займет. Лучшее, что мы можем сделать, это оценить / угадать. Роль руководства заключается в том, чтобы попытаться понять это волшебное, никогда не правильное предположение. Когда они устанавливают крайний срок, им нужно использовать правильные инструменты (опыт, СПРАВКА ПОМОЩЬ ОТ РАЗРАБОТЧИКОВ, юристов, HR и т. Д.)

Тем не мение....

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

В строительной бригаде, если вы мочитесь на рабочих, вы начинаете бой. В моей компании, если мы пропустим сроки, у руководства возникнут проблемы. Не рабочие. Задача менеджера - контролировать проект и то, что сделано. Рабочие делают только то, что могут. Менеджер отвечает за распределение ролей и задач.

Я не говорю, что качество работников не является фактором, но руководство должно ЗНАТЬ это! Не нужно быть гением, чтобы понять, что проект плохо продуман или не контролируется. Спросите любого, знает ли его менеджер, что происходит, и вы найдете проблему.

Мы перестали пропускать столько сроков, когда менеджеры поняли, что это их вина в том, что они установили / согласились на сроки.

</rant>

Re: вопросы:

1. Какие действия вы считаете примененными в качестве "штрафа" за пропущенный срок, и какие из них на самом деле сделали вещи "лучше"?

  • Менеджер несет меньшую ответственность. Этот человек не получает повышение по службе или публично благодарит. Скорее всего, этот человек будет перемещен в "менее критичный" проект.

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

  • feature creep: менеджер продолжает добавлять больше материала в список. <- отбить это с помощью списка задач, упорядоченных по приоритету. Когда вы добавляете вещи в список, сравните их приоритет с вещами вокруг него. Сделать новые вещи сложнее, чтобы быть установлен в качестве "высшего приоритета".
  • слишком много ошибок в коде: менеджер должен требовать тестов (по крайней мере, критических) и автоматизации. Сборки должны быть стандартными и автоматическими. Реальные пользователи должны увидеть код, прежде чем он "закончен".
  • нечитаемый код: институт рецензирования кода. Если у кого-то есть грязный код, попросите кого-нибудь "помочь" ему с проектом.
  • Если у вас возникла проблема с продавцом, когда продавец обещает несуществующие / не работающие функции: руководство должно вмешаться и объяснить проблему этому продавцу. Кроме того, иногда этому не помогает публичное утверждение продавца о хорошо выполненной работе.

Вместо штрафа, как насчет реалистичных оценок и вознаграждения за своевременные выпуски?


Вдохновленный комментариями к моему ответу

Может быть, вопрос должен быть "Как мне сделать реалистичные оценки?" Для меня я использую историю оценки FogBugz и графики завершения. Они дают мне данные о том, как долго я оценивал задачу, и сколько времени она фактически заняла. Это помогло мне дать реалистичные даты выхода в долгосрочной перспективе (это не произошло за одну ночь). Я считаю расчетные сроки интерактивным процессом:

  1. дизайн
  2. оценить
  3. развивать
  4. найти недостаток в дизайне и итерации.

Смерть. Чисто и просто.

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

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

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

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

О чувак...

Прежде всего, существуют внешние сроки и внутренние сроки, и они должны быть разными.

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

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

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

В своей замечательной книге об управлении проектами - "Крайний срок" - Том Демарко рассказывает нам историю о том, что менеджер проекта из западного мира управляет проектом в некой вымышленной посткоммунистической восточноевропейской дикой стране ("дикий" - действительно хороший термин, потому что граждане немного.. нецивилизованные).
Однажды PM обнаруживает, что что-то пошло не так, какая-то часть его проекта резко пропустила нереалистичный график. Предыдущий премьер-министр установил наказание за несоблюдение сроков, просто повесив ответственного человека на крючок мясника, но поскольку графики были нереальными, один человек уже пропустил срок.
Итак, история рассказывает нам о дне, когда премьер-министру западного стиля представили ответственного человека, и он должен отправить его повесить на крючок мясника. PM, как и большинство людей, испуган видением приговора кого-то к жестокой смерти просто потому, что некоторые так и не смогли вовремя завершить его проект. И - во что бы то ни стало - повешение этого бедного человека не продвигает проект. Поскольку это фантастический роман об управлении проектами, а не о пытках, наш герой отменяет наказание.
Но за этой историей стоит повод повеселиться: если вы установите крайний срок и установите какое-то наказание за несоблюдение этого срока, придет день, вам, вероятно, придется наказать кого-то. И ты сделаешь это? Неважно, каким будет наказание: повешение, потеря бонуса, увольнение, разрыв сделки или какой-либо гонорар - возможно, вам придется кого-то наказать. Это наказание принесет пользу вашему проекту? Вы должны ответить на это самостоятельно.
Итак: не устанавливайте штраф за несоблюдение установленного срока, вы не захотите казнить…

Как уже упоминали другие, прежде чем говорить о наказаниях, начните с "как определить, являются ли эти сроки реалистичными"?

Or as my boss once said, "We'll be happy to work a plan when you give us a plan that works".

I still think that should be on a t-shirt.

До сих пор в моей карьере я не видел никаких реальных штрафов за то, что пропустил крайний срок (и я пропустил много). Я полагаю, что компании, разрабатывающие программное обеспечение или игры, продают их по-разному в магазинах, где компания дала обещания общественности.

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

Как только вы достигли точки, когда люди уложились в срок, вы должны спросить себя (А), каковы естественные последствия этого и (Б), как вы можете лучше всего выполнить задачу и поддерживать какое-то движение к бизнесу цели (даже если вы не ведете бизнес).

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

В одном случае я был в команде, которая превысила срок на небольшой срок поставки более чем на три месяца - и первоначальный срок поставки был через три месяца с начала! Мы неправильно поняли требования, недостаточно поговорили с заказчиком и недооценили время, затрачиваемое на это. Руководство вообще не было заинтересовано в назначении вины. Это было частично потому, что это было бы контрпродуктивно для завершения поставки, частично потому, что никто из нас не был "проблемным сотрудником", и частично потому, что руководство знало, что мы все были мотивированы, чтобы решить проблему и удовлетворить клиента. Таким образом, мы сделали это, клиент был настолько счастлив, насколько можно было ожидать, и мы продолжили свою жизнь с некоторыми ценными уроками о том, как избежать ситуации в будущем.

Без штрафа. "Сроки" и оценка были и остаются одной из самых сложных и сложных задач в разработке программного обеспечения.

Смешно налагать штрафы на разработчиков за эту проблему.

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

Меня чуть не уволили с должности менеджера за то, что я сказал команде, которая сообщила мне НЕ приходить по выходным и работать допоздна. Я знаю, что это наносит ущерб проекту и моральному духу.

Обычно "наказание" заключается в том, чтобы заставить людей чувствовать вину или тревогу, но я уверен, что есть места, которые делают больше "официальных" вещей.

Мир полон идиотов. Управление не является исключением.

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

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

2.) Я обнаружил, что лучший способ справиться с этим - сделать как можно меньше релизов. Это делает оценки более точными. Если ваш начальник или "маркет" считает, что ваша оценка неприемлема, рассмотрите возможность назначения большего числа разработчиков для выполнения этой задачи, если это возможно. Иногда задача не может быть легко разделена, или есть только один человек, знакомый с кодом. Если это не высокий приоритет, просто скажите властям, что это займет больше времени. Установление разумных целей и управление ожиданиями является ключевым.

3.) Что касается мотивации, вознаграждения и наказания... Есть много врачей, которые написали целые книги по этим предметам. По моему опыту, дать программистам что-то сложное и дать им некоторую свободу делать это по-своему - хорошее начало. Слушание - это то, что менеджеры должны делать хорошо, чтобы добиться успеха. Если разработчик опытный, вы должны просто объяснить проблему и позволить разработчику найти решение. Если их решение не так хорошо, как вы имели в виду, вы можете предложить его и пойти дальше. Просто диктовать, как сделать что-то, даже для новых программистов, редко бывает эффективно. Заставление разработчиков думать о вещах поможет им самостоятельно решать проблемы. Это связано с делегированием, так как это работает, только если разработчики могут выполнять работу самостоятельно.

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

5.) Спросите (не требуйте), может ли разработчик остаться допоздна / работать в выходные дни. Делайте это только тогда, когда это что-то очень важное (например, недостаток безопасности, который дает пользователю доступ к данным, к которым он не должен иметь доступ; принят новый закон / нормативный акт, который вы должны соблюдать, и т. Д.). Если они говорят "нет", не держите это против них. Это, вероятно, не их вина, что вещи не были сделаны; и даже если это так, разумно, что они строили планы на время, когда они не должны быть на работе. Если они хотят войти, убедитесь, что они знают вашу искреннюю признательность. Хорошая компенсация за помощь, когда они не обязаны, покупка ланча не стоит много, и это очень хороший жест. Не думайте, что люди будут работать допоздна / в выходные дни, если это не является частью их контакта / соглашения (или если им это нравится).

6.) Поймите, почему все идет не по графику. Вы обещали что-то, что было невозможно (учитывая наличие людей, ожидаемое качество и выделенное время)? Пришел ли какой-нибудь другой проект и занял ли он ресурсы, а сроки не были скорректированы? Был ли код сложнее сделать, чем ожидалось? Давать оценки времени сложно. Вам нужно все спланировать, иметь опыт и знать, сколько времени займет выполнение каждого разработчика. Компенсировать непредвиденные проблемы, которые могут возникнуть, и дать программисту более короткий срок, чем ваш начальник или клиент. Это всегда хорошо, чтобы быть сделано рано. И если вы почти всегда успеваете рано или вовремя, тот случай, когда вы пропустили свой срок, будет более понятным, если у вас есть какое-то объяснение.

7.) Помните, это обычно сводится к времени, качеству и деньгам. Как правило, вы можете выбрать любые два, но третий нужно будет сбалансировать уравнение. Так что, если это нужно сделать быстро и с ограниченным бюджетом, вы можете ожидать, что качество пострадает. Если вам нужно сделать это быстро и качественно, ожидайте, что заплатите много денег и так далее.

8.) Я бы сказал, что первое, что работает для меня, это слушание. Если вы слишком заняты заказами на лай, вы можете даже не знать о проблемах с компанией. Теперь, просто потому, что разработчик говорит "код отстой, дизайн ужасен, и нам нужно переписать все, если мы хотим что-то сделать своевременно", не означает, что это произойдет. Но если вы услышите подобные комментарии и объясните, что мы не можем позволить себе это сделать или нас убьют на рынке, это будет слишком дорого. И спросите, что можно сделать, чтобы все не стало намного хуже. Спросите, есть ли способ, которым мы можем очистить его с течением времени. Можем ли мы просто (пере) написать один класс и построить на его основе новые вещи? Можем ли мы постепенно перейти на новый дизайн по одной функции / сегменту / модулю за раз? Вы понимаете, откуда они берутся, и наоборот, вы, вероятно, можете решить хотя бы некоторые проблемы. Просто помните, что компромисс работает в обоих направлениях.

9.) Отрицательное повторное применение, кажется, приводит к увеличению оборота, что является дорогостоящим. Наличие группы людей, которые не знакомы с вашим кодом, также не помогает в крайних сроках. Деньги - один из мотиваторов, но я ушел с более высокооплачиваемой работы, чтобы пойти туда, где раньше был счастливее, и я знаю, что я не одинок там. Бесплатная еда, когда команда делает хорошую работу, не так уж и дорога. Я не слишком заинтересован в групповых мероприятиях, поскольку они либо сокращают рабочее время, либо отнимают рабочее время. Иногда это срабатывает, но сокращение личного времени сотрудников, чтобы они могли тусоваться с коллегами, а не с друзьями, не является большой наградой. Перестать работать - это тоже дорого... так что все зависит от размера компании, культуры и т. Д.

Надеюсь, это поможет ответить на ваш вопрос. Другие ответы в этой теме также являются хорошими предложениями... дизайн играет большую роль в том, как быстро будет написан код.

Я думаю, что этот вопрос сам по себе демонстрирует недопонимание роли менеджмента и управления проектами.

К сожалению, у многих распространено мнение о том, что в их названии слово "менеджер" означает, что управление означает излечение ленивых работников. Это подходит и тем, кто верит в закон Паркинсона.

Это не. Речь идет о том, чтобы позволить работам выполнять свою работу - будь то канал связи между ними и какой-то другой частью организации, получение ресурсов или создание помех (убирание мебели с дороги).

Очевидно, что премьер-министр должен уже знать, что проект / задача будет пропускать свой крайний срок. Они должны задавать вопросы и знать, что происходит. Они могут либо сокращать задачи, либо увеличивать / перебалансировать ресурсы, чтобы выполнить работу (или сказать спонсору: если вы не предоставите ресурсы, это не будет сделано вовремя). И как таковой, наказание идет в личку, будь то ничто, порка языка, понижение в должности или увольнение.

Иногда задержка неизбежна. Вот почему мы строим на случай непредвиденных обстоятельств. Иногда это известный риск; и пока у вас есть план резервного копирования - у вас все в порядке.

Что касается ответов, у вас есть четыре параметра: объем, время, деньги и качество

  • Сфера - вы можете сократить, чтобы сделать срок.
  • Время - фиксировано. Возможно, вам удастся заставить сотрудников работать неделю или две в 60 часов, но после этого ваша производительность начнет страдать. И это также стоит больше денег, если вы платите им честно.
  • Деньги - Вы можете купить вещи у кого-то другого, чтобы ускорить процесс. Вы могли бы даже нанять больше людей, если работа достаточно разобщена, и вам не нужно много общаться с существующим персоналом - см. Закон Брука
  • Качество - идеалистические дураки утверждают, что вы никогда не сможете сэкономить на качестве. Но вы можете. Вам не нужно добавлять ошибки (одна из форм анти-качества); но вы можете добавить меньше качества. Вы кодируете свою функцию, чтобы она могла обрабатывать строки неограниченной длины, или 100 символов достаточно для этой версии? Облегчаете ли вы при следующем обновлении установку нового модуля или же вы закрываете его и беспокоитесь о добавлении подключаемого модуля при следующей версии.

Недостаточно агрессивные действия (когда это необходимо) приведут к неудаче.

Когда проект опаздывает, у него не так много "управления" (хорошего, плохого, хорошего или злонамеренного), что не приведет к тому, что проект станет еще позже

... единственным исключением, возможно, является устранение / устранение внешних отвлекающих факторов.

Взятые с точки зрения корпоративного развития...

Если срок наступил от кого-то, кроме человека, выполняющего работу, просмотрите ситуацию, чтобы определить причину перерасхода. В этих случаях это часто связано с неполными требованиями, ползучестью сферы охвата, плохим управлением и т. Д. Не следует назначать наказание за несоблюдение крайнего срока, который человек никогда не указывал в первую очередь.

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

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

Если вы пропустите свои сроки, исправьте свои оценки.

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

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

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

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

  • Сделайте самые маленькие возможные шаги. Не "разбивайте задачу на маленькие шаги", так как вы будете тратить много времени на планирование шагов, которые не будут работать так, как вы планировали. Хаос, помнишь?

  • Выберите самые маленькие шаги, которые обеспечивают наибольшую ценность.

  • после короткого периода переоцените свой план на основе того, что вы узнали

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

Вы можете признать это как мышление, стоящее за SCRUM.

Основная цель управления проектом - спланировать, как приложение будет построено в срок. Вы не должны начинать разработку проекта, если у вас нет расписания, показывающего, что вы собираетесь делать каждый день, когда проект будет длиться.

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

У вас обычно есть два варианта:

  • Догнать (нанимая дополнительных работников, работая больше или удаляя функции).
  • Скажите вашему клиенту, что что-то пошло не так (даже лучше: что пошло не так), и вам понадобится больше времени.

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

Это на самом деле не вопрос программирования, а вопрос управления.

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

Работа со сроками является обязанностью менеджеров. Существуют разные подходы, но ни один из них не предусматривает "наказания" разработчиков за выполнение их работы. Здесь важно понимать так называемый треугольник управления проектами. Это означает, что программный проект может быть хорошим (то есть удовлетворяющим требованиям, хорошим качеством), быстрым (соблюдение сроков) и дешевым (количество сотрудников, инструменты). Проблема в том, что только 2 из этих 3 свойств могут быть выбраны.

Поэтому, если руководство хочет что-то хорошее и быстрое, оно не будет дешевым.

Если менеджмент хочет что-то хорошее и дешевое - это не будет быстрым.

И, наконец, если руководство хочет дешево и быстро - угадайте, что это не будет хорошо.

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

Хороший и дешевый по определению предполагает, что сроки будут пропущены (Blizzard, создатели World Of Warcraft, являются хорошим примером такого подхода)

И, наконец, дешевый и быстрый, как правило, означает сокращение возможностей и устранение ошибок.

Вы спрашиваете, "каким должно быть наказание...". Казалось бы, вы спрашиваете с точки зрения "внутри компании".

В реальной жизни наказания часто бывают быстрыми и суровыми - потеря бизнеса, судебные процессы, плохая репутация в отрасли. Это НАСТОЯЩИЕ штрафы, наложенные клиентами, которым что-то обещали к определенной дате, которая не была выполнена.

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

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

Если другие вещи изменяют время доставки, то, как только вы узнаете, что произойдет проскальзывание, вы должны сообщить об этом клиенту. Если сделать это рано, клиенты будут очень рады работать с вами. Но если вы ничего не скажете, пока не станет слишком поздно, они с меньшей вероятностью простят... особенно если они обнаружат, что вы знали значительное время раньше и не сказали им.

Ура,

-Ричард

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

Но чтобы ответить на ваши конкретные вопросы:

1. Какие действия вы считаете примененными в качестве "штрафа" за пропущенный срок, и какие из них в конечном итоге привели к большему количеству хорошего кода?

"Штраф", который я видел за пропущенные сроки для менеджеров и разработчиков, варьируется от ничего до продвижения по службе и простой передачи. Самым серьезным наказанием, которое я лично видел, был менеджер, "переведенный" в менее важный проект и потерявший финансовую премию для бизнес-подразделения.

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

2. Какие ответы руководства проекта привели к провалу проекта?

Это отдельная дискуссия сама по себе... но в этом вопросе есть некоторая пристрастность- виноват менеджмент проекта.

Три главных вещи, которые я лично видел, чтобы PM саботировали проект (в порядке серьезности):

  1. Игнорировать данные / рекомендации / предупреждения от их технического персонала.
  2. Спросите оценки в начале процесса разработки. Это приводит к оценкам с погрешностью 10x (это займет один месяц, даст или займет десять месяцев).
  3. Отклонить / изменить / потребовать оценки программного обеспечения, чтобы они соответствовали произвольному бюджету и графику. Это не значит, что разработчики должны игнорировать бизнес-требования - скорее, бизнес-требования должны одинаково устанавливаться разработчиками и не разработчиками.

3. Какие ответы восстановили рабочий порядок и привели к коду, который можно было поддерживать после?

Мне еще предстоит увидеть функциональную организацию разработки программного обеспечения. Таким образом, исправление обычно состоит из большого количества крови, пота и слез от пары героических разработчиков, работающих с высокопрофессиональным премьер-министром, который знает, как защищаться от политики внутри компании (то есть отвлекать BS от своих сотрудников).

4. Какие ответы привели к более-плохому коду?

  1. Кричать. Материться. Оскорбления. (К сожалению, это все еще происходит на некоторых рабочих местах)
  2. Больше "управление проектами"- либо с помощью людей, встреч, отчетов о состоянии.
  3. Получение оценок программного обеспечения на более ранних этапах процесса, поэтому "мы можем планировать лучше". Оценки должны быть представлены позже, когда ваши сотрудники получат больше данных и лучше поймут проблему.
  4. Обнимайте разработчиков (это не ваша вина, менеджер облажался).
  5. Обнимайте руководителей проектов (это не ваша вина, разработчики облажались).
  6. Добавление дополнительного неквалифицированного персонала в проект.
  1. Я видел, как руководители уходили из компании вскоре после того, как были пропущены некоторые сроки. Это изменило все, но не обязательно сделало вещи лучше или хуже. Я видел некоторые договорные обязательства, такие как возвратные накладные расходы, как способ наказать кого-то за несоблюдение сроков, которые я не уверен, насколько хорошо они работают.

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

Меня уволили за то, что я пропустил крайний срок, на 98% я закончил с продуктом, внешними силами и сроками, из-за которых фирма не позволяет правильно разрабатывать программное обеспечение. Даже я могу признать, что в некоторых обстоятельствах написал некачественный код, но я также написал и хороший поддерживаемый код. Не было уделено внимания ползучести функций, однако никаких технических спецификаций не было подробно описано заранее, и потребовалась адаптация функциональных возможностей, поскольку ограниченные версии и версии с ошибками стали доступны для анализа руководством. Я мог бы лучше общаться, но когда я общался, было подчеркнуто, что сроки не подлежат обсуждению.

Есть две возможности:

  • Срок был пропущен, потому что кто-то не делал свою работу.
  • Срок был нереальным.

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

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

По совпадению, это происходит почти так же часто, как команды разработчиков пропускают даты выпуска.

Изменились ли спецификация или требования после оценки?

Другие вопросы по тегам