Проект бонусной системы
Коль уж пошла волна ностальгии — рассказываю про еще один реализованный проект, из совсем уже далекого 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% — продажи и банальная удача.