Как оценить вклад человека в программный проект?

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

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

Моя идея идеального инструмента для этой цели:

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

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

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

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

5 ответов

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

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

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

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

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

  • -10 если сломают сборку
  • -1 за нарушение теста
  • +1 за исправление теста
  • и т.п.

Это снова способ как-то оценить вклад разработчика.

В общем, я чувствую, что то, о чем вы просите, существует, но все еще очень незрелое.

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

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

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

Мартин

В книге Страуструпа по C++ я однажды прочитал: "Не пытайтесь решать социальные проблемы техническими средствами".

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

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

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