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