Найти тему
MENTOR

Карта - не территория. Или о разработке ПО на примере борща.

Карта - это не территория!

Такую мантру твердили в свое время последователи НЛП. Суть этой мантры в том, никто ничего на самом деле не знает реального о мире. Есть только совокупность убеждений.

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

Вот и выходит: Убеждения о себе - ещё не реальное знание о себе самом. Карта - ещё не сама территория (реальное место в мире), модель мира - ещё не сам мир, а модель (прототип) - ещё не сам продукт.

В моей работе ПМа (руководителя проектов) я постоянно сталкиваюсь примерно с тем же, только в отношении прототипов, макетов, MVP, альфа-версии и т.п. для проектов.

Заказчик кстати видит примерно как ПМ =)
Заказчик кстати видит примерно как ПМ =)

Когда что-то разрабатывается с нуля сложно получить быстро и сразу идеальный готовый результат. Ведь всех деталей проекта до конца никто не знает. Это обычно обсуждается по ходу реализации в тесном взаимодействии с заказчиком. Чтобы обсуждать и проверять было проще вся разработка дробится на этапы-итерации. И каждая итерация должна дать приращение результата. Улучшить продукт. Самая первая итерация разработки (на которой заказчики тщетно пытаются понять не слили ли они в вакуум свои деньги) обычно приводит к какому-то обобщенному результату, отдаленно напоминающим то, что будет в итоге нужно. Этот первичный результат разработки - по сути лишь карта целевого решения. Такие карты решения называют иначе: макет, прототип, MVP, альфа-версия. Ну, вы поняли.

Обычно заказчик примерно такого и опасаются
Обычно заказчик примерно такого и опасаются

Но вот людьми такой результат зачастую совершенно не воспринимается. Начинается сразу ряд вопросов:

  • А где вот это?
  • А вот это?
  • А почему сейчас эта кнопка не работает?
  • А почему я не могу открыть окно?
  • А чего оно не считает?
  • А почему не автоматизировано?

В общем, вагон и маленькая тележка из вопросов.

Очень. Много. ВОПРОСОВ!
Очень. Много. ВОПРОСОВ!

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

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

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

Модель в этом смысле - это совокупность компонентов готового продукта, над которыми по ходу производства выполняются определенные действия в правильной длительности и последовательности.

После подготовки следуют другие итерации с построением промежуточных моделей:

  • сварить бульон (борщ = модель бульон + нарезанные овощи);
  • протушить свеклу с морковью и томатной пастой с кислотой (уксус или лимоны) (борщ = модель + протушенные овощи + нарезанные овощи);
  • сварить картофан в бульоне (начала сборки итогового продукта - что-то типа pre-alfa версии (модели) борща);
  • достать мясо и очистить его с кости (тестирование и доработка отдельных компонентов продукта);
  • (отдать кость псу. Умилиться и продолжить готовку.) = промежуточная демонстрация продукта;
  • сварить капусту в бульоне с картофаном (продолжаем сборку продукта);
  • вернуть мясо в бульон (или почти суп уже) (сборка продолжается, модель улучшается);
  • добавить чеснок в суп (продолжается сборка, модель++);
  • добавить тушеные овощи и дать им вскипеть и побурлить минут 5 (итоговая сборка проекта. Модель становится продуктом);
  • выключить суп и дать настояться минут 10 под закрытой крышкой (продукт готовится к распространению).
Борщ в кастрюле. Нужный продукт - но пока без красивой упаковки.
Борщ в кастрюле. Нужный продукт - но пока без красивой упаковки.

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

Продающий вид борща. Не знаю как у вас - а у меня прям уже слюнки от одной фотки.
Продающий вид борща. Не знаю как у вас - а у меня прям уже слюнки от одной фотки.

До итогового состояния продукт борща прошел ряд итераций, где каждый раз была промежуточная модель борща. И вроде бы чем-то похожая на итоговый продукт, но все же ещё и не продукт. В бульоне и протушенных овощах борщ ещё почти не виден - хотя основная работа уже сделана.

Примерно так же и с разработкой. Людям сложно понять куда выруливает проект на промежуточных показах. Их это пугает и путает.

Поэтому я и пишу вам напоминание: карта - это не территория. Это что-то похожее на правду, но до завершения ещё может быть далеко.