вторник, 28 сентября 2010 г.

Fix vs Feature

Все рано или поздно сталкиваются с тем, что в продукте на стороне заказчика возникают ошибки. Бывают они разного уровня критичности и у разного количества заказчиков. Зачастую реакция на такие запросы требует оперативности и делается в достаточно нервных условиях.

Мне бы хотелось выразить свою точку зрения на то что есть 'фикс' и чем он отличается от полноценной 'фичи'.

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

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

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

В любом случае перед тем как делать что-нибудь стоит ответить на следующие вопросы:

  • Знаем ли мы как это быстро поправить?
  • Существует ли способ обойти ситуацию без изменении в коде? (workaround)?
  • Сильно ли эта ситуация мешает заказчику?
  • Много ли заказчиков столкнулось с этой ситуацией?
  • Уверены ли мы отсутствии побочных эффектов после правки?
  • Есть ли у нас всеобъемлющее решение чтобы поправить эту и подобные ситуации в будущем?

Имея эти ответы уже можно думать о том делать ли private fix (только для этого заказчика), public fix (для всех), учесть это проблему и вписать ее в release notes (defer) или же внести в планы будущих релизов полноценную фичу по комплексному устранению этой проблемы (feature).

Цена у всех этих решении разная.

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

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

Комментариев нет: