Как вы уравновешиваете конфликтующие потребности обратной совместимости и инноваций?

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

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

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

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

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

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

Ответ 1

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

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

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

Это просто мой 2c

Ответ 2

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

Ответ 3

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

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

Ответ 4

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