Если баг 5+ лет, то это особенность? [закрыто]


18

Позвольте мне добавить детали: я работаю в учреждении со многими программистами, тестировщиками, аналитиками QA, владельцами продуктов и т. Д., И вот что меня беспокоит:

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

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

Но может быть трудно регистрировать ошибки в старых функциях, не видя их закрытыми или забытыми. «Это работало так вечно» - типичный ответ. Кроме того, когда QA выполняет регрессию, они склонны искать что-то, что отличается от всего, что кажется неправильным. Таким образом, исправление старой проблемы может быть записано как ошибка, потому что «так было даже до моего времени».

Молодой кодер во мне думает: переписать эту чертову штуку! Как человек, который имел возможность быть ближе к продажам, клиентам, я хочу дать преимущество сомнения в этом подходе.

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


2
Я думаю, что вы имеете в виду "... работал так в течение многих веков".
Лук-Рыцарь

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

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

Ответы:


14

Я чувствую твою боль.

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

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

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

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


Часть регрессионного тестирования верна, если вы действительно знаете соответствующий уровень охвата тестированием.
Пемдас

с другой стороны, если вы кодируете GUI, то существует меньше зависимостей; пользователи развиваются легче.
Матье М.

@ Матье М .: Абсолютно. Легче изменить привычки (если вы вкладываете средства в исправление привычек), чем исправлять (множество) автоматизированных систем (большинство из которых люди забудут в задней комнате).
Мартин Йорк,

3

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

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

Потерять потенциальных клиентов - это трудно для меня, и даже для продаж / маркетинга знать, но уровень удержания был высоким (хотя стоимость переключения также высока). Возможно, вы вряд ли можете знать, лучше ли вам делать А, а не делать В, если вы не выполняете A / B-тестирование должным образом.
Работа

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

3

Определить ошибку. «Спецификация отсортирована по дате, но отсортирована по сумме транзакции» - это не обязательно ошибка в коде. Это может быть недокументированное изменение - когда-то, где-то, кто-то просил изменить порядок сортировки, но спецификация, требования, руководство (даже кнопки и метки в пользовательском интерфейсе) не менялись, и никто не возражал. Если вы покажете его и вернете его к «по дате», это приведет к хаосу, а для вас обновление пользовательского интерфейса, спецификации, руководства и т. Д. В основном тратит ваше время, за исключением, возможно, немного «теории разбитых окон». «.

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

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

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


2

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.