project-management
January 10

Проект бонусной системы

Коль уж пошла волна ностальгии — рассказываю про еще один реализованный проект, из совсем уже далекого 2012го года.

Один из ключевых виджетов в "личном кабинете" пользователя, это было красиво на 2012й год.

IQCard

Если честно я уже плохо помню детали, поскольку прошло ни много ни мало — 13 лет, так что описываю идею проекта в самом общем виде:

компания занималась продажей и обслуживанием предоплаченных «подарочных» пластиковых карт Visa/Mastercard, за пользование которыми начислялся кешбек

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

А в личном кабинете клиента можно было их посмотреть с помощью очень красивого интерфейса:

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

Ныне система полностью выведена из эксплуатации, бывшее руководство в бегах а сама компания давно закрыта, собственно даже неименных пластиковых карт больше нет в природе. Как и самих Visa с Mastercard.

Так что вполне можно рассказать, благо с тех времен сохранились немногие скриншоты.

Особенности и технологии

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

Первая реализация системы была реализована на Node.js, но закончена не была — исполнители проект завалили и скрылись в туманной дали, получив по жопе иском, поэтому было решено переписать все с нуля на более стандартных технологиях для того времени:

Java, Spring и JSF

Первую версию я не застал и присоединился к проекту, когда уже был готов MVP и в кривом сильно недоработанном виде запущен в эксплуатацию.

С живыми пользователями.

Так что да, это опять то самое «from MVP to production» — ставшее практически моим девизом на долгие годы.

Как и во всех таких проектах, ключевая задача заключалась в том чтобы быстро чинить и латать «все что падало» и быстро реализовывать «все обещанное».

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

Fake it till you make it — все по классике жанра.

Сидение в офисе до зари, кранчи, работа на выходных — все шло в комплекте. Однажды меня закрыли в офисе долбо#бы-охранники, думая что все давно ушли и выключив свет.

Но было весело.

Что касается технологий, то стек Java+Spring считался тогда самым дорогим и использовался в основном в банках, соответственно разработчики на Java (тем более опытные) стоили серьезных денег.

Но у компании было хорошее финансирование, так что она могла себе такое позволить.

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

Еще одной интересной особенностью было то что весь интерфейс пользователя был разработан дизайнером вручную начиная с мокапов в Adobe Photoshop.

Без учета мобильных устройств, резиновых версток, стандартных иконок и подобного.

И надо сказать, это был последний мой крупный проект разрабатываемый с таким подходом.

Форма заказа

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

Вот такая:

Тут смешались и особенности технологии JSF (сессионность) и неправильная оценка поведения пользователей и многократные переделки.

Именно после такого опыта я стал с большим уважением относиться к реализации корзины и механизмов оплаты — в них все сильно сложнее чем вам кажется.

Расчет стоимости доставки

Еще одним интересным функционалом, редким для 2012го года был расчет стоимости доставки в зависимости от расстояния:

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

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

Поиск банкоматов

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

Выглядело это примерно так:

Сам виджет был не очень сложным, но вот сбор и обновление данных для его работы стоили нам тогда очень большой крови.

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

Затем выяснилось что банкоматы регулярно перемещаются и актуальные данные об их местоположении не всегда есть даже у самих владельцев — бюрократия «as-is».

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

А еще было разделение функционала — не каждый банкомат тогда позволял операцию пополнения.

Плюс отсев дублей, поскольку никаких уникальных id у точек на карте конечно же не было.

Но результат на то время был хорош и виджет работал лучше и точнее чем страницы самих банков.

Интеграция с колл-центром

Еще одним интересным опытом была интеграция с ПО колл-центра на уровне интерфейса.

Посмотрите на скриншот:

Часть выделенная бежевым — наш сервис, все остальное — клиентское ПО коллцентра.

Интеграция производилась через WebView и на уровне интерфейса, для того чтобы оператору не нужно было что-то где-то отдельно открывать.

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

Дополнительные инструменты

За время работы над проектом, было создано несколько инструментов, которые затем неоднократно использовались и в других проектах.

Один из них это наш Пастер, ныне уже трижды переписан и выложен на Github.

Вот так выглядел его давний предок из 2012го года:

Как-то раз я заметил, что разработчики постоянно обмениваются рабочими файлами через публичные файлообменники, что было безусловно быстро и просто, но создавало определенные проблемы с безопасностью.

Проект был все же про работу с платежами и персональными данными

Поэтому на основе прежних разработок, был запущен проект "MegaShare":

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

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

По итогам этого опыта и неоднократных переделок и тестов, родилась наша «Телепорта» — как переосмысление подхода к решению для обмена файлами в команде.

Эпилог

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

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

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

Так это отличный жизненный урок для всех стартаперов:

самая крутая разработка это лишь 5% успеха, 95% — продажи и банальная удача.