Вот цитата из учебного пособия по работе относительно SLIM и оценки программного обеспечения:
Заметьте также, что существует корреляция между усилием и дефектами. Это означает, что чем больше людей будет назначено проекту определенного размера, тем больше будет дефектов.
Усилие - это человеко-время (человеко-год, человеко-месяц) для проекта. Дефекты - это количество дефектов, обнаруженных в любой точке жизненного цикла. Размер определяется как варианты использования, функциональные точки или SLOC, составляющие проект.
Это кажется нелогичным, предполагая хороший процесс и способных инженеров. Например, наличие большего количества людей означает больше внимания ко всем артефактам (спецификациям требований, проектам, коду, тестам). Помимо того, что у меня больше глаз, моя интуиция предполагает, что между усилиями и недостатками в проекте, который использует подходящие методы качества, существует небольшая взаимосвязь.
Я не смог найти никаких документов, кроме тех, которые касаются модели Путнэма (которая используется SLIM), в которой предлагались бы какие-либо известные связи между дефектами и усилиями или дефектами и количеством людей в проекте. Является ли это известным отношением, и действительно ли утверждение, что «больше людей = больше дефектов», действительно?
источник
Ответы:
Моя интуиция звучит так:
Чем больше людей назначено проекту определенного размера, тем больше накладных расходов на связь
=> чем выше вероятность недопонимания и всевозможных проблем со связью
=> тем выше число возникающих дефектов.
И
Хорошие разработчики встречаются реже, поэтому их труднее найти и нанять, чем посредственных / плохих
=> чем больше людей назначено для проекта определенного размера, тем ниже их средний уровень компетентности
=> чем больше число возникающих дефектов.
Но это могут быть только мои рассуждения, у меня нет подтверждающих доказательств.
Как примечание: ваши предположения, подчеркнутые ниже, являются ИМХО (к сожалению) довольно сильными, принимая во внимание состояние нашей профессии:
источник
Это может быть просто корреляция. Менеджмент, как правило, назначает большее количество людей для оказания помощи в проектах, которые, по их мнению, будут более сложными, или проекты, которые отстают из-за множества непримиримых ошибок, или проекты, которые требуют большой взаимосвязи между различными компонентами. Если бы вы могли принимать управленческие решения из смеси, я подозреваю, что корреляция, по крайней мере, уменьшится, если не обратная.
источник
Учитывая недавно обновленные определения размера и усилия, я бы предположил, что, возможно, результаты обусловлены тем фактом, что Усилие (общее количество человеко-часов) на самом деле является лучшей оценкой истинного размера проекта, чем меры, которые использует источник (Усилие будет идеальная мера, если все команды и командные ресурсы были эквивалентны).
Поэтому на самом деле происходит то, что в крупных проектах больше дефектов, что неудивительно.
источник
Я не думаю, что вы можете предположить, что-либо из этого в реальном мире. Чем больше людей в проекте, тем выше вероятность того, что у вас будут плохие парни, которые не успевают за ними и замедляют работу лучших разработчиков. Даже если вы придерживаетесь предположений, есть несколько других вещей, которые замедляют проекты и вызывают больше дефектов по мере увеличения числа людей:
По моему опыту, негативные последствия проектов, загруженных разработчиками, значительно снижаются, когда проект очень модульный, и у вас есть только 1 или 2 человека на уровень. Мне все равно, какую систему управления версиями вы используете, потому что иметь 4 разработчика, которые автоматически объединяют проверки в один и тот же файл одновременно, вероятно, будет плохой идеей.
источник
Есть разница между корреляцией и причинностью; цитата, похоже, говорит о том, что общее количество дефектов, как правило, выше для проектов, в которых выделено большее количество инженеров. Это имеет смысл для меня, я уверен, что MS Windows имеет больше дефектов, чем приложения, которые я создаю, но это не значит, что мои приложения имеют превосходное качество.
В качестве другого, более абстрактного примера - если бы мы взяли общее число смертей на страну и сопоставили его с общим числом врачей в стране, я уверен, что мы могли бы сказать, что «в странах с большим количеством врачей было больше смертей». Это будет не потому, что врачи стали причиной смерти, а потому, что большое количество врачей свидетельствует о большой численности населения.
источник
Давайте на минуту отложим утверждение о количестве людей.
Рассмотрение количества дефектов, введенных как функция усилия, может иметь смысл, если вы предполагаете, что увеличение усилия обязательно требует увеличения размера, поскольку существует сильная корреляция между числом дефектов и размером программного обеспечения.
Поэтому, если вы предполагаете, что чем больше усилий вкладывается в проект, тем больше строк кода написано, то вы, вероятно, могли бы использовать усилие в качестве прокси для размера, чтобы предсказать количество дефектов. Корреляция между размером (например, LOC) и количеством дефектов неоднократно демонстрировалась в работах Уоттса Хамфри, Каперса Джонса и других.
Я не вижу, как подходит количество людей, кроме того, что больше людей подразумевает больше усилий.
Как примечание, не путайте взаимосвязь с причинностью. Несмотря на наличие корреляции между размером и количеством введенных дефектов, размер не является причиной. Как правило, причина, как вы указали, связана с проблемами людей и процессов. Тем не менее, дефекты как функция размера являются отличной метрикой для понимания, если есть проблема, и для оценки эффективности изменений.
источник
Я предполагаю, что это ограничено членами основной команды программистов, а не ситуации, когда есть такие специалисты, как: UI, UX, DBA и т. Д.
Я думаю, что с этим нужно хорошо справляться, но это нелегко. Небольшие команды, состоящие из качественных разработчиков, могут управлять собой. С большей вероятностью можно избежать больших участков кода, созданных кем-то с меньшим количеством талантов.
Наличие большего количества членов команды может облегчить разделение обязанностей. Положите лучших или более опытных devlopers в трудных областях. Уберите некоторые из мирских или непрограммных задач от ваших лучших разработчиков и позвольте младшим разработчикам справиться с этими задачами. Это займет больше планирования и обдумывания, но дает возможность использовать свой талант.
Существует мнение, что лучше иметь великого разработчика, которому нужно освоить новый навык, чем разработчика ниже среднего, который его уже знает. Это здорово, если у вас есть время. Вероятно, причина, по которой больше разработчиков назначается на проект, заключается в объеме требуемой работы и временных ограничениях. У вас может быть кто-то, кто может сосредоточиться на конкретной области и стать более квалифицированным. Хорошо иметь это всестороннее знание, но иногда с небольшим руководством меньший разработчик может взять некоторую инструкцию и работать с ней.
Реальность такова, что не так много людей, которые когда-либо управляли большой командой в успешном проекте. Даже если они все талантливы, крупным командам сложно самостоятельно управлять. Мешают ли эго?
источник