Метка: рост

  • Local-First веб-приложения

    Local-First веб-приложения

    Пропал интернет и приложение перестало работать, потому что все данные оно получало с удалённого сервера. Сообщения не прочитать, документы не отредактировать, а таск-трекер сломался. Знакомая картина?

    Большинство веб-приложений остановит работу, но не все. Набирает популярность новая (или хорошо забытая старая) парадигма Local-First: веб-приложение всегда работает с локальной базой данных, а интернет нужен только для синхронизации.

    Подход внедряют у себя Linear, Miro, Trello, Figma, Notion, Excalidraw, Replit, Obsidian и растущее множество веб-приложений.

    Чтобы реализовать Local-First, разработчикам нужно решить ряд технических вопросов:
    – В какой локальной базе хранить данные?
    – Как приложение должно себя вести при отключении от интернета?
    – Как синхронизировать изменения без конфликта?

    Для всех этих ситуаций есть теоретическая база — структуры данных CRDT и алгоритмы синхронизации, написаны библиотеки для фронтэнда на React и Vue, разработаны базы данных.

    Выигрыши для пользователя:
    – Высокая отзывчивость интерфейса и моментальное сохранение изменений у пользователя.
    – Непрерывные сеансы работы в приложении — выше продуктивность.

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

  • Нужен ли консалтинг?

    Нужен ли консалтинг?

    Национальное бюро экономических исследований (США) опубликовало впечатляющее исследование влияния консалтинга на экономические показатели компаний.
    Исследователи взяли данные всех компаний Бельгии и B2B-платежей из всех секторов за 20 лет. Анализировали данные национального банка Бельгии и из открытых источников. Из исследования убрали “большую четвёрку” аудиторов, так как они в основном оптимизируют налоги.

    Интересные находки:
    – Консалтинг чаще всего заказывают лидеры рынка и отстающие компании. У слабых игроков эффект особенно заметен: наблюдается значительное улучшение после консалтинговых проектов.
    – В среднем новые клиенты тратят 3% ФОТ на консалтинг.
    – Средний консалтинговый проект длится менее года.
    – Рост достигается за счёт небольшого сокращения занятости при сохранении или росте выручки.
    – Прирост продуктивности труда в компаниях после консалтинга — 3,6%, сохраняется в течение 5 лет.
    – Зарплаты персонала растут на 2,7%.
    – В Индии и Мексике аналогичные исследования показали +17% и +27% прибавку к продуктивности, в отличие от Бельгии. Это стоит иметь в виду, проецируя исследования на российский рынок.
    – После консалтинга компании увеличивают закупки услуг на рынке, немного растёт количество увольнений (вследствие реструктуризаций), при этом уменьшаются расходы на аутсорсинг.

    Мои выводы:
    – Хотя исследование сфокусировано в основном на крупных игроков, его выводы можно применить на небольшие фирмы.
    – Исследование подтверждает, что в целом консультанты не дармоеды.
    – Консалтинговые проекты окупаются в течение года и приносят рост экономических показателей.
    – На основе этих данных нужно тратить хотя бы 3% ФОТ на консалтинг. При ФОТ 1 миллион в месяц это 360 тысяч в год.
    – Слабая компания просто обязана покупать консультации. Это поможет догнать лидеров.
    – Сильная компания должна покупать консультации, чтобы оставаться лидером.
    – Средние компании не обращаются к консультантам. Пока гром не грянет…
    – Консультации не должны совершать революции в процессе работы, скорее они про планомерное улучшение и эффективность работы.
    – У малых компаний ROI может быть выше, а эффект наступать быстрее.

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

  • Как начать торговлю онлайн

    Как начать торговлю онлайн

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

    Раньше (00-е):
    – Зарегистрировал ИП, отстояв очередь в налоговой.
    – Сходил в соседние здания в статистику и пенсионный и там тоже какие-то заявления сдал.
    – Купил бумажную книгу учёта доходов и расходов.
    – Сходил в банк, подписал кучу бумаги и передал образцы подписи.
    – Подписал договор с эквайрингом.
    – Бухгалтер — тётя Валя.
    – Рекламу купил переводом на карту, её просто разместили.
    – Принимаешь деньги.

    Прошло 20 лет:
    – Получил доступ к Госуслугам.
    – Выпустил электронную подпись.
    – Зарегистрировал ИП удалённо.
    – Открыл счёт в банке удалённо.
    – Завёл ЭДО.
    – Подписал договор с эквайрингом.
    – Подписал договор с ОФД и завёл онлайн-кассу.
    – Сервис для бухгалтерии или аутсорс, в облачную 1С приходится ходить.
    – Как, вы живёте без CRM? Так нельзя! Завёл CRM.
    – Зарегистрировался в Честном знаке.
    – Интегрировать всё это друг с другом.
    – Льём рекламу? Зарегистрируйте каждый креатив, получите идентификатор, отчитайтесь.

    Цифровизация улучшила то, что было и добавила нового. Но почему всё новое про контроль и отчётность? Вот и получается, что студентом я смог открыть интернет-магазин за 3 визита в разные места. А сейчас, чтобы продавать свистульки через интернет нужно пройти 7 кругов бюрократии, завести ассистента и несколько агентств. Что думаете про это?

  • Требования к продукту

    Требования к продукту

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

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

    Главная фишка PRD в том, что автор идеи сам отвечает на вопросы до того, как принесёт идею к партнёрам, инвесторам и участникам команды. Создание этого документа — фаза проработки идеи и глубокого осмысления своей задумки. 

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

    Мне нравится формат одностраничника — документ должен влезать на одну (две, три) распечатанную страницу. Более подробной спецификацией можно заниматься внутри производственных отделов на стадии реализации, а для верхнеуровневого обмена идеями хватит одного листа.

    Скачать документ можно в следующем посте с розыгрышем.

  • Как я стал ежедневно вести канал

    Как я стал ежедневно вести канал

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

    Наташа из Галеры мне написала “пора канал завести”, я и завёл. А дальше что? Мне просто хотелось писать. Появилось желание сделать формулировки чётче и доносить мысли до окружающих яснее. Было понимание, что таким образом я смогу улучшить свою речь. Но писать регулярно содержательные материалы казалось нереальным.

    Точно знаю, что мне помог челлендж Content Hero, к которому я присоединился как раз пять месяцев назад. Сейчас мы в небольшой группе принимаем участие в своеобразном литературном забеге. Каждый день нужно написать пост и публично отчитаться роботу, иначе штраф!

    Что я узнал о себе по ходу челленджа:

    • Я могу каждый день писать в канал.
    • Мне очень нравится писать — это огромное удовольствие!
    • Мне нравится придерживаться своего решения каждый день.
    • Мне есть о чём рассказать.
    • Вам интересно то, о чём я пишу.
    • Ответственность перед коллективом меня стимулирует больше, чем возможные штрафы.
    • Думал, что буду писать в канал про новое, а пока больше пишу про старое.

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

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

    Если хочется вести канал более ответственно — рекомендую присоединиться к Content Hero. Челендж не заканчивается, можно запрыгнуть в ближайший поток и попробовать писать каждый день.

  • Точность растёт с объёмом

    Точность растёт с объёмом

    Мы получили 647 посетителей, 105 лидов и 17 продаж.

    Как понять, можно ли доверять полученным конверсиям из посетителя в лида и из лида в продажу? Не рано ли делать прогнозы или уже можно принимать судьбоносные решения?

    Применяем математику на практике — вычисляем погрешность. Нам нужно, чтобы погрешность была менее +/-5 процентных пунктов.

    Наши переменные:
    – Объём выборки 647 посетителей.
    – Текущее значение конверсии, 105 лидов / 647 посетителей * 100% = 16.2%.
    – Вероятность ошибки — каков шанс, что мы ошибаемся? Классический уровень для первого расчёта — 5%. Если нужна повышенная увереность при работе с важными данными, можно поставить вероятность ошибки 1%.

    Спрашиваем GPT: Рассчитай точность определения конверсии для 105 лидов на 647 посетелей при вероятности ошибки 5%

    Получаем ответ: Погрешность +/-2.8 п.п..
    Т.е. реальная конверсия может лежать в пределах от 13.4% до 19.0%. С такой точностью можно строить прогнозы и принимать решения.

    Если рассчитать погрешность для продаж из начала поста, то получится погрешность +/-10 п.п. Широкий интервал, но границы диапазона уже можно увидеть. Нужно добрать лидов, чтобы сузить интервал и сделать более точные выводы.

    Простой лайфхак:
    В начале сбора данных точность очень быстро растёт, а потом рост точности замедляется. Посмотрите на график: в зависимости от конверсии, точность 95% мы получим на выборке от 139 до 323 случаев.
    Можно использовать это как ориентир:
    – после 300 посетилей можно заниматься оптимизацией посадочной.
    – после 300 лидов — садиться переписывать скрипты.

    Так что, 300 раз отмерь, один отрежь. И да простят меня математики.

  • Sentry для отлова ошибок

    Sentry для отлова ошибок

    Пользователи жалуются, что на сайте возникает ошибка. У разработчика “всё работает”. В команде разработки никто ошибку не может воспроизвести ни на одном устройстве. Бывает, что в логах нет ничего, потому что ошибка произошла на фронте. Или записи не информативны. А пользователи продолжают жаловаться…

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

    Это всё позволяет очень быстро найти реальную причину возникшей проблемы.

    Мы подключаем Sentry на фронт, это также просто, как установка обычного счётчика или npm-пакета. И подключаем отдельно на бэк — Sentry умеет интегрироваться с любым языком и фреймворком за счёт готовых SDK.

    Раньше мы пользовались SaaS-версией, но некоторое время назад всех РФ-пользователей попросили завершить обслуживание. Так что, я развернул бесплатную self-hosted версию на своей VDS. Система прожорливая, Docker Compose запускает три десятка контейнеров, поэтому требуется достаточно мощный сервер. Такой сервер у нас выходит на 4000 рублей в месяц, зато обслуживает десятки небольших проектов.

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

  • Тепловая карта скролла

    Тепловая карта скролла

    Запустили лендинг и пустили на него трафик. Чтобы понять, хороший ли у нас лендинг, нужно посмотреть на конверсию. Если конверсия низкая, важно понять, на каком этапе пользователь теряет интерес. Поможет нам в этом тепловая карта скроллинга по нашей странице. Она показывает, сколько времени люди провели в каждом блоке и как глубоко прокрутили страницу. Блоки должны терять температуру с глубиной скролла. Так же, как при погружении в океан: на поверхности вода тёплая, а на глубине холоднее.

    Чтобы карта показала правдивый результат, на страницу должно зайти больше 200 человек. Смотрим, где нарушен порядок: между жёлтым и оранжевым блоком будет находиться зелёный. Это означает, что люди проматывают этот блок.
    Простое решение: переставить блоки по убыванию температуры.
    Хорошее решение: переработать или заменить холодный блок, чтобы его не пролистывали.
    Исправление проблемного блока нагревает блоки ниже, потому что посетители продолжают скроллить и не закрывают лендинг.

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

    Карта скроллинга находится в Яндекс Метрике → Поведение → Карта скроллинга. Нужно включить Webvisor в настройках сайта и в коде счётчика.

  • Как победить стресс при перегрузке задачами

    Как победить стресс при перегрузке задачами

    Посмотрел советы бывшего шпиона ЦРУ о принятии решений в состоянии стресса. Захотелось поделиться со всеми, но видео на английском. Так что я сделал небольшой конспект.

    TL;DR: Когда завален задачами — делай самое простое следующее действие. Не пытайся решить всё сразу, освобождай пространство и возвращай контроль шаг за шагом. Практикуй эту технику, пока она не станет инстинктивным поведением в состоянии стресса.

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

    Правило “минус 2”: уменьшить количество одновременных задач. Подумай, сколько ты можешь задач затащить одновременно, и вычти две. Кажется, что ты можешь делать пять — вычти две и решай не более трёх задач одновременно. Это увеличивает количество твоих ресурсов на каждую задачу, а значит, ты их сделаешь лучше и быстрее.

    Прими, что ты уже перенасыщен задачами. Ты не сможешь сделать всё сразу, это уже факт. Отсортируй задачи по времени на их выполнение. Самые быстрые задачи должны оказаться сверху.

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

    Когда перегружен, рациональное мышление выключается. Возникают навязчивые и негативные мысли, которые производят “мусор в голове”. Ты начинаешь сомневаться в себе и своём успехе, готов сдаться. Фокус на действиях, даже небольших, возвращает рациональное мышление и позитив, прогоняет все эти мысли.

    Всё это работает потому, что так были устроены наши предки. Метод “делай следующую самую простую штуку” работал на их выживание, работает для нас и сейчас.

    Формируй привычку делать простое и быстрое в первую очередь, пока это не станет автоматизмом. Практикуй дома и на работе, в любой ситуации с перегрузкой задачами.

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

  • Я чайник!

    Я чайник!

    В 1990 году первым устройством, управляемым через интернет, стал тостер. А 1 апреля 1998 года был предложен шуточный стандарт RFC 2324 для управления кофе-машинами через HTTP-протокол.
    Браузер шлёт запрос на веб-сервер, а веб-сервер сообщает браузеру о своём состоянии кодом из трёх цифр. Для тех случаев, когда запрос на варку кофе получает чайник, был выделен специальный код статуса веб-сервера 418 — Я чайник. Он должен сообщить, что сервер не сможет сварить кофе, но вместо этого сервер сообщает, что он простой чайник. Ответ фактически правильный, но пользователю не помогает — ну, чайник, а мне что делать-то?

    Мы должны видеть страницу сайта или страницу с ошибкой и понятными инструкциями. Коды со статусом веб-сервера предназначены для программистов, сисадминов и SEOшников. Кодов более 60, с некоторыми из них вы наверняка сталкивались.
    404 — Страница не найдена. Самый известный код ответа. День вебмастера отмечается каждый год 4.04. Эти страницы часто оформляют веб-дизайнеры.
    301 — Документ переехал. Чаще всего этот статус появляется в результате работы SEOшника. Пользователя моментально перенаправляет на другой адрес.
    500 — Внутренняя ошибка сервера. Программист залил код с ошибками.
    502 — Шлюз недоступен. Позовите сисадмина.
    503 — Сервис недоступен. Позовите сисадмина и программиста.

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

    Однажды программисты научат серверы сообщать в случае ошибок, что этот сайт не сможет сварить вам кофе. Но это неточно.