будни

В стартапах есть понятие elevator pitch: абзац текста, которым можно «продать» свой проект потенциальному инвестору, пока едешь с ним вместе в лифте.

Вот, например, наш клиент — Вебиум. Онлайн курсы для подготовки к ЕГЭ. Ребята супер симпатичные, но Федя, в начале нашего сотрудничества, был настроен очень скептично — мол, придёт условный Яндекс и сожрет весь рынок с потрохами.

А недавно я съездил в Питер, пообщался с ребятами вживую и наконец сформулировал этот самый питч:

1. Остальные курсы выбирают в основном родители, вебиум у родителей просят купить сами подростки, опираясь на отзывы друзей.
2. У вебиума есть институт наставников, уникальный для рынка. Студенты-первокурсники, которые отучились в вебиуме и очень круто сдали ЕГЭ, помогают подготовиться следующему поколению. В прошлом году было больше 800 наставников (их подготовка и менеджмент — отдельная сложная задача). Конкурс на то, чтобы стать наставником больше, чем в лучшие университеты России.

Этот же питч я использую при собеседованиях, ведь программисты вкладывают своё время и таланты так же, как инвестор — деньги.

Если вам питч понравился, и вы фронтендер, руби-программист или дата-инженер — пишите мне в личку или на [email protected], у нас открыты вакансии.

P. S. Кстати, вебиум — первый наш клиент, которому мы помогли стать резидентом Сколково. Практически нулевые налоги на белую зарплату программистов — это, конечно, кайф.

Спасибо вам за поздравления и теплые слова. Я давно не чувствовал такой благодарности.

Уходить очень страшно. Я ценю вашу поддержку.

Отвечу на вопросы, которые мне задали много раз:

1. Что с каналом «запуск завтра»? Продолжаю вести. Расскажу, как передаю дела в Медузе. Увидите, как я принимаю новый проект, погружаюсь в игровой и блокчейн мир. Медиа-новости тоже будут.
2. Останусь ли в Риге? Да. Планирую каждые месяц-полтора летать в Москву.
3. Есть ли канал у Бори (нового техдира Медузы)? Пока нет. Как появится — дам ссылку обязательно.
4. Есть ли вакансии в RAWG? Скоро будут :)

Мы с Федей ищем аккаунт-менеджера и я собеседую ребят.

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

Есть знаменитый сервис calendly. Шутят, что социальный статус в IT-тусовке определяется тем, кто кому присылает ссылку на calendly для встречи. И причина не только в том, кто под кого подстраивается, но и в том, насколько неудобный это сервис. Он показывает «свободные дни», а при нажатии — список «часов и минут», когда есть «свободные слоты». Приходится сидеть с этим списком и сверять со своим собственным календарем в голове.

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

И такой сервис есть! Называется он SavvyCal. Почти два года назад его запустил Деррик Реймер. Я наткнулся на него случайно, воспользовался сервисом и мгновенно влюбился. В нем было всё что нужно и ничего лишнего. А ещё его делал единственный основатель-инженер и зарабатывал на этом хорошие деньги. Мечта. Как хардкорный ранний пользователь, я нашел пару багов, у нас с Дериком завязалась небольшая переписка, я фанат.

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

У меня на руках было 18 часов аудиозаписей, которые нужно было перевести в текст. Как расшифровать аудио в текст?

Можно заплатить профессионалам.

Можно самому всё слушать и печатать, это сложная и долгая работа.

Я решил скормить аудио дорожки машине и исправить трудные для алгоритма слова руками в специальном редакторе.

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

С поддержкой русского выбор немного сужается, но всё равно есть очень классные сервисы: HappyScribe, Trint, SimonSays, Sonix. Эти продукты отличаются моделью ценообразования и вниманием к деталям.

Эти сервисы не разрабывают алгоритмы распознавания речи. Я уверен, что они пользуются облачными API одного из крупных игроков — у гугла эта штука называется Google Cloud Speech-to-Text. Практические идентичные решения есть у Яндекса, Амазона и Microsoft.

По стоимости: расшифровка часа видеозвонка в гугле стоит 2.16$, у яндекса — 0.46$, а в Sonix — от 5 до 10$, остальные сервисы ещё дороже. Для сравнения, профессиональная расшифровка с русского — около 23$ за час.

Даже с крутым сервисом, работа заняла у меня больше 40 часов. Я сильно недооценил необходимый объем труда.

Кстати, у гугла есть вариант «поделиться своими аудиозаписями с гуглом для улучшения моделей распознавания». Тогда они дают скидку в 30% и берут за распознавания речи только 1.44$ в час.

Есть идея о том, что компании должны платить нам за наши данные. Это — первый известный мне пример реализации этой идеи на практике.

5 лет назад мы с Федей начали свое дело.

Начинали мы как два технических директора-консультанта и назвали компанию «Федя и Самат».

За 5 лет мы набрались опыта, собрали свою команду. Теперь мы автоматизируем бизнесы, проводим большие аудиты, (пере)запускаем сложные проекты; в компании уже больше 20 инженеров, архитекторов и менеджеров и называемся мы теперь более серьезно — «ФАНС разработка».

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

В честь праздника мы запускаем новый сайт, на котором будем потихоньку собирать кейсы и статьи. А еще там есть про то, как мы работаем и почти вся команда!

🎉 🥳

Наш клиент, сеть медицинских клиник Чайка ищет UX дизайнера. Главный IT-продукт Чайки — медицинская информационная система, в которой 600 врачей ведут лечение тысяч пациентов. Ещё у них есть сайт и мобильное приложение для пациентов.

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

Мы с Федей помогаем с технологиями, но дизайнер в Чайке всего один. Саша уже не справляется с нагрузкой и ищет себе партнера — крепкого мидла. Денег 180-230тр, удаленка. Подробная вакансия и инструкции — тут.

Как перезапустить проект технически?

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

Они пользуются уже третьей версией своей платформы. Фронтенд на low-code платформе Bubble, бэкенд частично на flask и частично n8n. Всё работает, приносит пользу, проект поднял больше миллиона долларов инвестиций.

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

Первый порыв любого программиста — переписать всё с нуля. Благо, проект ещё не очень большой, за месяца 3–4 парой программистов, наверное, можно управиться. Составить список фичей, написать их заново, потушить сервис на пару часов, импортировать данные из старой системы в новую и запуститься.

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

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

Правильный ход — это strangler fig pattern. Пишем небольшую обертку для старого бэкенда. Этот новый бэкенд действует как прокси — передает запросы к старому бэкенду, запоминая сами запросы и ответы. Дальше выделяем первые эндпоинты бэкенда, которые мы можем запрограммировать заново, красиво. Дублируем эти запросы пользователей в старый и новые движки. Сравниваем ответы нового движка с ответами старого, исправляем ошибки. Накапливаем информацию в новую, аккуратно составленную базу данных. И только после продолжительного тестирования на живых данных начинаем отдавать пользователю ответы нового бэкенда. Берем следующую пачку эндпоинтов и повторяем процесс.

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

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

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

К сожалению, кажется, что каждый молодой программист обречен пытаться всё переписать правильно с нуля. Технарь, предлагающий strangler fig pattern, не лучше, просто за его обучение уже заплатил другой заказчик.

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

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

Работа хорошая: руководство слышит и уважает разработку, код без легаси покрыт тестами и приносит пользу реальному бизнесу, есть опытный питонист-напарник. Коммуникация в основном асинхронная, можно работать по своему графику — конечно же удаленно, но при желании можно заходить в офис к ребятам в Питере. Есть и скучная работа вроде парсинга маркетплейсов в настроенной для этого инфраструктуре и интересная — по динамическому ценообразованию и автоматическому заказу. По деньгам — 120-220тр в месяц на руки в зависимости от производительности и опыта; 50тр тому, кто направит вас к нам.

Подробности здесь, пишите Феде на почту [email protected] или мне в личку.

Почти 4 месяца назад мы в Медузе запустили путеводители «Атлас» — 10 приложений-путеводителей на 3 платформах — Web, iOS, Android. Вот короткое описание, какие подводные камни мы собрали в процессе реализации проекта: https://dev.meduza.io/как-запустить-20-приложений-за-3-месяца-или-что-такое-атласы-bdb0515748d7