Как бороться с хроническими проблемами со временем?

StackOverflow https://stackoverflow.com/questions/612892

Вопрос

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

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

Мои вопросы таковы:

  1. Какие виды наказаний за несоблюдение крайнего срока являются эффективными?
  2. Какими способами я могу заставить этого сотрудника самостоятельно контролировать свои действия (подсчет времени и т.д.)?

Обновить:Основываясь на ответах;вот что я выяснил.

  1. Наказание - плохая идея.
  2. Естественно, что сотрудник не в состоянии устранить проблемы с оценкой без вмешательства.
  3. Не устанавливайте крайние сроки, если только не возникнут последствия для компании (потерянный контракт) из-за того, что они не будут выполнены к тому времени.
  4. Используйте доступные методы (Agile, контрольный список Джоэла), чтобы помочь разработчику лучше оценить ситуацию.

Спасибо за ссылки и информацию.Также спасибо, что обновили мое мышление.

Это было полезно?

Решение

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

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

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

Другие советы

Есть интересная статья Джоэла Спольски: Планирование, основанное на фактических данных

1) Сломать ее

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

Это заставляет вас на самом деле решить, что вы собираетесь делать.Напишите подпрограмму foo.Создайте это диалоговое окно.Проанализируйте файл Fizzbott.Индивидуальные задачи разработки легко оценить, потому что вы уже писали подпрограммы, создавали диалоговые окна и анализировали файлы.

Если вы неаккуратны и решаете большие трехнедельные задачи (например, “Внедрить Ajax photo editor”), значит, вы не думали о том, что собираетесь делать.В деталях.Шаг за шагом.И когда вы не думали о том, что собираетесь делать, вы не можете знать, сколько времени это займет.

Установка 16-часового максимума вынуждает вас разрабатывать эту чертову функцию.Если у вас есть трехнедельная функция с ручным управлением под названием “Ajax photo editor” без подробного дизайна, мне жаль, что я сообщаю вам об этом, но вы официально обречены.Вы никогда не задумывались о том, какие шаги для этого потребуются, и наверняка забудете многие из них.

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

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

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

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

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

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

Какие виды наказаний для прохождения срок эффективны?

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

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

Помогая ему найти правильный способ составления оценок.

Во-первых, убедитесь, что вы предельно ясны в своих требованиях.

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

Кроме того, убедитесь, что ваши требования реалистичны, как и его оценки.

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

Помните, что вы выполняете требования, но разработчик ВСЕГДА выполняет оценки, и на него не следует влиять вопросом "можем ли мы сделать это быстрее", если вы также не указываете функциональность, которая будет удалена.

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

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

Вы ДОЛЖНЫ точно знать, сколько времени было потрачено на то, чтобы что-то сделать, прежде чем сможете выяснить, где была ползучка, или что с этим можно сделать.

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

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

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

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

Наказание и принуждение являются адекватными ответами на умышленные правонарушения в определенных ситуациях.

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

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

Ладно, это довольно распространенное явление - разработчики настроены оптимистично.Справиться с этим - задача руководства.Если кто-то и должен быть наказан, так это менеджер (вы?).

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

Когда я был молод, мой первый хороший менеджер решил это таким образом:

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

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

Затем, прежде чем составить свое расписание, он удвоил все мои оценки (не сказав мне об этом).

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

По мере того как я совершенствовался в оценке, мы оба замечали это и соответствующим образом корректировали.

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

Срыв проекта или графика ПРАКТИЧЕСКИ НИКОГДА НЕ является виной разработчика (за исключением нескольких хронических случаев, когда он на самом деле не поддается исправлению или имеет какую-либо ценность и его нужно уволить).Менеджер принимал неправильные решения либо при найме разработчика, доверяя ему, управляя им, либо при укомплектовании проекта персоналом.

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

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

На ваши вопросы:

  1. Если вы решите наказывать людей за несоблюдение сроков, вы не получите хороших результатов.Они будут демотивированы и чувствовать себя униженными.Если вы будете продолжать подталкивать людей к соблюдению сроков, качество работы пострадает, и в конечном итоге у вас будет много времени, потраченного на исправление ошибок.
  2. Чтобы улучшить его оценку времени, вы могли бы попробовать использовать метод Джоэла Спольски планирование, основанное на фактических данных который имеет хороший цикл обратной связи для улучшения результирующих оценок.

Но у меня есть несколько вопросов, над которыми, я думаю, вам нужно подумать.

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

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

Какие виды наказаний для прохождения срок эффективны?

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

Исправьте свою формулировку.

Мотивация

Прежде всего:Читать Программное обеспечение для людей

Далее.Почему вы думаете, что наказание будет эффективным способом управления людьми, который должен быть творческим?Я думаю , вам нужно переосмыслить весь подход к управлению .Команда.

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

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

Оценки

Как уже отмечалось, оценки есть оценки.В нашей команде мы вообще не делаем никаких индивидуальных оценок, мы делаем оценки всей командой.(Я немного неохотно называю то, что мы делаем Scrum, но большая часть этого пытается имитировать, если не меньше) Я думаю, что это действительно отличный способ делать оценки:Каждому члену команды выдается колода карт, состоящая из чисел 0,1 / 2,1,3,5,8,13,20,40,60,100, и при оценке задания каждый разработчик выбирает карту (карты прячутся до тех пор, пока все не выберут по карте, чтобы избежать влияния на оценки), а в качестве оценки принимается среднее значение выбранных карт.

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

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

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

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

Установить Основные этапы и попробуй Проворный как предложил @OTisler.

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

Как руководителю группы, члены моей команды говорили мне, что "без проблем" завершить X feature к крайнему сроку.Затем я обычно сажусь с ними и обсуждаю, какие задачи и подзадачи, по моему мнению, необходимо выполнить, чтобы функция была завершена, и сколько времени, по мнению разработчика, займет каждая из них.

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

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

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

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

В следующий понедельник вы посмотрите, как все прошло."Ну, я установил floogle за два дня, но оказалось, что это повлияло на mcphee...so на этой неделе мне нужно разъединить этих парней, чтобы файлы whoosiwhatsit не перезаписывались ". Итак, вот их задание на неделю.

Вы можете подумать, что это не поможет, потому что вы все еще не знаете, когда что-то будет готово.Это правда.Здесь у вас есть два варианта:

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

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

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

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

задайте себе этот вопрос:Что влечет за собой ваша работа?

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top