«Мы просто программисты»: REES46 ответил Retail Rocket на обвинения в хакерской атаке Статьи редакции

Генеральный директор центра управления конверсией REES46 Михаил Кечинов о скандале вокруг тестирования рекомендательных систем.

За одну лишь пятницу 2 июня мне пришло больше заявок в друзья от участников ecommerce-рынка, чем за предыдущие три года. Говорят, что PR плохим не бывает. Бывает, конечно. Просто нужно уметь его правильно готовить.

То, что вы все уже знаете: REES46 — мошенники, потому что подделывают сегменты при A/B-тесте. Так говорят профессионалы из Retail Rocket. Дальше будет то, чего вы не знаете. А в конце ещё и то, что вам понравится.

С 1 по 28 февраля 2017 года магазин «Дочки&Сыночки» проводил ABC-тест товарных рекомендаций. Результаты теста:

  • DochkiSinochki = Revenue.

  • Retail Rocket = Revenue + X.

  • REES46 = Revenue + 5X.

Для примера, если базовая выручка сегмента равна 1000 рублей, а прирост X равен 5%:

  • DochkiSinochki = 1000.

  • Retail Rocket = 1050.

  • REES46 = 1250.

Это мог быть потрясающий кейс, если бы показатель X не был непростительно малым. Никак не 5%. Дальше в дело вступают профессионалы Retail Rocket. И это не сарказм.

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

Наверное, это потому, что мы программисты. Зато иногда обращаем внимание на странные вещи. Первая вещь — это сегментация на пять месяцев. Всё бы ничего, вот только у моего пользователя изменился сегмент в момент тестирования товарных рекомендаций. Это было в начале марта.

Как водится, у нас сработал «синдром Навального». И мы решили провести собственное расследование — со скандалами и интригами. Добавили в SDK плохо читаемый код, льющий нам в базу присвоенные пользователям сегменты и прикрыли его от Москвы, чтобы враг не сразу заметил. И стали ждать.

Ждать пришлось недолго — несколько сотен человек меняли свои сегменты ежедневно. Мы обрадовались и стали планировать, как раскопать причины смены сегментов и как это всё потом красиво подать в СМИ. Вот только мне хватило ума задать юристам вопрос: можно ли нам опубликовать такое. В ответ мне сказали: «Если много лишних денег, то можно». Расшифровка будет ниже.

Детективная горячка сразу прошла, у нас нашлось много другой, более важной работы, а смену сегментов мы списали на устаревание куки — сегментатор Retail Rocket стоит на сайте уже давно, просто это старые пользователи, и у них устарела куки. Но всегда есть «но». Об этом тоже ниже.

К апрелю магазин закончил доработки интеграции рекомендательных систем, мы же переделали отслеживание смены сегментов в скрипт инициализации — скрывать-то уже нечего. И стали ждать официального начала A/B-теста. Вот только он не начинался, потому что с завидной регулярностью ребята из Retail Rocket находили, что у них что-то ещё работает не так, писали, что нужно что-то переделать. Ну и стабильно проигрывали, конечно. Так прошел апрель.

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

Я ответил, что сегменты меняются из-за программы Retail Rocket и приложил отчет о смене сегментов у 400 пользователей за последние сутки с равномерным распределением пользователей по сегментам. После этого мы еще съездили в гости к представителю магазина и подробно рассказали, почему сегменты меняются (устаревание куки — тогда мы ещё так думали, да).

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

Переделывать сегментатор — это еще две-четыре недели разработки со стороны магазина и месяц ABC-теста. Вот мы и «починили» сегментатор Retail Rocket. Мы стали восстанавливать потерянные сегменты, используя старый и плохо читаемый код в SDK.

У некоторых может возникнуть вопрос, почему же мы не восстанавливаем сегменты для Москвы. Ответ прост: забыли убрать проверку. А кто работает без багов? Отметьтесь в комментариях, я поставлю за вас свечку в церкви.

А потом случилась «грязная пятница». Вместо того, чтобы задать нам вопрос или хотя бы пошантажировать, конкурент решил сыграть в «Скандалы, интриги, расследования».

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

А мы подали иск. Мы ничего не должны доказывать. Теперь это проблема ответчика — доказать, что это не клевета. Что будет дальше? Дальше шоу будет продолжаться еще месяцев шесть, не меньше. Поэтому попкорна потребуется много. Каждое более или менее значимое действие мы будем освещать.

Ну, и напоследок кое-что для обсуждения. Мы сделали в Google Analytics ровно такой же отчет по переходам пользователей. Вот эти данные за период с 7 по 9 июня:

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

Удобный инструмент. Покликайте по сессиям, чтобы посмотреть историю переходов пользователей между сегментами. История некоторых уходит корнями в начало марта. А еще бывают люди, поменявшие сегмент 865 раз. Почему данные отличаются? Это вопрос к специалистам по Google Analytics. Мы просто программисты.

0
12 комментариев
Написать комментарий...
Nikolay Khlebinsky

А вот как все было на самом деле: https://vc.ru/p/retailrocket-hack

Ответить
Развернуть ветку
Nikolay Khlebinsky

Если говорить простыми словами, то автор сообщает нам, что:
– Мы просто программисты, написали зашифрованный код
–Чтобы никто в Москве не догадался – забыли убрать проверку
– Вот данные за 3 дня (которые были спустя 5 дней после публикации расследования), там все нормально, но вообще к инженерам Гугл Аналитикс у нас большие вопросы
– Доказывать мы ничего не должны, пусть Ритейл Рокет доказывает, что их расследование не клевета

Ответить
Развернуть ветку
Антон Жиянов
Вот мы и «починили» сегментатор Retail Rocket. Мы стали восстанавливать потерянные сегменты, используя старый и плохо читаемый код в SDK.

5 баллов ツ Заказчику не забыли сообщить, что вы «восстанавливаете потерянные сегменты»?

Ответить
Развернуть ветку
Nikolay Khlebinsky

Они "забыли" починить его на трафик из Москвы.
Они так же забыли, что он не был сломан: https://habrahabr.ru/company/retailrocket/blog/330012/#comment_10255420

Напомню, что ранее они "забыли" не отдавать пользователей магазина во внешние рекламные системы для конкурентов :)

Ответить
Развернуть ветку
Dmitriy Kravchenko

В книге Поля Экмана "Психология лжи" достаточно подробно описана модель поведения человека, обвиняемого с позиции виновного и невиновного.

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

В вашем ответе присутствует 3-4 высказывания, которые как красная нитка выбиваются из общей логики вашей позиции невиновного. Все бы ок – можно списать на волнение, НО это печатный текст, а не устная речь - неужели вы не смогли банально вникнуть в смысл своих же слов перед публикацией? (Куда ж без хайп, да VC?)

Вот что пишет Михаил, цитирую:

- "А кто работает без багов"
- "Все уже устали от этого теста..."
- "Вот мы и «починили» сегментатор Retail Rocket"

Не находите ли подобные оправдания, несоответствующие вашей изначальной позиции? Люди, которые заявляют, что готовы заплатить 100к, либо на 101% уверены в его качестве, либо никогда и не собирались платить (Я за второе). Так что призывы к комплексу "вины" в каждом из нас в данном случае не принесут вам соратников среди читающих.

Последняя фраза вообще добила)) Представьте ситуацию:

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

В вашем случае очень подходит цитата:

- " Объясни, где граница между преступным и тупым, и я сдам брата моей жены" (с)

Думаю, вы просто решили откусить кусок "пирога", который оказался вам не по зубам.

Ответить
Развернуть ветку
Nikolay Khlebinsky

"Мы сделали в Google Analytics ровно такой же отчет по переходам пользователей. Вот эти данные за период с 7 по 9 июня" – спустя неделю после разоблачения, когда "возврат" остановлен :) Огонь!

Ответить
Развернуть ветку
Igor Gusarov

Цифры вызывают большие сомнения и выглядят ещё одним аргументом в пользу RR. С 7 по 9 июня? Серьёзно?

Ответить
Развернуть ветку
Ктотоещепользуется?

Самая главная инфографика в посте - фото Михаила, не вмещающееся в экран моего Macbook Pro.

Ответить
Развернуть ветку
Давид Каминер

Но обфускация кода через картинку это и правда странно, особенно, учитывая что в первом ответе Михаил вообще отрицал наличие пикселя.

Ответить
Развернуть ветку
Ктотоещепользуется?
Ответить
Развернуть ветку
Viktor Sytnik

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

Ответить
Развернуть ветку
Александр Иващенко

Миша, это война, а значит стиснув зубы - и в окопы.

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

Но мы то знаем кто настоящий победитель в аб тесте :)

Ответить
Развернуть ветку
9 комментариев
Раскрывать всегда