Я работаю над приложением, которое имеет графический интерфейс (GUI) и API (сценарии). Наш продукт имеет очень большую установленную базу. Многие клиенты вложили много времени и усилий в написание сценариев, использующих наш продукт.
Во всех наших разработках и реализации у нас (по понятным причинам) очень строгое требование обеспечения 100% обратной совместимости . Сценарий, который запускался раньше, должен продолжать работать точно так же, без каких-либо изменений, когда мы представляем новую версию программного обеспечения.
К сожалению, это требование иногда связывает наши руки за спиной, поскольку оно действительно ограничивает нашу способность вводить новшества и придумывать новые и лучшие способы ведения дел.
Например, мы могли бы придумать лучший (и более удобный) способ решения задачи, которая уже возможна. Было бы желательно сделать этот способ лучше по умолчанию, но мы не можем этого сделать, поскольку это может иметь последствия обратной совместимости. Таким образом, мы застряли с выходом нового (лучшего) способа в качестве режима, при котором пользователь должен «включить», прежде чем он станет им доступен. Если они не прочитают документацию или интерактивную справку (чего не делают многие клиенты), эта новая функциональность останется скрытой навсегда.
Я знаю, что Windows Vista раздражала многих людей, когда она только появилась, из-за всего программного обеспечения и периферийных устройств, которые не работали на ней, даже когда они работали на XP. Из-за этого он получил довольно плохой прием. Но вы можете видеть, что Microsoft также преуспела в создании некоторых замечательных инноваций в Vista за счет обратной совместимости для многих пользователей. Они рискнули. Это окупилось? Правильно ли они приняли решение? Я думаю, только время покажет.
Вы находите баланс между противоречивыми потребностями инноваций и обратной совместимости? Как вы справляетесь с жонглированием?