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

StackOverflow https://stackoverflow.com/questions/160968

Вопрос

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

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

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

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

Я знаю, что Windows Vista раздражала многих людей, когда она впервые вышла, из-за всего программного обеспечения и периферийных устройств, которые не работали на ней, даже когда они работали на XP.Из-за этого он получил довольно плохой прием.Но вы можете видеть, что Microsoft также преуспела в создании некоторых замечательных инноваций в Vista за счет обратной совместимости для многих пользователей.Они пошли на риск.Это окупилось?Правильное ли решение они приняли?Думаю только время покажет.

Сможете ли вы найти баланс между противоречивыми потребностями инноваций и обратной совместимости?Как вы справляетесь с жонглированием?

Это было полезно?

Решение

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

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

Я думаю, что самое главное здесь — тест, тест, тест.Обратная совместимость не должна препятствовать прогрессу вперед.

Это всего лишь мой 2с

Другие советы

Разделите разработку на две ветви: одну, которая поддерживает обратную совместимость, и другую, предназначенную для нового основного выпуска, где вы ясно даете понять, что обратная совместимость нарушается.

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

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

Вы всегда можете поискать инновационные способы поддержания обратной совместимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top