Как избежать, чтобы 80/20 управляли в разработке программного обеспечения

Вот очень прагматичная идиома:

(cd $dir) || return # is this a directory,
                    # and do we have access?

Я обычно обертываю ее в функцию:

can_use_as_dir() { 
    (cd ${1:?pathname expected}) || return
}

Или:

assert_dir_access() { 
    (cd ${1:?pathname expected}) || exit
}

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

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

Далее приведен аргумент, который мы переходим к cd: ${1:?pathname expected}. Это более сложная форма замещения параметров, которая более подробно объясняется ниже.

Tl; dr: Если строка, переданная в эту функцию, пуста, мы снова выходим из подоболочки ( ... ) и возвращаемся из функция с данным сообщением об ошибке.


Цитирование с man_страницы ksh93:

${parameter:?word}

Если parameter установлено и не имеет значения null, замените его значение; в противном случае напечатайте word и выйдите из оболочки (если не интерактивно). Если word опущено, выводится стандартное сообщение.

и

Если двоеточие : опущено из приведенных выше выражений, shell проверяет, установлен ли параметр или нет.

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

В этом конкретном случае я знаю, что стандартного сообщения об ошибке 1: parameter not set недостаточно, поэтому я увеличиваю тип ожидаемого здесь значения - pathname каталога.

Философская заметка: оболочка не является объектно-ориентированным языком, поэтому сообщение говорит pathname, а не directory. На этом уровне я бы предпочел сохранить его простым - аргументы функции являются просто строками.

19
задан 5 revs 22 May 2009 в 22:49
поделиться

19 ответов

Это всегда занимает больше времени, чем Вы ожидаете, даже когда Вы берете Закон Hofstadter во внимание

, Но я отступаю.

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

8
ответ дан 30 November 2019 в 02:22
поделиться

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

, Если Ваши оценки являются правильными, то Вы объясняете это противные 20%. Вы, очевидно, не сделали, и именно поэтому это - проблема.

, Возможно, Вы пытаетесь дать им все, что они хотят, который нереалистичен. Возможно, Вы не полностью объясняли Закон Murphy's или не дали достаточно времени для тестирования, нахождения ошибок, затем тестирование снова, и т.д.

Похоже на Вас, должен делать немного больше управления рисками...

0
ответ дан 30 November 2019 в 02:22
поделиться

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

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

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

0
ответ дан 30 November 2019 в 02:22
поделиться

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

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

0
ответ дан 30 November 2019 в 02:22
поделиться

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

Запись алгоритмы сначала... тогда UI.

0
ответ дан 30 November 2019 в 02:22
поделиться

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

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

0
ответ дан 30 November 2019 в 02:22
поделиться

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

0
ответ дан 30 November 2019 в 02:22
поделиться

Я думаю, что при создании оценок для задачи, которые связывают вместе 80% и 20%, Вы прочь к слабому запуску. Разбейте свои оценки. Сделайте 80% и 20% двумя явными задачами; легкий бит и твердый бит, если Вы должны.

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

0
ответ дан 30 November 2019 в 02:22
поделиться

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

0
ответ дан 30 November 2019 в 02:22
поделиться

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

  1. Знакомство с кодовой базой. Когда Вы можете слушать спецификацию и можете думать, что "Я должен коснуться класса A, B, и C - ничто больше, ничто меньше", тогда можно стать довольно точными. Я нахожу, что это работает лучше, чем знание, которое должны быть записаны определенные функции, потому что Вы тогда знаете то, что Вы не делаете потребность записать.
  2. Запоминание включать тестирование, устранение ошибки, развертывание и запросы на последней минуте. Его легкое, чтобы забыть, что необходимо переместить набор записей.
  3. До некоторой степени, будучи знакомым с языком. Если Вы знаете, в каких библиотеках Вы будете нуждаться, то становится легче знать то, что Вы не делаете , должны сделать.

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

2
ответ дан 30 November 2019 в 02:22
поделиться

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

Одна из лучших рекомендаций я услышал для обработки этого типа явления, должен всегда встраивать буферную подзадачу (подзадачи) в график проектных работ - рекомендуемый Richard Whitehead . Каждая главная задача получает 20%-е увеличение времени (или где-нибудь поблизости) отмеченный как подзадача за ту задачу. Цель каждого состоит в том, чтобы обеспечить некоторое измерение для того, что происходит, когда "вещи идут не так, как надо" на той задаче. Автор признает (и я также нашел, чтобы быть верным), что часто управление будет пытаться удалить те буферные задачи - Ваше единственное обращение за помощью должно или стоять на своем или вытянуть маневр как защитники Joel (как @Casey уже упомянутый). На практике я нашел, что большое количество буферных подзадач обычно слоняется поблизости и выручило несколько раз в плотных графиках.

1
ответ дан 30 November 2019 в 02:22
поделиться

Было сказано, что первые 90% времени проекта используются для 90% работы, и остающиеся 90% времени проекта используются для остающихся 10% или работа.;)

естественно сделать большие успехи в начале проекта, поскольку Вы просто делаете самые легкие части сначала. Кроме того, если будут какие-либо проблемы в первых 80% кода, то они часто не будут очевидны, пока все это не объединится, и можно на самом деле протестировать весь код.

, Возможно, как experient необходимо позволить людям попробовать приложение, которое составляет 90%, сделанных так, чтобы они видели то, что различие делают последние 10%...

2
ответ дан 30 November 2019 в 02:22
поделиться

Превосходная книга Read Steve McConnell Быстрая разработка , который имеет много для высказывания относительно проблемы 80/20 и othder капризов оценки программного обеспечения.

4
ответ дан 30 November 2019 в 02:22
поделиться

Я не думаю, что могу сказать это лучше, чем , Joel делает с Расписания .

Painless Software

, Если Ваш менеджер заставляет Вас уменьшить оценку, вот то, что сделать. Создайте новый столбец в расписании, названном Оценкой Rick's (берущий Ваше имя, Rick, конечно.) Помещенный Ваша оценка там. Позвольте своему менеджеру сделать то, что она хочет со столбцом Curr Est. Проигнорируйте оценки своего менеджера. Когда проект сделан, посмотрите, кто был ближе к действительности. Я нашел, что, просто угрожая сделать это творит чудеса, особенно когда Ваш менеджер понимает, что они только что вошли в конкурс, чтобы видеть, как медленно можно работать!

3
ответ дан 30 November 2019 в 02:22
поделиться

Когда дело доходит до времени, оценивая это мой опыт:

  1. , Если Вы не можете положительно сказать, что задача займет меньше чем 4 часа, Вы не можете оценить его точно. Сломайте его в мелких кусочках и повторении рекурсивно.

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

  3. самая большая проблема состоит в том, что мы не можем возможно предвидеть все подробности (возможно, скажем, 20%, возможно? Отъезд Вас остальные 80%, непредполагаемых...) - видят ТОЛПУ, как уже указали другие.

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

Однако, поскольку управление интересуется получением прибыли, они также интересуются вырезанием углов. Таким образом, необходимо определить углы, возможные сократить и пойти на сложные компромиссы на основе реальных включенных сценариев. Поддержанный управлением можно выполнить много этих последних 20%, ничего не делая (печальный способом, что я предполагаю, но все еще верный).

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

5
ответ дан 30 November 2019 в 02:22
поделиться

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

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

Некоторые методы, которые помогают в оценке прогресса, могут быть найдены в Толпе. Объем того, какая работа будет сделана во время следующего спринта (один месяц или меньше) фиксируется в начале спринта, и грубые оценки даны каждой работе. Тогда после спринта команда может размышлять, сколько прогресса было сделано, сколько все еще отсутствует, насколько точный оценки были, и что замедляет команду. В Толпе и других гибких методах важный момент получает быструю обратную связь того, что сделано и как далеко мы находимся в проекте. Я рекомендую читать больше о них. видео о Толпе , что Г “lafur Waage, связанный в его сообщение , дает хорошее и краткое введение.

5
ответ дан 30 November 2019 в 02:22
поделиться

Возможно, необходимо сломать задачи/функциональность, Вы продолжаете работать в меньшие единицы, и для планирования работы и для checkins/reports. Например, у меня почти никогда нет отдельного объекта в моем расписании, которое длится дольше, чем два дня.

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

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

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

8
ответ дан 30 November 2019 в 02:22
поделиться

Не показывайте им первые 80%, как только это закончено. Понемногу финансируйте их.

18
ответ дан 30 November 2019 в 02:22
поделиться

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

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

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

0
ответ дан 30 November 2019 в 02:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: