Поэтому общепризнанно, что программисты высшего уровня могут создавать на порядок больше / лучше кода, чем их более средние коллеги.
Также общепринято, что количество ошибок, допущенных в коде, относительно постоянно для программистов.
Вместо этого на него обычно влияют процессы, используемые при написании кода и после написания кода . (Насколько я понимаю) Люди склонны совершать ошибки с довольно постоянной частотой - лучшие программисты просто замечают их больше и быстрее их исправляют.
- Обратите внимание, что оба вышеприведенных утверждения взяты из Code Complete Стивом Макконнеллом - так что это не вопрос разных точек зрения.
Так что я начал видеть это недавно в моем коде. Я могу выработать примерно в 4-5 раз больше кода, чем многие мои коллеги (измеряются по баллам, оцененным командой), с более высоким качеством (на основе показателей производительности и количества изменений, внесенных после регистрации). Но я все еще делаю ошибки. Между улучшением модульных тестов, лучшим пониманием того, что делает код, и лучшими взглядами на проблемы при проверке кода, я не выдаю в 4-5 раз больше ошибок.
Но я до сих пор выдаю примерно вдвое больше ошибок, обнаруженных QA, чем другие разработчики в моей команде. Как вы можете себе представить, это вызывает некоторые проблемы у нетехнических людей, выполняющих метрические измерения (читай: мой начальник).
Я пытался указать, что я создаю ошибки вдвое меньше, чем мои коллеги (и исправляю в два раза больше), но это трудно продать, когда есть графики, говорящие, что я создаю вдвое больше ошибок.
Итак, как бороться с тем, что увеличение производительности приведет к увеличению количества ошибок?
источник
Ответы:
Я думаю, что вы смешиваете свои проблемы. И на вашей стороне нет ничего, что вам нужно изменить.
Производительность - это намек на то, как быстро проект будет завершен. Менеджеры проектов и все остальные хотели бы знать, когда проект будет доставлен. Повышение или повышение производительности означает, что мы увидим, что проект будет реализован раньше.
Количество ошибок связано не с производительностью, а с размером проекта. Например, у вас могут быть
N
ошибки наY
строки кода. В этой метрике нет ничего, что говорит (или волнует!), Как быстро пишутся эти строки кода.Чтобы связать это вместе, если у вас более высокая производительность, да, вы «увидите», что ошибки пишутся быстрее. Но у вас все равно будет такое количество ошибок, поскольку оно связано с размером проекта.
Во всяком случае, более высокая производительность означает, что у вас будет больше времени в конце проекта для поиска этих ошибок, или разработчик будет быстрее находить ошибки, которые они создали. 1
Для решения более личных аспектов вашего вопроса.
Если ваш начальник строго следит за количеством ошибок, которые вы производите, а не за количеством ошибок, которые вы производите, необходимо провести образовательную сессию. Количество созданных ошибок не имеет смысла без поддержки.
Чтобы довести этот пример до крайности, скажите своему боссу, что я хочу удвоить вашу зарплату. Зачем? Я не создал абсолютно никаких ошибок в вашем проекте, и поэтому я намного превосходящий вас программист. Какая? У него будет проблема в том, что я не написал ни одной строки кода для вашего проекта? Ах. Теперь у нас есть понимание того, почему скорость важна.
Похоже, у вашей команды есть метрики для оценки ошибок на сюжетную линию. Если ничего другого, то это лучше, чем измеряться по количеству созданных ошибок. Ваши лучшие разработчики должны создавать больше ошибок, потому что они пишут больше кода. Попросите вашего босса выбросить этот график или, по крайней мере, еще одну серию за ним, показывающую, сколько баллов за историю (или какую бизнес-ценность вы измеряете) наряду с количеством ошибок. Этот график расскажет более точную историю.
1 Этот конкретный комментарий привлек гораздо больше внимания, чем предполагалось. Так что давайте будем немного педантичными (сюрприз, я знаю) и вернемся к этому вопросу.
Корень этого вопроса в том, что менеджер смотрит на неправильные вещи. Они смотрят на необработанные итоги ошибок, когда они должны смотреть на скорость генерации в зависимости от количества выполненных задач. Давайте не будем зацикливаться на сравнении с «строками кода», историческими моментами, сложностью или чем-то еще Вопрос не в этом, и эти заботы отвлекают нас от более важного вопроса.
Как указано в ссылках ОП, вы можете предсказать определенное количество ошибок в проекте только по размеру проекта. Да, вы можете уменьшить это количество ошибок с помощью различных методов разработки и тестирования. Опять же, не в этом вопрос. Чтобы понять этот вопрос, мы должны принять, что для проекта определенного размера и методологии разработки, мы увидим определенное количество ошибок, как только разработка будет завершена.
Итак, давайте наконец вернемся к этому комментарию, который несколько совершенно не поняли. Если вы назначите задачи одинакового размера двум разработчикам, разработчик с более высоким уровнем производительности выполнит свою задачу раньше, чем другой. Поэтому у более продуктивного разработчика будет больше времени в конце окна разработки. Это «дополнительное время» (по сравнению с другим разработчиком) можно использовать для других задач, таких как работа с дефектами, которые будут просачиваться через стандартный процесс разработки.
Мы должны взять OP на их слово, что они более производительны, чем другие разработчики. Ничто в этих утверждениях не подразумевает, что OP или другие более продуктивные разработчики не работают в своей работе. Указывая на то, что будет меньше ошибок, если они будут тратить больше времени на эту функцию, или предположить, что отладка не является частью этого времени разработки, пропускает то, что было задано. Некоторые разработчики работают быстрее, чем другие, и выполняют сопоставимые или более качественные работы. Опять же, смотрите ссылки, которые ОП выкладывает в своем вопросе.
источник
Потратьте немного времени на очистку, полировку и тестирование своего кода. Будут ошибки, но будет меньше. Это требует времени. Скорость вывода вашего кода будет снижаться, но выход кода без ошибок будет увеличиваться, что приведет к повышению производительности. Потому что ошибки дорогие.
Можете ли вы сохранить свой код в ветке или в тестовой среде, пока не разберетесь с ним и не обнаружите больше ошибок? Ошибки в ветке обычно вызывают меньше волн, чем ошибок в производственном коде.
Но я не совсем копаю ваши утверждения, ведущие к вашему вопросу. И, возможно, ваш босс тоже нет.
Я не думаю, что каждый кодер выдает одинаковую частоту ошибок. Ваша вторая ссылка на самом деле совершенно не по теме, так как она сравнивает разные языки, а не разные уровни навыков программиста. Код завершения упоминает некоторые измерения большой выборки, которые смотрят на процесс, а не на умение программистов. И когда они говорят, что кодеры верхнего уровня производят больше / лучше кода, это означает, что в нем меньше ошибок. Зависит от приложения. Так что, да, я думаю, что это вопрос другой точки зрения.
В конце концов, если босс хочет более чистый код, дайте ему более чистый код.
источник
Я выйду на конечности и буду защитником дьявола. Это не значит, что я не сочувствую вашему положению, но моя симпатия вам не поможет. Итак, позвольте мне добавить к перспективе Филиппа :
Ваш начальник заботится о качестве продукта, отчасти потому , что его имя и репутация будут связаны с ним. Частью качества является воспринимаемое количество ошибок . Если вы продаете потрясающую тренировку, которая тренируется в четыре раза быстрее, чем любые конкурирующие тренировки, но также ломается вдвое чаще, у вас будет плохая репутация. Даже если можно утверждать, что тренировка работает лучше, люди привыкнут к скорости, но они будут помнить поломки.
Оглядываясь назад, большинство ошибок, очевидно, можно предотвратить. Если бы вы были немного осторожнее, ваш начальник почувствовал бы, что вы могли бы избежать этих проблем и любой необходимой очистки. С его точки зрения, это тривиальная, чувственная вещь, которую нужно спросить, и любые споры, которые вы делаете по этому поводу, не сработают и приведут к тому, что вы будете выглядеть плохо.
Он не может измерить вашу превосходную производительность. Вы заявляете о более высокой производительности на основе проверяемой метрики, так как ваши коллеги относятся к этому? Согласны ли они, возможно, неохотно, что вы более продуктивный программист или, по вашему мнению, вы одиноки? Вы сделаете более сильное замечание, если у вас есть другие люди, чтобы поддержать ваши утверждения.
Это для перспективы. Теперь, как вы решаете исправить эту разочаровывающую ситуацию, в которой вы находитесь?
Не торопись немного. Явно упомяните тем, кто распространяет задачи, которые вы собираетесь попытаться снизить уровень ошибок (*), чтобы они не были удивлены вашим меньшим потреблением. Во всяком случае, замедление уменьшит количество ошибок, назначенных вам из-за явного недостатка предложения.
(*) Там разница между, с одной стороны, признавая , что есть ошибки на Ваше имя , и что вы будете пытаться уменьшить эту сумму , и, с другой стороны, признав , что у вас есть слишком много ошибок , чтобы ваше имя и должны действовать.
Не пытайтесь убедить своего босса, потому что это не сработает. Опять же, это не значит, что вы должны признать свою точку зрения; Вы можете представить контрапункт и придерживаться своего мнения, не игнорируя его опасения. Потому что, если вы оспариваете точку зрения и не можете удовлетворительно доказать свою превосходную производительность (и даже если можете), вы рискуете оскорбить своих коллег или отказаться от них. Ты не хочешь быть этим парнем .
источник
Предполагая, что вы будете производить то же «количество» кода, что и ваши коллеги, за 20% своего времени, вы могли бы потратить в 4 раза больше на настоящую отладку кода и его совершенствование, что снизило бы уровень ошибок. Тогда ты можешь назвать себя хорошим программистом.
Самый большой вопрос, почему вы кодируете в 5 раз больше, чем другие, вместо того, чтобы стремиться к качеству. Это то, что вам диктует ваше эго, или ваш босс заставляет вас?
Также вам необходимо учитывать затраты на исправление ошибки. Когда вы обнаружите это рано, вы все равно можете оказаться «внутри» кода, чтобы быстро его исправить. Если он появляется только через месяц после разработки, может быть трудно найти или даже заставить вас изменить большие части уже запрограммированного кода.
У вас, похоже, есть навыки для создания кода, и вы могли бы сделать его великолепным, если бы вы сосредоточились на качестве, а не на скорости. Попробуйте, я думаю, вам понравится.
Следующая проблема заключается в том, чтобы получить подтверждение (говорить деньги) за вашу лучшую работу. Поговорите со своим боссом и спросите его, как поступить, в конце концов, это его компания и деньги, и если он хочет, чтобы вы производили меньше ошибок, он должен также решить, каким образом это происходит.
источник
Разработчики могут быть умными, даже гениальными, со способностью понимать и кодировать соло, не будучи ХОРОШИМИ разработчиками. Хороший разработчик создает качественную работу и делает весь проект лучше.
Я не говорю, что это вы, но один из самых разочаровывающих программистов, с которыми я когда-либо работал, написал больше кода, чем кто-либо в команде, и у нас были хорошие люди в команде. Мы отслеживали коммиты с помощью программного обеспечения для ранжирования, поэтому для некоторых это было почти соревнование. Он набросал кучу кода, оставив после себя документацию ZERO, непроходимые леса, и фактически сделал мой собственный код сложным для понимания (я могу сделать это самостоятельно, большое спасибо!). В конце концов он почти сорвал проект, потому что он стал шоу одного человека. Люди не могли следовать за ним. Мы не были синхронизированы как команда. Мы фактически переписали некоторые из его функций спустя годы, просто чтобы восстановить ремонтопригодность.
Я хотел, чтобы он замедлил и провел больше времени: 1) Улучшение качества кодовой базы 2) Общение с командой 3) Работа над вещами, которые помогли другим, а также помогли ему закончить функции / истории 4) Исправление ошибки
Я не согласен с измерением производительности по строкам кода, но это ключевой показатель. Ваш счетчик кода содержит комментарии? Если это так, есть простой способ сохранить вывод на линии, уменьшив при этом «коэффициент ошибок»; просто увеличьте качество и количество комментариев, которые вы пишете. В комментариях редко бывают ошибки (хотя они могут), и в целом у нас недостаточно качественных комментариев. Я не потворствую кодовой инфляции, но комментирование похоже на мини-обзор кода, он заставляет вас думать, реорганизовывать и улучшать.
источник
Попытка просвещения менеджмента не является началом. Есть старое клише: «Ты будешь верить мне или твоим лживым глазам?» Что касается ваших боссов, так это количество ошибок. Никакое количество рационализации не скажет им, что это приемлемо. Это более чем в два раза рискованно. Кроме того, вы не единственный, на кого повлияло количество ошибок. QA удваивает работу, пытаясь идентифицировать ваши ошибки, поэтому руководство будет хотеть, чтобы вы делали их меньше.
Лучшее решение - уменьшить количество ошибок, которые вы производите , и точка. Не только менеджмент будет счастливее, но и вы тоже. Не так ли? Потому что я уверен , что так же , как вы любите хвастаться вы опережать своих коллег по четыре раза, вы любите , чтобы сказать , что вы делаете это делает то же самое число, или даже меньше, чем ошибки они делают.
Как вы заявили, «… на число ошибок, допущенных в коде… обычно влияют процессы, используемые при написании кода и после его написания». Если вы хотите изменить частоту появления ошибок, вам придется изменить процессы, которые вы используете для написания кода.
Программисты используют производственные методы для производства кода, так же как сборочная линия использует методы для производства какого-либо массового объекта. Хорошо, практика индустрии программного обеспечения больше похожа на безделушки из веток, найденных в лесу. Но поскольку мы производим машины, мы должны применять ту же строгость и дисциплину, что и для высокоскоростных машин массового производства.
Это включает в себя те же методы, которые используются в массовом производстве для снижения частоты дефектов: анализ первопричин, чтобы определить, почему ошибки допущены, и изменить процесс, чтобы их не было. Или, по крайней мере, что вы ловите, прежде чем QA делает.
Составьте список ваших ошибок. Вы, наверное, уже получили один спасибо ребятам QA. Возможно, категоризирован тоже. Тип ошибки, серьезность, точка, в которой ошибка была введена в код и т. Д.
Выберите самую большую категорию ошибок. Так как ваш объем настолько высок, вы должны сначала нацелиться на эту категорию. Другие категории включают в себя те, которые легче найти, и те, которые легче всего сделать.
Зная, где эти ошибки вводятся в код, изучите возможность внесения изменений на этом этапе (и ранее), которые предотвращают возникновение этих ошибок, и способов облегчения их обнаружения на этом этапе.
Обязательно обратите внимание на случайности, не связанные с программированием, а также на то, как они могут повлиять на качество вашей работы. Фоновая музыка, перерывы, приемы пищи, работа слишком долго без перерыва, голод и т. Д.
То, что вы найдете, может заставить вас идти медленнее. С другой стороны, это может помочь вам производить еще быстрее, так как вам не нужно будет переделывать то, что вы уже оставили позади. На самом деле, в четыре раза больше кода - это не на порядок лучше, чем ваши коллеги, поэтому изменение вашего процесса - это определенно верный путь.
источник
Измените свою цель с создания большей части кода, чтобы помочь компании двигаться вперед больше всего.
Поскольку кажется, что у вас много коллег и доступно дополнительное время, максимальный эффект, который вы можете оказать на более быструю доставку функций и исправлений ошибок, - это помочь вашим коллегам.
Помогите своим коллегам
источник
Ваш босс - единственный человек, который может ответить на это в вашем случае. Поговорите с ним, укажите ваше лучшее соотношение и позвольте ему решать. Если его решение не имеет смысла, пришло время искать компанию с вашим мышлением.
Как профессионал, вы должны быть в состоянии работать с любыми условиями клиента, просто убедитесь, что они понимают последствия. Хорошая диаграмма ошибок / историй может помочь вашему боссу понять, насколько снизится ваша производительность, если вы потратите время на то, чтобы создавать меньше ошибок.
Вам также необходимо учитывать следующие моменты:
источник
Ситуация такова, что вы работаете в четыре раза быстрее, чем средний программист, но вы делаете в два раза больше ошибок за данный промежуток времени. Относительно объема работы, которую вы выполняете, вы фактически делаете ПОЛОВИНУ столько же ошибок, сколько и «в среднем».
Вы можете попытаться указать на низкое соотношение ошибок к работе или даже ошибок в готовом продукте (который вы можете выполнить за четверть обычного времени). Большинство боссов примут это.
Есть несколько боссов, которые не будут, потому что они работают с «допустимым» типом ошибок за раз. Тогда вы можете замедлить свой темп работы, выполняя ДВАЖДЫЙ объем работы в среднем за данное время, и делать те же (или меньше) ошибок, потому что у вас больше времени для проверки своей работы.
источник
Если ваш начальник хочет, чтобы вы улучшили качество своей работы, то улучшите качество своей работы.
Вы должны стремиться к нулевым ошибкам, а не к тому, чтобы производить только вдвое больше, чем следующий лучший программист.
источник
Вы должны сказать своему боссу, что метрики, которые он использует, довольно ошибочны. Если вы посмотрите на обороты охранников в НБА, вы обнаружите, что у них, как правило, больше чисел, чем у форвардов. Но это потому, что они больше обращаются с мячом. Если не стартующий защитник играет на 1/5 больше, чем стартовый, и переворачивает мяч в среднем 3 раза. стартовый защитник, который переворачивает мяч более 7 раз за игру - на первый взгляд может показаться, что стартовый защитник хуже. Но если вы поделите количество оборотов на количество сыгранных минут, то очевидно, что стартовый защитник имеет гораздо лучшие показатели в зависимости от сыгранных минут.
Аналогично, у вас гораздо лучшие цифры, если количество ошибок делится на количество пройденных сюжетных очков. Итак, это то, что я хотел бы предложить вашему менеджеру. Измените метрику на число ошибок, поделенное на количество завершенных сюжетных очков, или, по крайней мере, добавьте новую метрику для этого, если необходимо общее количество ошибок на разработчика. Но, поскольку некоторые сюжетные моменты намного сложнее и сложнее, чем другие сюжетные моменты, могут быть и будут существовать небольшие отклонения, и менеджер также должен это учитывать.
То, что я не думаю, что вы должны делать, это замедляться.
источник
Мера добавленной стоимости
Утверждают, что на самом деле важна добавленная вами ценность. Затем перейдите к приблизительному (ручному) измерению этого:
Остальная часть вашей добавленной стоимости. Точно так же и для всех остальных.
Эти оценки являются сложными, но даже грубые могут иметь смысл. И сам процесс обсуждения этих оценок полезен для команды и проекта.
источник
Лучшие программисты имеют тенденцию писать очень обычный код, который легко отлаживать и понимать, они используют доступные инструменты (статический анализ, ошибки компилятора, код отладки) по максимуму. Кроме того, лучшие программисты уже поняли ценность модульного тестирования благодаря собственному опыту.
Таким образом, хотя первоначальное количество проблем в строке одинаково, проблемы устраняются быстрее.
источник