Этот цикл публикаций - своеобразная бэкстейдж-история, которая привела меня и мою команду к тому результату, который у нас получился - облачному сервису управления онлайн и офлайн торговлей Нативатор. По большому счету, это даже не история, а часть жизни длиной в 10 лет. Мы зарабатывали совершенно на других проектах чтобы сделать этот. Не привлекая инвестиций, на свои и заемные деньги, периодически на деньги клиентов. Ведь по частям он работал и обкатывался у наших клиентов все эти 10 лет. Вот так, иногда скачками, иногда медленно, он прирастал функционалом, становился мощнее, сильнее и в итоге собраный воедино, появился на свет 25 января 2023 года.
Hidden text
В нашем пока облаке нет еще самого главного, что мы запланировали - конфигуратора. По сути это облачная среда разработки прямо в браузере. В нем будет визуальное создание бэкенда. Что-то среднее между NoCode и LowCode. Такая своеобразная 1С на "облачно-мобильных максималках".
Как так получилось, что он работает сам на себе я расскажу в конце, а в начале то, что этому предшествовало. Первая предыстория, в которой я описал одну из причин уволиться и начать этот проект, находится здесь.
Первый опыт разработки мобильных приложений
Наши мобильные приложения Нативатор (Касса, Склад, Заказы и т.д.) - это важная и неотъемлемая часть сервиса. Для того чтобы было понятно, откуда возникают возможности создания новых продуктов, считаю будет полезным рассказать как мы получили первый опыт мобильной разработки. Все началось с того, что в 2007 году мы получили заказ разработать мобильное приложение для наладонников, тогда так назывались КПК - компактные персональные компьютеры. Это приложение должно было предназначаться для торговых представителей, которые ездили по магазинам и собирали заказы на продукты. У нашего заказчика уже было такое приложение для торговых представителей, написанное на C++ для наладонников Palm Pilot, но они постепенно выходили из строя и нигде не было запчастей и батарей для замены.
Чтобы получить заказ на такую разработку, нужно было всего самую малость: во первых, иметь клиента с описанной выше проблемой, а во вторых, чтобы этот клиент увидел на твоем рабочем столе желтую коробку «1С:Предприятие 8. Расширение для КПК». Иметь клиента с проблемой - это вообще большая удача. Ведь у вас появляется возможность эту проблему решить.
Мы сделали прототип, но на реальных данных он очень сильно тормозил. У этого оптовика на тот момент было всего около 400 SKU, но когда в форме подбора выводился список с остатками, все дико зависало. Сейчас в мобильных операционных системах это решается динамической подгрузкой списков. То есть, для того чтобы отобразить видимые на экране строки, нет необходимости получать данные по всем остальным. Поэтому большие списки прокручиваются сейчас быстро, да еще и с эффектом инерционности. Но в 2007 году об этом не знали, а мощности мобильного процессора не хватало, и нам пришлось выкручиваться созданием виртуальных групп, на которые мы разделили эти 400 товаров.
Позднее, руководитель проектного направления в Москве, узнав за сколько мы продали проект автоматизации торговых представителей, назвал нас альтруистами. Но даже для того, чтобы продать проект по такой невысокой по московским меркам цене, нужно быть подготовленным и уверенным что ты это сможешь сделать. Нам помогло наличие наладонника и установленной на нем платформы 1С для КПК для тестов.
За время жизни нашего мобильного приложения для Windows Mobile, мы продали всего чуть больше сотни дополнительных лицензий. Но история повторилась. Устройства с Windows Mobile в спешном порядке начали пропадать с рынка, который уже начали делить между собой iOS и подоспевший Android. Нам опять пришлось переписывать приложение для этого клиента, но уже под операционную систему Android.
Если уверен в себе, то увольняться легко
На момент разработки первого приложения для Android, в моей команде было два мобильных разработчика: Денис и Станислав. Если Денис был просто талантливый 20-летний студент, то Станислав уже был опытным разработчиком на Java ME. И за несколько месяцев до увольнения с нашей командой произошло два забавных момента.
В компании все знали, что у меня сильные мобильные разработчики. Ведь мы уже сделали несколько мобильных приложений, в том числе для торговых представителей. Но мы понимали, что нам нужны более подходящие инструменты разработки. Чтобы как-то удешевить себестоимость будущих проектов и тем самым ускорить разработку, а в итоге повысить их прибыльность, мы планировали сначала сделать свой собственный кросс-платформенный мобильный фреймворк, который упростит интеграцию с 1С. В этот раз мы не стали доверчиво останавливать свой выбор, на том, что предлагала 1С. Потому-что производительность и удобство мобильной платформы для Android и iOS от фирмы 1С, в 2012 году не выдерживала никакой критики.
Для того чтобы сделать свой фреймворк лучше чем был у 1С на тот момент (2012 год), нужно было взять таймаут минимум на 4-5 месяцев. Эти затраты нужно было обосновать, и для презентации своего мобильного фреймворка мы сделали прототип. Конечно в свободное от работы время. Как сделать прототип фреймворка чтобы он понравился руководству? Это же фреймворк, в нем нет UI. Для того чтобы создать хоть какой-то визуальный «вау-эффект», мы добавили в свой прототип мобильной платформы скриптовый язык Lua, и раскрасили мобильный редактор кода в такие же цвета как у конфигуратора 1С. Причем все это реально работало, а не было какой-то заглушкой.
Но наверное нужно было строить основную фишку презентацию на чем-то другом, так как этот прототип мобильной среды разработки не произвел ровно никакого эффекта. Некоторые руководители филиалов, которые имели опыт разработки, восхищались, но генеральный директор посчитал более выгодными затраты на открытие новых филиалов, а не на опережение фирмы 1С в мобильных технологиях.
Следующий момент, который укрепил мои мысли в сторону увольнения, был связан с очень известным в России производителем пива. Однажды прямо перед выходными мне позвонил руководитель центрального офиса Санкт-Петербурга, и попросил помощи моих мобильных разработчиков. У них в предпродажке был проект разработки мобильного приложения для этого очень крупного заказчика. Но с их единственным разработчиком что-то случилось. К понедельнику нужен был рабочий прототип мобильного приложения. Успех демонстрации приложения этому крутому заказчику был под угрозой.
Нам прислали исходники, и за два выходных дня мои программисты должны были собрать из них рабочее приложение для iOS, которое должно было хоть как-то работать. Нас мотивировало возможное участие в этом проекте, если демонстрация пройдет хорошо. Мои программисты отлично справились с задачей, презентация прошла успешно, но к участию в проекте нас не пригласили, так как я хотел для своих разработчиков осенью 2012 года целых 45 тысяч рублей в месяц.
Последним фактором, который держал меня в этой компании, был чисто юридический момент. Формально у меня была доля в своем филиале, но юридически это не было нигде закреплено. И я продолжал чувствовать потенциал команды, что с моими разработчиками и опытом продаж проектов, у нас получится добиться хороших результатов. Ведь если у меня это получилось в своем городе, то почему это не получится по всей России? Но для меня было важно иметь гарантии. Я был готов выложиться на 200%, готов был создавать продукты, которые долгое время будут приносить доход.
Внутри было такое чувство, что я хотел быть не наемным сотрудником, а полноценным партнером. В телефонном разговоре мой генеральный директор отказал мне в этой просьбе, и я не расстроился. Я был готов к увольнению, ведь Денис со Станиславом были в курсе всей ситуации и полны решительности уволиться вместе со мной. Что собственно мы сразу и сделали.
Я часто думал, что если бы мы находились в Москве, то рано или поздно мы бы нашли единомышленников, которые бы захотели вложиться в наши разработки. Но наша команда базировалась на юге, а в Москве я был редкими наездами. Поэтому находиться на виду у тех кто ищет, в какую команду вложиться, у нас не было возможностей и времени. Нам нужно было зарабатывать самим.
С чего начать свой новый софтверный бизнес?
Начинать надо или с проблемы, которую ты знаешь как решать, или просто отталкиваться от своего опыта. Если мой опыт помогает решать проблемы с мобильностью сотрудников, то все понятно: надо создавать мобильные приложения для бизнеса. Для того чтобы не было проблем с авторскими правами, я передал исходники мобильных приложений для Android своему преемнику, и сразу предупредил, что мы будем делать такое же новое мобильное приложение. Потому что я уже знал какие клиенты его могут купить.
Новый бизнес не успел окрепнуть, а уже начали появляться проблемы. Еще до увольнения у Станислава была выявлена нездоровая тяга к алкоголю, а у меня не было желания и возможности с этим бороться, поэтому нам пришлось расстаться. Сам я разрывался между желанием разрабатывать мобильные игры и приложения для бизнеса.
При увольнении мне выплатили остаток моей формальной доли в филиале. Это было соглашение, подробности которого я не могу раскрывать, по сути оно не имело юридической силы. И реальную долю в юрлице я не имел, но очень хотел.
Часть этих средств я потратил на создание небольшой игры. Мы опубликовали эту игру и даже начали чуть-чуть зарабатывать, но Игорю, разработчику этой игры, предложили хорошее место аналитика в Краснодарском офисе Магнита. Разработка игры принесла по факту только одни затраты, но был и плюс - я закрыл гештальт. Потому что разработка игр всегда казалась мне чем-то самым сложным, а именно сложные задачи привлекают меня больше всего.
Деньги заканчивались, и я занял у друга 300 тысяч рублей, чтобы оставаться на плаву. Хотя самым важным для меня был только Денис. После того, как мы со скрипом сдали первый проект заказчику, он переписал с чистого листа мобильное приложение для торговых представителей. Денис работал в спокойной обстановке, не подгоняемой сроками. Это позволило добавить в наше мобильное приложение для Android красивый и удобный интерфейс, почти такой же как в iOS. Такое приложение уже не было стыдно показывать новым клиентам, и я начал его продавать. Мы сделали сервер лицензирования, но существенная часть клиентов не хотела платить за приложение ежегодно, и нам приходилось продавать бессрочные лицензии. У этого варианта был единственный плюс, бессрочная лицензия стоила в два раза дороже.
В долгосрочном плане ежегодные лицензии конечно были выгоднее. Но клиенты смотрели и на свою выгоду тоже. Для того чтобы сходилась экономика приложения при ежемесячной оплате нужно было продавать очень много лицензий, а у меня это не получалось. Из-за этого мы постоянно были «на подсосе».
Нативатор Заказы - основа всех будущих мобильных приложений
Наше первое мобильное приложение (старое название - Нативи Заказы) синхронизировалось с 1С Управление торговлей. В него периодически выгружались актуальные остатки и цены. Обратно в 1С поступали заказы. Нельзя сказать что это приложение успешное в плане продаж, но им пользуются не только на юге, но и в Санкт Петербурге и Пензе.
Именно из каркаса этого мобильного приложения мы сделали новое приложение Нативатор Касса, которое поддерживает работу со всеми видами электронного торгового оборудования. А впоследствии, мы получили проект автоматизации большого склада для компании по импорту автомобильных запчастей. Примерно за пять месяцев мы сделали из Нативатор Касса приложение для сборки и комплектации заказов - Нативатор Склад.
Это мобильное приложение было предназначено для 10 кладовщиков, которые бегали по складу и комплектовали интернет-заказы. Они часто путали товар. Из-за этого менеджеры значительную часть времени занимались «вычерками». Мобильное приложение для склада должно было уменьшить количество ошибок, но в итоге оно полностью их устранило.
Нативатор - система управления онлайн и офлайн торговлей
Истории создания этих двух мобильных приложений, которые мы сделали на основе Нативатор Заказы, достойны отдельных публикаций. Но разрабатывая их, мы мечтали, что когда-то у нас будет собственное облако с учетной системой. Оно должно было полностью заменить программный продукт «Управление торговлей» от фирмы 1С. Сейчас, когда я пишу эти строки, на нем уже работает несколько клиентов, каждый день регистрируются люди, чтобы посмотреть на него изнутри. Но в то время это казалось очень далекой мечтой.
В нашем пока облаке нет еще самого главного, что мы запланировали - конфигуратора. По сути это облачная среда разработки прямо в браузере. В нем будет визуальное создание бэкенда. Что-то среднее между NoCode и LowCode. Такая своеобразная 1С на "облачно-мобильных максималках". Я уже писал об этом прототипе в предыдущей статье.
Мы очень старались запустить сервис как можно быстрее. Нами руководила заезженная фраза:
"Если вам не стыдно за первую версию вашего продукта, вы запустились слишком поздно".
Рид Хофман (LinkedIn)
Из-за этой фразы, которую мне повторяли многие коллеги и друзья, я постоянно нервничал и переживал, почему же у нас так долго не получается самое главное: интерфейс облака - центра всех наших мобильных приложений. Мало того, что я был на грани выгорания, точно также чувствовали себя почти все участники моей команды, в том числе и Денис, который к этому моменту стал уже полноценным партнером.
У нас очень долго не получался UI админки. Две его версии, на которые ушло более трех лет, впоследствии были выброшены на свалку, хотя из предпоследней мы недавно что-то дергали. А все потому, что фирма 1С сильно задрала нам планку. Я не хотел чтобы у нас получилось что-то заметно хуже. Меня устраивал лучший вариант, он должен быть быстрым, удобным и красивым. Ну по крайне мере не убогим. И только в третьей версии мы нашли то, что искали - свой вариант взаимодействия с пользователем, свой собственный UI.
Некоторые скажут, что он напоминает другие известные интерфейсы, но весь дьявол кроется в деталях. С какими ингредиентами и каких пропорциях у нас получился свой собственный рецепт UI сейчас можно уже смотреть не на прототипе, а на его первой рабочей версии.
Очень важным моментом в нашем UI является его удобство и скорость. У нас нет никакого "прогрева кэша", все формы работают как и должны - быстро. Неважно какой компьютер или даже планшет. Я не просто так упомянул планшет. Мы все делаем для мобильной работы. Поэтому в нашей системе учета онлайн и офлайн торговли можно обойтись без ПК. Ну работают же сейчас без офисов, а почему нельзя без ПК?
Забегая вперед, я расскажу одну важную деталь про Нативатор - он работает сам на себе. Каждая фишка, каждая функция, которую мы добавляем для себя, в так называемую «мастер—админку», сразу становится доступна клиентам. Или даже наоборот - мы работаем ровно на том, на чем работают наши клиенты. Не знаю, как так получилось, но подсознательно мы реализовали очень старый принцип Microsoft:
«Ешь еду своей собаки». «Eating our own Dogfood».
В оригинале это было так: в 1988, менеджер Microsoft Paul Maritz прислал тестировщику Brian Valentine письмо с темой «Eating our own Dogfood».
Смысл этой фразы конечно не в том, чтобы есть корм своей собаки. Смысл в том, что нужно честно пользоваться тем, что продаешь. Какой же ты к черту продавец Merсedes, если ездишь на Nissan?
Кроме мобильных приложений в нашем облаке есть интегрированный интернет-магазин, наличие которого позволяет сказать что у нас система управление не только офлайн торговлей, но и онлайн. А также в данный момент ведется работа по интеграции Нативатора с ведущими маркетплейсами.
Промежуточные выводы, сожаления и надежда
Никаких сожалений нет, а основная мысль, которую я хотел донести в этой статье - не бойтесь мечтать. И делайте каждый день минимум один шаг к вашей мечте. Звучит возможно как-то эмоционально розовенько. Но если убрать эту составляющую, то что другое может стать главным мотивирующим фактором, заставляющим нас создавать новые продукты? Конечно возможность хорошо заработать. И не только на продаже неисключительных лицензий, но и на продаже бизнеса целиком.
Каждый автор мечтает о том, чтобы его продуктом пользовалось как можно больше людей. Иногда для этого некоторые продают права на свой продукт. В своем старом мире, я мог бы продать свой бизнес только внутри той песочницы, которую построила 1С. Сейчас этих границ у меня нет. Также в Нативаторе нет ничего такого, чтобы ему помешало стать Worldwide решением. Но в текущей обстановке эти препятствия существуют. Я почему-то думаю, что эти препятствия преодолимы.
Это далеко не последняя история, и если интересно продолжение, в котором будет про мощную систему лояльности, автоматизацию логистики, склада, трагикомедия с открытием собственного интернет-магазина продуктов в 2015 году, и как мы будем интегрировать в нативатор нашу нейросеть Benzin - подписывайтесь. Буду рад обсуждению всех перспектив или их отсутствия, в моем телеграмм канале, в личных сообщениях и конечно здесь в комментариях.